merge
authorkoda
Thu, 09 Dec 2010 22:51:07 +0100
changeset 4497 08df377b4fbc
parent 4488 e83216eba1db (current diff)
parent 4496 ba5da3388110 (diff)
child 4498 8c9595e39539
merge
--- a/QTfrontend/game.cpp	Thu Dec 09 22:50:16 2010 +0100
+++ b/QTfrontend/game.cpp	Thu Dec 09 22:51:07 2010 +0100
@@ -78,7 +78,7 @@
     }
     HWProto::addStringToBuffer(buf, gt);
 
-    HWProto::addStringListToBuffer(buf, gamecfg->getFullConfig());
+    buf += gamecfg->getFullConfig();
 
     if (m_pTeamSelWidget)
     {
--- a/QTfrontend/gamecfgwidget.cpp	Thu Dec 09 22:50:16 2010 +0100
+++ b/QTfrontend/gamecfgwidget.cpp	Thu Dec 09 22:51:07 2010 +0100
@@ -30,6 +30,7 @@
 #include "igbox.h"
 #include "hwconsts.h"
 #include "ammoSchemeModel.h"
+#include "proto.h"
 
 GameCFGWidget::GameCFGWidget(QWidget* parent, bool externalControl) :
   QGroupBox(parent), mainLayout(this)
@@ -170,38 +171,64 @@
     return schemeData(26).toInt();
 }
 
-QStringList GameCFGWidget::getFullConfig() const
+QByteArray GameCFGWidget::getFullConfig() const
 {
-    QStringList sl;
-    sl.append("eseed " + pMapContainer->getCurrentSeed());
-    sl.append(QString("e$gmflags %1").arg(getGameFlags()));
-    sl.append(QString("e$damagepct %1").arg(schemeData(24).toInt()));
-    sl.append(QString("e$turntime %1").arg(schemeData(25).toInt() * 1000));
-    sl.append(QString("e$sd_turns %1").arg(schemeData(27).toInt()));
-    sl.append(QString("e$casefreq %1").arg(schemeData(28).toInt()));
-    sl.append(QString("e$minestime %1").arg(schemeData(29).toInt() * 1000));
-    sl.append(QString("e$minesnum %1").arg(schemeData(30).toInt()));
-    sl.append(QString("e$minedudpct %1").arg(schemeData(31).toInt()));
-    sl.append(QString("e$explosives %1").arg(schemeData(32).toInt()));
-    sl.append(QString("e$healthprob %1").arg(schemeData(33).toInt()));
-    sl.append(QString("e$hcaseamount %1").arg(schemeData(34).toInt()));
-    sl.append(QString("e$waterrise %1").arg(schemeData(35).toInt()));
-    sl.append(QString("e$healthdec %1").arg(schemeData(36).toInt()));
-    sl.append(QString("e$ropepct %1").arg(schemeData(37).toInt()));
-    sl.append(QString("e$template_filter %1").arg(pMapContainer->getTemplateFilter()));
-    sl.append(QString("e$mapgen %1").arg(pMapContainer->get_mapgen()));
-    sl.append(QString("e$maze_size %1").arg(pMapContainer->get_maze_size()));
+    QList<QByteArray> bcfg;
+    int mapgen = pMapContainer->get_mapgen();
+
+    bcfg << QString("eseed " + pMapContainer->getCurrentSeed()).toUtf8();
+    bcfg << QString("e$gmflags %1").arg(getGameFlags()).toUtf8();
+    bcfg << QString("e$damagepct %1").arg(schemeData(24).toInt()).toUtf8();
+    bcfg << QString("e$turntime %1").arg(schemeData(25).toInt() * 1000).toUtf8();
+    bcfg << QString("e$sd_turns %1").arg(schemeData(27).toInt()).toUtf8();
+    bcfg << QString("e$casefreq %1").arg(schemeData(28).toInt()).toUtf8();
+    bcfg << QString("e$minestime %1").arg(schemeData(29).toInt() * 1000).toUtf8();
+    bcfg << QString("e$minesnum %1").arg(schemeData(30).toInt()).toUtf8();
+    bcfg << QString("e$minedudpct %1").arg(schemeData(31).toInt()).toUtf8();
+    bcfg << QString("e$explosives %1").arg(schemeData(32).toInt()).toUtf8();
+    bcfg << QString("e$healthprob %1").arg(schemeData(33).toInt()).toUtf8();
+    bcfg << QString("e$hcaseamount %1").arg(schemeData(34).toInt()).toUtf8();
+    bcfg << QString("e$waterrise %1").arg(schemeData(35).toInt()).toUtf8();
+    bcfg << QString("e$healthdec %1").arg(schemeData(36).toInt()).toUtf8();
+    bcfg << QString("e$ropepct %1").arg(schemeData(37).toInt()).toUtf8();
+    bcfg << QString("e$template_filter %1").arg(pMapContainer->getTemplateFilter()).toUtf8();
+    bcfg << QString("e$mapgen %1").arg(mapgen).toUtf8();
+
+    switch (mapgen)
+    {
+        case MAPGEN_MAZE:
+            bcfg << QString("e$maze_size %1").arg(pMapContainer->get_maze_size()).toUtf8();
+
+        case MAPGEN_DRAWN:
+        {
+            QByteArray data = pMapContainer->getDrawnMapData();
+            while(data.size() > 0)
+            {
+                QByteArray tmp = data;
+                tmp.truncate(200);
+                tmp.prepend("edraw ");
+                bcfg << tmp;
+                data.remove(0, 200);
+            }
+        }
+        default: ;
+    }
 
     QString currentMap = pMapContainer->getCurrentMap();
     if (currentMap.size() > 0)
     {
-        sl.append("emap " + currentMap);
+        bcfg << QString("emap " + currentMap).toUtf8();
         if(pMapContainer->getCurrentIsMission())
-            sl.append(QString("escript Maps/%1/map.lua")
-                .arg(currentMap));
+            bcfg << QString("escript Maps/%1/map.lua").arg(currentMap).toUtf8();
     }
-    sl.append("etheme " + pMapContainer->getCurrentTheme());
-    return sl;
+    bcfg << QString("etheme " + pMapContainer->getCurrentTheme()).toUtf8();
+
+    QByteArray result;
+
+    foreach(QByteArray ba, bcfg)
+        HWProto::addByteArrayToBuffer(result, ba);
+
+    return result;
 }
 
 void GameCFGWidget::setNetAmmo(const QString& name, const QString& ammo)
--- a/QTfrontend/gamecfgwidget.h	Thu Dec 09 22:50:16 2010 +0100
+++ b/QTfrontend/gamecfgwidget.h	Thu Dec 09 22:51:07 2010 +0100
@@ -39,7 +39,7 @@
     GameCFGWidget(QWidget* parent, bool externalControl=false);
     quint32 getGameFlags() const;
     quint32 getInitHealth() const;
-    QStringList getFullConfig() const;
+    QByteArray getFullConfig() const;
     QComboBox * GameSchemes;
     QComboBox * WeaponsName;
     HWMapContainer* pMapContainer;
--- a/QTfrontend/hwmap.cpp	Thu Dec 09 22:50:16 2010 +0100
+++ b/QTfrontend/hwmap.cpp	Thu Dec 09 22:51:07 2010 +0100
@@ -27,12 +27,13 @@
 {
 }
 
-void HWMap::getImage(std::string seed, int filter, MapGenerator mapgen, int maze_size)
+void HWMap::getImage(std::string seed, int filter, MapGenerator mapgen, int maze_size, const QByteArray & drawMapData)
 {
     m_seed = seed;
     templateFilter = filter;
     m_mapgen = mapgen;
     m_maze_size = maze_size;
+    m_drawMapData = drawMapData;
     Start();
 }
 
@@ -62,6 +63,27 @@
     SendIPC(QString("eseed %1").arg(m_seed.c_str()).toLatin1());
     SendIPC(QString("e$template_filter %1").arg(templateFilter).toLatin1());
     SendIPC(QString("e$mapgen %1").arg(m_mapgen).toLatin1());
-    SendIPC(QString("e$maze_size %1").arg(m_maze_size).toLatin1());
+
+    switch (m_mapgen)
+    {
+        case MAPGEN_MAZE:
+            SendIPC(QString("e$maze_size %1").arg(m_maze_size).toLatin1());
+            break;
+
+        case MAPGEN_DRAWN:
+        {
+            QByteArray data = m_drawMapData;
+            while(data.size() > 0)
+            {
+                QByteArray tmp = data;
+                tmp.truncate(200);
+                SendIPC("edraw " + tmp);
+                data.remove(0, 200);
+            }
+            break;
+        }
+        default: ;
+    }
+
     SendIPC("!");
 }
--- a/QTfrontend/hwmap.h	Thu Dec 09 22:50:16 2010 +0100
+++ b/QTfrontend/hwmap.h	Thu Dec 09 22:51:07 2010 +0100
@@ -31,6 +31,7 @@
 {
     MAPGEN_REGULAR,
     MAPGEN_MAZE,
+    MAPGEN_DRAWN,
     MAPGEN_LAST
 };
 
@@ -41,7 +42,7 @@
  public:
   HWMap();
   virtual ~HWMap();
-  void getImage(std::string seed, int templateFilter, MapGenerator mapgen, int maze_size);
+  void getImage(std::string seed, int templateFilter, MapGenerator mapgen, int maze_size, const QByteArray & drawMapData);
 
  protected:
   virtual QStringList setArguments();
@@ -57,6 +58,7 @@
   int templateFilter;
   MapGenerator m_mapgen;
   int m_maze_size;
+  QByteArray m_drawMapData;
 
  private slots:
 };
--- a/QTfrontend/mapContainer.cpp	Thu Dec 09 22:50:16 2010 +0100
+++ b/QTfrontend/mapContainer.cpp	Thu Dec 09 22:51:07 2010 +0100
@@ -39,7 +39,9 @@
     mainLayout(this),
     pMap(0),
     mapgen(MAPGEN_REGULAR),
-    maze_size(0)
+    maze_size(0),
+    drawnMapData(QByteArray::fromBase64("BHoGw4IEegbjAgR6BuwCCnYEaIIJKwRIgglLBEgCCXgERAIJoQQ/AgnBBDsCCeUEMgIKCQQpAgopBCQCCk0ELQIKXwRIAgo/BE0CCiAEVgIJ+wRfAgnOBGgCCaoEbQIJfQRxAgldBHYCCTkEdgIJFARxAgj+BIgCCOwEqAIJEASsAgkwBJ8CCV0ElgIJhgSWAgmqBJYCCcoElgIJ7gSMAgoOBIwCCNAE2YII2QS1AgjsBJYCCPUEdgIJAgRWAgkQBDYCCScEIAIJSwQXAgl0BAkCCZgEAAIJuAP3AgncA/ICCgUD7gIKJAPlAgo/A/cCClYEDgIKbQQkAgqDBDsCCpoEUgIKrARbAghIBP6CCGgE/gIIjAT1AgixBOwCCNUE5wII9QTjAgkUBNkCCTkE0AIJWATHAgl4BMMCCZgEvgIJvAS1AgncBKwCCgAEowIKIASaAgo/BJECCl8EiAIKfwSDAgqfBHYCCscEbQIK5wRoAgr5BGQCCLUGcYIIzAaIAgjnBpoCCQcGrAIJKwa1AglUBroCCXgGvgIJmAa+Agm8Br4CCeAGvgIKAAa6AgogBrUCCj8GqAIKXwaWAgp6Bn8CCpEGaAIKnwZSAgotBZOCCjIFjwIJIgWTggk0BZwCCSsFmIIHYQeBggdhBNmCB2EFBwIHYQUrAgdhBUsCB2EFbwIHYQWqAgdhBc4CB2EF9wIHYQYgAgdhBlICB2EGegIHYQaaAgdhBswCB2EG/gIHYQcQAgZ/BimCBoMGKQIGfwaMggaDBrECBn8G1QIGfwb1AgZ/BwsCBbMFaoIFrgWKAgWqBa4CBaUF6QIFnAYSAgWYBjICBYoGbQIFfQaMAgV0BrUCBWoG3gIFagb+AgVhByICBWEHGQIEmgY2ggS+BkQCBOwGRAIFEAZEAgUwBj8CBVQGOwIFWAY7AgS1BUuCBLUFbwIErAWTAgSjBcECBJ8F+wIEkQYpAgSIBk0CBH8GegIEfwaoAgR6BrUC")
+    )
 {
     hhSmall.load(":/res/hh_small.png");
     hhLimit = 18;
@@ -70,6 +72,10 @@
 // FIXME - need real icons. Disabling until then
 //QIcon(":/res/mapMaze.png"), 
 QComboBox::tr("generated maze..."));
+
+    chooseMap->addItem(QComboBox::tr("hand drawn map..."));
+    chooseMap->insertSeparator(chooseMap->count()); // separator between generators and missions
+
     chooseMap->insertSeparator(chooseMap->count()); // separator between generators and missions
 
     int missionindex = chooseMap->count();
@@ -252,6 +258,18 @@
         emit mapgenChanged(mapgen);
         emit themeChanged(chooseMap->itemData(index).toList()[1].toString());
         break;
+    case MAPGEN_DRAWN:
+        mapgen = MAPGEN_DRAWN;
+        changeImage();
+        gbThemes->show();
+        lblFilter->hide();
+        CB_TemplateFilter->hide();
+        maze_size_label->hide();
+        maze_size_selection->hide();
+        emit mapChanged("+drawn+");
+        emit mapgenChanged(mapgen);
+        emit themeChanged(chooseMap->itemData(index).toList()[1].toString());
+        break;
     default:
         loadMap(index);
         gbThemes->hide();
@@ -308,24 +326,22 @@
     pMap = new HWMap();
     connect(pMap, SIGNAL(ImageReceived(const QImage)), this, SLOT(setImage(const QImage)));
     connect(pMap, SIGNAL(HHLimitReceived(int)), this, SLOT(setHHLimit(int)));
-    pMap->getImage(m_seed.toStdString(), getTemplateFilter(), mapgen, maze_size);
+    pMap->getImage(m_seed.toStdString(), getTemplateFilter(), mapgen, maze_size, drawnMapData);
 }
 
 void HWMapContainer::themeSelected(int currentRow)
 {
     QString theme = Themes->at(currentRow);
-    QList<QVariant> mapInfoRegular;
-    mapInfoRegular.push_back(QString("+rnd+"));
-    mapInfoRegular.push_back(theme);
-    mapInfoRegular.push_back(18);
-    mapInfoRegular.push_back(false);
-    chooseMap->setItemData(0, mapInfoRegular);
-    QList<QVariant> mapInfoMaze;
-    mapInfoMaze.push_back(QString("+maze+"));
-    mapInfoMaze.push_back(theme);
-    mapInfoMaze.push_back(18);
-    mapInfoMaze.push_back(false);
-    chooseMap->setItemData(1, mapInfoMaze);
+    QList<QVariant> mapInfo;
+    mapInfo.push_back(QString("+rnd+"));
+    mapInfo.push_back(theme);
+    mapInfo.push_back(18);
+    mapInfo.push_back(false);
+    chooseMap->setItemData(0, mapInfo);
+    mapInfo[0] = QString("+maze+");
+    chooseMap->setItemData(1, mapInfo);
+    mapInfo[0] = QString("+drawn+");
+    chooseMap->setItemData(2, mapInfo);
     gbThemes->setIcon(QIcon(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(theme)));
     emit themeChanged(theme);
 }
@@ -337,7 +353,7 @@
 
 QString HWMapContainer::getCurrentMap() const
 {
-    if(chooseMap->currentIndex() <= 1) return QString();
+    if(chooseMap->currentIndex() <= 2) return QString();
     return chooseMap->itemData(chooseMap->currentIndex()).toList()[0].toString();
 }
 
@@ -376,7 +392,7 @@
 
 void HWMapContainer::setMap(const QString & map)
 {
-    if(map == "+rnd+" || map == "+maze+")
+    if(map == "+rnd+" || map == "+maze+" || map == "+drawn+")
     {
         changeImage();
         return;
@@ -416,10 +432,11 @@
     {
     case MAPGEN_REGULAR:
     case MAPGEN_MAZE:
+    case MAPGEN_DRAWN:
         setRandomTheme();
         break;
     default:
-        if(chooseMap->currentIndex() < numMissions + 3)
+        if(chooseMap->currentIndex() < numMissions + 4)
             setRandomMission();
         else
             setRandomStatic();
@@ -489,3 +506,8 @@
     emit mapgenChanged(m);
     changeImage();
 }
+
+QByteArray HWMapContainer::getDrawnMapData()
+{
+    return drawnMapData;
+}
\ No newline at end of file
--- a/QTfrontend/mapContainer.h	Thu Dec 09 22:50:16 2010 +0100
+++ b/QTfrontend/mapContainer.h	Thu Dec 09 22:51:07 2010 +0100
@@ -23,6 +23,7 @@
 #include <QGridLayout>
 #include <QComboBox>
 #include <QLabel>
+#include <QByteArray>
 
 #include "hwmap.h"
 
@@ -48,6 +49,7 @@
   MapGenerator get_mapgen(void) const;
   int get_maze_size(void) const;
   bool getCurrentIsMission() const;
+  QByteArray getDrawnMapData();
 
  public slots:
   void changeImage();
@@ -98,6 +100,7 @@
   QLabel *maze_size_label;
   QComboBox *maze_size_selection;
   MapGenerator mapgen;
+  QByteArray drawnMapData;
   int numMissions;
   int maze_size;
 
--- a/QTfrontend/proto.cpp	Thu Dec 09 22:50:16 2010 +0100
+++ b/QTfrontend/proto.cpp	Thu Dec 09 22:51:07 2010 +0100
@@ -23,14 +23,19 @@
 
 }
 
+QByteArray & HWProto::addByteArrayToBuffer(QByteArray & buf, const QByteArray & msg)
+{
+    QByteArray bmsg = msg;
+    bmsg = bmsg.left(250);
+    quint8 sz = bmsg.size();
+    buf.append(QByteArray((char *)&sz, 1));
+    buf.append(bmsg);
+    return buf;
+}
+
 QByteArray & HWProto::addStringToBuffer(QByteArray & buf, const QString & string)
 {
-    QByteArray strmsg = string.toUtf8();
-    strmsg = strmsg.left(250);
-    quint8 sz = strmsg.size();
-    buf.append(QByteArray((char *)&sz, 1));
-    buf.append(strmsg);
-    return buf;
+    return addByteArrayToBuffer(buf, string.toUtf8());
 }
 
 QByteArray & HWProto::addStringListToBuffer(QByteArray & buf, const QStringList & strList)
--- a/QTfrontend/proto.h	Thu Dec 09 22:50:16 2010 +0100
+++ b/QTfrontend/proto.h	Thu Dec 09 22:51:07 2010 +0100
@@ -31,6 +31,7 @@
 public:
     HWProto();
     static QByteArray & addStringToBuffer(QByteArray & buf, const QString & string);
+    static QByteArray & addByteArrayToBuffer(QByteArray & buf, const QByteArray & msg);
     static QByteArray & addStringListToBuffer(QByteArray & buf, const QStringList & strList);
     static QString formatChatMsg(const QString & nick, const QString & msg);
 };
--- a/hedgewars/hwengine.pas	Thu Dec 09 22:50:16 2010 +0100
+++ b/hedgewars/hwengine.pas	Thu Dec 09 22:51:07 2010 +0100
@@ -31,7 +31,7 @@
 
 uses SDLh, uMisc, uConsole, uGame, uConsts, uLand, uAmmos, uVisualGears, uGears, uStore, uWorld, uKeys, uSound,
      uScript, uTeams, uStats, uIO, uLocale, uChat, uAI, uAIMisc, uRandom, uLandTexture, uCollisions, uMobile,
-     sysutils, uTypes, uVariables, uCommands, uUtils, uCaptions, uDebug, uCommandHandlers;
+     sysutils, uTypes, uVariables, uCommands, uUtils, uCaptions, uDebug, uCommandHandlers, uLandPainted;
 
 {$IFDEF HWLIBRARY}
 procedure initEverything(complete:boolean);
@@ -323,6 +323,8 @@
     uCommandHandlers.initModule;
 
     uLand.initModule;
+    uLandPainted.initModule;
+
     uIO.initModule;
 
     if complete then
--- a/hedgewars/uGears.pas	Thu Dec 09 22:50:16 2010 +0100
+++ b/hedgewars/uGears.pas	Thu Dec 09 22:51:07 2010 +0100
@@ -688,7 +688,7 @@
             end;
         Gear^.doStep(Gear);
         // might be useful later
-        //ScriptCall('OnGearStep', Gear^.uid);
+        //ScriptCall('onGearStep', Gear^.uid);
         end
     end;
 
@@ -972,7 +972,7 @@
         end;
     end;
     inc(Gear^.Damage, Damage);
-    ScriptCall('OnGearDamage', Gear^.UID, Damage);
+    ScriptCall('onGearDamage', Gear^.UID, Damage);
 end;
 
 procedure SetAllToActive;
--- a/hedgewars/uLand.pas	Thu Dec 09 22:50:16 2010 +0100
+++ b/hedgewars/uLand.pas	Thu Dec 09 22:51:07 2010 +0100
@@ -549,6 +549,19 @@
         end;
 end;
 
+procedure GenDrawnMap;
+begin
+    uLandPainted.Draw;
+
+    MaxHedgehogs:= 18;
+    hasGirders:= true;
+    playHeight:= 2048;
+    playWidth:= 4096;
+    leftX:= ((LAND_WIDTH - playWidth) div 2);
+    rightX:= (playWidth + ((LAND_WIDTH - playWidth) div 2)) - 1;
+    topY:= LAND_HEIGHT - playHeight;
+end;
+
 function SelectTemplate: LongInt;
 begin
     if (cReducedQuality and rqLowRes) <> 0 then
@@ -1031,6 +1044,7 @@
     case cMapGen of
         0: GenBlank(EdgeTemplates[SelectTemplate]);
         1: GenMaze;
+        2: GenDrawnMap;
     end;
     AddProgress();
 
@@ -1271,6 +1285,7 @@
     case cMapGen of
         0: GenBlank(EdgeTemplates[SelectTemplate]);
         1: GenMaze;
+        2: GenDrawnMap;
     end;
 
     lh:= LAND_HEIGHT div 128;
--- a/hedgewars/uLandPainted.pas	Thu Dec 09 22:50:16 2010 +0100
+++ b/hedgewars/uLandPainted.pas	Thu Dec 09 22:51:07 2010 +0100
@@ -23,15 +23,26 @@
 interface
 
 procedure LoadFromFile(fileName: shortstring);
+procedure Draw;
+procedure initModule;
 
 implementation
-uses uLandGraphics, uConsts, uUtils, SDLh;
+uses uLandGraphics, uConsts, uUtils, SDLh, uCommands;
 
 type PointRec = packed record
     X, Y: SmallInt;
     flags: byte;
     end;
 
+type
+    PPointEntry = ^PointEntry;
+    PointEntry = record
+        point: PointRec;
+        next: PPointEntry;
+        end;
+
+var pointsListHead, pointsListLast: PPointEntry;
+
 procedure DrawLineOnLand(X1, Y1, X2, Y2: LongInt);
 var  eX, eY, dX, dY: LongInt;
     i, sX, sY, x, y, d: LongInt;
@@ -123,4 +134,59 @@
     closeFile(f);
 end;
 
+procedure chDraw(var s: shortstring);
+var rec: PointRec;
+    prec: ^PointRec;
+    pe: PPointEntry;
+    i, l: byte;
+begin
+    i:= 1;
+    l:= length(s);
+    while i < l do
+        begin
+        prec:= @s[i];
+        rec:= prec^;
+        rec.X:= SDLNet_Read16(@rec.X);
+        rec.Y:= SDLNet_Read16(@rec.Y);
+
+        pe:= new(PPointEntry);
+        if pointsListLast = nil then
+            pointsListHead:= pe
+        else
+            pointsListLast^.next:= pe;
+        pointsListLast:= pe;
+
+        pe^.point:= rec;
+        pe^.next:= nil;
+
+        inc(i, 5)
+        end;
+end;
+
+procedure Draw;
+var pe: PPointEntry;
+    prevPoint: PointRec;
+begin
+    pe:= pointsListHead;
+
+    while(pe <> nil) do
+        begin
+        if (pe^.point.flags and $80 <> 0) then
+            FillRoundInLand(pe^.point.X, pe^.point.Y, 34, lfBasic)
+            else
+            DrawLineOnLand(prevPoint.X, prevPoint.Y, pe^.point.X, pe^.point.Y);
+
+        prevPoint:= pe^.point;
+        pe:= pe^.next;
+        end;
+end;
+
+procedure initModule;
+begin
+    pointsListHead:= nil;
+    pointsListLast:= nil;
+
+    RegisterVariable('draw', vtCommand, @chDraw, false);
+end;
+
 end.
--- a/hedgewars/uScript.pas	Thu Dec 09 22:50:16 2010 +0100
+++ b/hedgewars/uScript.pas	Thu Dec 09 22:51:07 2010 +0100
@@ -456,6 +456,20 @@
     lc_gethoglevel := 1;
 end;
 
+function lc_sethoglevel(L : Plua_State) : LongInt; Cdecl;
+var gear : PGear;
+begin
+    if lua_gettop(L) <> 2 then
+        LuaError('Lua: Wrong number of parameters passed to SetHogLevel!')
+    else
+        begin
+        gear:= GearByUID(lua_tointeger(L, 1));
+        if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then
+            gear^.Hedgehog^.BotLevel:= lua_tointeger(L, 2);
+        end;
+    lc_sethoglevel:= 0
+end;
+
 function lc_gethogclan(L : Plua_State) : LongInt; Cdecl;
 var gear : PGear;
 begin
@@ -1385,6 +1399,7 @@
 lua_register(luaState, 'GetHogTeamName', @lc_gethogteamname);
 lua_register(luaState, 'GetHogName', @lc_gethogname);
 lua_register(luaState, 'GetHogLevel', @lc_gethoglevel);
+lua_register(luaState, 'SetHogLevel', @lc_sethoglevel);
 lua_register(luaState, 'GetX', @lc_getx);
 lua_register(luaState, 'GetY', @lc_gety);
 lua_register(luaState, 'CopyPV', @lc_copypv);
Binary file share/hedgewars/Data/Forts/Cake-preview@2x.png has changed
Binary file share/hedgewars/Data/Forts/Castle-preview@2x.png has changed
Binary file share/hedgewars/Data/Forts/Earth-preview@2x.png has changed
Binary file share/hedgewars/Data/Forts/EvilChicken-preview@2x.png has changed
Binary file share/hedgewars/Data/Forts/Flowerhog-preview@2x.png has changed
Binary file share/hedgewars/Data/Forts/Hydrant-preview@2x.png has changed
Binary file share/hedgewars/Data/Forts/Lego-preview@2x.png has changed
Binary file share/hedgewars/Data/Forts/Plane-preview@2x.png has changed
Binary file share/hedgewars/Data/Forts/Statue-preview@2x.png has changed
Binary file share/hedgewars/Data/Forts/Tank-preview@2x.png has changed
Binary file share/hedgewars/Data/Forts/UFO-preview@2x.png has changed
Binary file share/hedgewars/Data/Forts/Wood-preview@2x.png has changed
--- a/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts	Thu Dec 09 22:50:16 2010 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts	Thu Dec 09 22:51:07 2010 +0100
@@ -5,7 +5,7 @@
     <name>AmmoSchemeModel</name>
     <message>
         <source>new</source>
-        <translation>新</translation>
+        <translation>新建</translation>
     </message>
 </context>
 <context>
@@ -41,7 +41,7 @@
     </message>
     <message>
         <source>When this option is enabled selecting a game scheme will auto-select a weapon</source>
-        <translation type="unfinished"></translation>
+        <translation>使用此项则游戏框架自动选择武器配备</translation>
     </message>
 </context>
 <context>
@@ -91,17 +91,17 @@
     </message>
     <message>
         <source>DefaultTeam</source>
-        <translation>默认团队</translation>
+        <translation>默认队伍</translation>
     </message>
     <message>
         <source>Hedgewars Demo File</source>
         <comment>File Types</comment>
-        <translation>刺猬杀演示文件</translation>
+        <translation>刺猬大作战回放文件</translation>
     </message>
     <message>
         <source>Hedgewars Save File</source>
         <comment>File Types</comment>
-        <translation>刺猬杀存储文件</translation>
+        <translation>刺猬大作战存档文件</translation>
     </message>
 </context>
 <context>
@@ -151,7 +151,7 @@
     </message>
     <message>
         <source>Wacky</source>
-        <translation>曲折</translation>
+        <translation>险峻</translation>
     </message>
     <message>
         <source>Type</source>
@@ -159,34 +159,34 @@
     </message>
     <message>
         <source>Small tunnels</source>
-        <translation>小型洞窟</translation>
+        <translation>小型隧道</translation>
     </message>
     <message>
         <source>Medium tunnels</source>
-        <translation>中型洞窟</translation>
+        <translation>中型隧道</translation>
     </message>
     <message>
         <source>Large tunnels</source>
-        <translation>大型洞窟</translation>
+        <translation>大型隧道</translation>
     </message>
     <message>
         <source>Small floating islands</source>
-        <translation>小型浮动岛屿</translation>
+        <translation>小型漂浮岛屿</translation>
     </message>
     <message>
         <source>Medium floating islands</source>
-        <translation>重型浮动岛屿</translation>
+        <translation>中型漂浮岛屿</translation>
     </message>
     <message>
         <source>Large floating islands</source>
-        <translation>大型浮动岛屿</translation>
+        <translation>大型漂浮岛屿</translation>
     </message>
 </context>
 <context>
     <name>HWNetServersModel</name>
     <message>
         <source>Title</source>
-        <translation>标题</translation>
+        <translation>名称</translation>
     </message>
     <message>
         <source>IP</source>
@@ -201,7 +201,7 @@
     <name>HWNewNet</name>
     <message>
         <source>The host was not found. Please check the host name and port settings.</source>
-        <translation>没有这个主机。请检查主机名和端口设置。</translation>
+        <translation>没找到主机。请检查主机名和端口设置。</translation>
     </message>
     <message>
         <source>Connection refused</source>
@@ -209,7 +209,7 @@
     </message>
     <message>
         <source>Quit reason: </source>
-        <translation>退出原因:  </translation>
+        <translation>退出原因:</translation>
     </message>
     <message>
         <source>Room destroyed</source>
@@ -235,19 +235,19 @@
     </message>
     <message>
         <source>%1 *** %2 has joined the room</source>
-        <translation>%1 *** %2已经进入房间</translation>
+        <translation>%1 *** %2 进入这个房间了</translation>
     </message>
     <message>
         <source>%1 *** %2 has joined</source>
-        <translation>%1 *** %2已经进入</translation>
+        <translation>%1 *** %2 加入了</translation>
     </message>
     <message>
         <source>%1 *** %2 has left (%3)</source>
-        <translation>%1 *** %2已经离开(%3)</translation>
+        <translation>%1 *** %2 离开了(%3)</translation>
     </message>
     <message>
         <source>%1 *** %2 has left</source>
-        <translation>%1 *** %2已经离开</translation>
+        <translation>%1 *** %2 离开了</translation>
     </message>
     <message>
         <source>Your nickname %1 is
@@ -264,7 +264,7 @@
     <name>KB</name>
     <message>
         <source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It&apos;s recommended to update your freetype lib.</source>
-        <translation>SDL_ttf 返回错误-渲染文字失败,可能有关freetype2的bug。建议升级 freetype。</translation>
+        <translation>渲染文字时SDL_ttf 返回错误,可能有关freetype2的bug。建议升级 freetype。</translation>
     </message>
 </context>
 <context>
@@ -287,11 +287,11 @@
     </message>
     <message>
         <source>Server message for latest version:</source>
-        <translation>最新版本的服务器信息:  </translation>
+        <translation>最新版本的服务器信息</translation>
     </message>
     <message>
         <source>Server message for previous versions:</source>
-        <translation>之前版本的服务器信息:  </translation>
+        <translation>之前版本的服务器信息</translation>
     </message>
     <message>
         <source>Latest version protocol number:</source>
@@ -348,54 +348,54 @@
     </message>
     <message>
         <source>Health graph</source>
-        <translation>生命值图表</translation>
+        <translation>健康值图形</translation>
     </message>
     <message>
         <source>Ranking</source>
-        <translation>等级</translation>
+        <translation>排名</translation>
     </message>
     <message>
         <source>The best shot award was won by &lt;b&gt;%1&lt;/b&gt; with &lt;b&gt;%2&lt;/b&gt; pts.</source>
-        <translation>最佳射手奖给与 &lt;b&gt;%1&lt;/b&gt;:伤害 &lt;b&gt;%2&lt;/b&gt;点。&lt;/p&gt;</translation>
+        <translation>最佳射手&lt;b&gt;%1&lt;/b&gt;为同族制造了&lt;b&gt;%2&lt;/b&gt;点创伤</translation>
     </message>
     <message numerus="yes">
         <source>The best killer is &lt;b&gt;%1&lt;/b&gt; with &lt;b&gt;%2&lt;/b&gt; kills in a turn.</source>
         <translation>
-            <numerusform>最佳杀手是 &lt;b&gt;%1&lt;/b&gt;单回合击杀 &lt;b&gt;%2&lt;/b&gt; 只刺猬.</numerusform>
+            <numerusform>最佳杀手&lt;b&gt;%1&lt;/b&gt; 完成了单回合&lt;b&gt;%2&lt;/b&gt;次击杀</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>A total of &lt;b&gt;%1&lt;/b&gt; hedgehog(s) were killed during this round.</source>
         <translation>
-            <numerusform>本轮总共有 &lt;b&gt;%1&lt;/b&gt; 只刺猬被击杀.&lt;/p&gt;</numerusform>
+            <numerusform>总共&lt;b&gt;%1&lt;/b&gt;只刺猬在本轮失去生命。</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>(%1 kill)</source>
-        <translation type="unfinished">
-            <numerusform>(%1 灭杀)</numerusform>
+        <translation>
+            <numerusform>(%1 击杀)</numerusform>
         </translation>
     </message>
     <message>
         <source>(%1 kills)</source>
-        <translation type="obsolete">(%1 灭杀)</translation>
+        <translation type="obsolete">(%1 击杀)</translation>
     </message>
     <message numerus="yes">
         <source>&lt;b&gt;%1&lt;/b&gt; thought it&apos;s good to shoot his own hedgehogs with &lt;b&gt;%2&lt;/b&gt; pts.</source>
-        <translation type="unfinished">
-            <numerusform>&lt;b&gt;%1&lt;/b&gt;另外,射击己方刺猬损失&lt;b&gt;%2&lt;/b&gt;点血。</numerusform>
+        <translation>
+            <numerusform>&lt;b&gt;%1&lt;/b&gt;以为给自己的刺猬造成 &lt;b&gt;%2&lt;/b&gt; 点创伤是小意思。</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>&lt;b&gt;%1&lt;/b&gt; killed &lt;b&gt;%2&lt;/b&gt; of his own hedgehogs.</source>
-        <translation type="unfinished">
-            <numerusform>&lt;b&gt;%1&lt;/b&gt;个刺猬被&lt;b&gt;%2&lt;/b&gt;己方的刺猬误伤.</numerusform>
+        <translation>
+            <numerusform>&lt;b&gt;%1&lt;/b&gt; 整垮了 &lt;b&gt;%2&lt;/b&gt; 只自己的刺猬。</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>&lt;b&gt;%1&lt;/b&gt; was scared and skipped turn &lt;b&gt;%2&lt;/b&gt; times.</source>
-        <translation type="unfinished">
-            <numerusform>&lt;b&gt;%1&lt;/b&gt;被迫跳过&lt;b&gt;%2&lt;/b&gt;回合。</numerusform>
+        <translation>
+            <numerusform>&lt;b&gt;%1&lt;/b&gt; 受惊了,共计 &lt;b&gt;%2&lt;/b&gt; 次放弃。</numerusform>
         </translation>
     </message>
 </context>
@@ -422,62 +422,62 @@
     <message>
         <source>If you&apos;re unsure what to do and don&apos;t want to waste ammo, skip one round. But don&apos;t let too much time pass as there will be Sudden Death!</source>
         <comment>Tips</comment>
-        <translation>如果不确定该怎么做,不要浪费弹药,跳过此回合。但是注意突然死亡的时间!</translation>
+        <translation>加入不确定怎么做,不要浪费弹药,跳过此回合。但是注意突然时间!</translation>
     </message>
     <message>
         <source>Want to save ropse? Release the rope in mid air and then shoot again. As long as you don&apos;t touch the ground you&apos;ll reuse your rope without wasting ammo!</source>
         <comment>Tips</comment>
-        <translation type="obsolete">想节省绳子数量?在半空释放然后再次射出。只要不触地即可继续使用同一根而不浪费!</translation>
+        <translation type="obsolete">保存绳子?在半空释放然后再次射出。只要不接触地面停止就可以继续使用同一根不会浪费!</translation>
     </message>
     <message>
         <source>If you&apos;d like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.</source>
         <comment>Tips</comment>
-        <translation>如果您让自己的昵称不被别人使用,请到  http://www.hedgewars.org/. 注册一个帐号吧.</translation>
+        <translation>如果您确定好了一个昵称不想让别人使用,那么在  http://www.hedgewars.org/. 注册一个帐号吧</translation>
     </message>
     <message>
         <source>You&apos;re bored of default gameplay? Try one of the missions - they&apos;ll offer different gameplay depending on the one you picked.</source>
         <comment>Tips</comment>
-        <translation>厌倦了默认的游戏?试试做任务吧——多种游戏模式让你无限选择.</translation>
+        <translation>厌倦了默认的玩法?试试任务——</translation>
     </message>
     <message>
         <source>By default the game will always record the last game played as a demo. Select &apos;Local Game&apos; and pick the &apos;Demos&apos; button on the lower right corner to play or manage them.</source>
         <comment>Tips</comment>
-        <translation>默认时记录中最后的一次被称做Demo,选择单机游戏——然后选Demo——然后点击右下角开始回放或整理。</translation>
+        <translation>默认情况下游戏记录最后的游戏作为Demo,选择单机游戏——然后Demo——然后点击右下角开始回放或者整理。</translation>
     </message>
     <message>
         <source>Hedgewars is Open Source and Freeware we create in our spare time. If you&apos;ve got problems, ask on our forums but please don&apos;t expect 24/7 support!</source>
         <comment>Tips</comment>
-        <translation>“刺猬杀”是一个开源的免费软件,它充分利用了我们的业余时间。如果您有问题,到论坛来吧,不过不要期待全天候支持!</translation>
+        <translation>刺猬大作战是一个开放源代码的免费软件,它充分利用了我们的业余时间。如果您有问题,到论坛来吧,不过7×24小时支持不可能!</translation>
     </message>
     <message>
         <source>Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!</source>
         <comment>Tips</comment>
-        <translation>“刺猬杀”是一个开源的免费软件,它充分利用了我们的业余时间。如果您你喜欢它就来贡献你的力量吧!</translation>
+        <translation>刺猬大作战是一个开放源代码的免费软件,它充分利用了我们的业余时间。如果您喜欢它,我们接受您的捐赠/感谢!</translation>
     </message>
     <message>
         <source>Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like!</source>
         <comment>Tips</comment>
-        <translation>“刺猬杀”是一个开源的免费软件,它充分利用了我们的业余时间。如果您你喜欢它,与别人分享吧!</translation>
+        <translation>刺猬大作战是一个开放源代码的免费软件,它充分利用了我们的业余时间。与他人分享它吧!</translation>
     </message>
     <message>
         <source>From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance.</source>
         <comment>Tips</comment>
-        <translation>官方一直就有不断的对战,随时可以去  http://www.hedgewars.org/  参加。</translation>
+        <translation>官方的竞赛一直存在。临近时去  http://www.hedgewars.org/  即可看到。</translation>
     </message>
     <message>
         <source>Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us!</source>
         <comment>Tips</comment>
-        <translation>Hedgewars 被翻译成多种语言,中文是“刺猬杀”——同样为翻译名。如果您觉得语言翻译有什么缺失/过时/遗漏或任何问题,请联系我们吧!</translation>
+        <translation>Hedgewars 被翻译成多种语言,中文是刺猬大作战——同样为翻译名。如果您的语言翻译有什么缺失/过时/遗漏或任何问题,来联系我们吧!</translation>
     </message>
     <message>
         <source>Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux.</source>
         <comment>Tips</comment>
-        <translation>“刺猬杀”是一款跨平台游戏,可以运行的操作系统包括:GNU/Linux、Mac OS X、MicroSoft Windows、iOS等。</translation>
+        <translation>刺猬大作战可以运行的操作系统包括:GNU/Linux、Mac OS X、MicroSoft Windows。</translation>
     </message>
     <message>
         <source>Always remember you&apos;re able to set up your own games in local and network/online play. You&apos;re not restricted to the &apos;Simple Game&apos; option.</source>
         <comment>Tips</comment>
-        <translation>您可以建立自己的网络游戏/局域网游戏。不仅限于 &quot;简单游戏&quot; 模式。</translation>
+        <translation>您可以建立自己的网络游戏/局域网游戏。不仅限于 &quot;简单游戏&quot; 选项。</translation>
     </message>
     <message>
         <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source>
@@ -492,42 +492,42 @@
     <message>
         <source>If your graphics card isn&apos;t able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance.</source>
         <comment>Tips</comment>
-        <translation>假如你的显卡不能提供OpenGL硬件加速,试着用降低效果的方式运行。</translation>
+        <translation>假如你的显卡不能提供OpenGL硬件加速,试着用降低效果的方式运行</translation>
     </message>
     <message>
         <source>We&apos;re open to suggestions and constructive feedback. If you don&apos;t like something or got a great idea, let us know!</source>
         <comment>Tips</comment>
-        <translation>我们接受意见和建设性反馈。假如您有好点子或者不喜欢的东西,请告诉我们!</translation>
+        <translation>我们接受意见和建设性反馈。假如您有好电子或者不喜欢的东西,告诉我们!</translation>
     </message>
     <message>
         <source>Especially while playing online be polite and always remember there might be some minors playing with or against you as well!</source>
         <comment>Tips</comment>
-        <translation>特别是网络游戏,请注意礼节。记住:对方也和您一样是人!</translation>
+        <translation>特别是网络游戏,请有礼貌记住对方也和您一样是人!</translation>
     </message>
     <message>
         <source>Special game modes such as &apos;Vampirism&apos; or &apos;Karma&apos; allow you to develop completely new tactics. Try them in a custom game!</source>
         <comment>Tips</comment>
-        <translation>特别游戏模式“吸血“、”因果报应“需要全新的战术。来&quot;自定义游戏&quot;里试试!</translation>
+        <translation>特别游戏模式“吸血“、”因果报应“需要全新的战术。现在自定义游戏里试试!</translation>
     </message>
     <message>
         <source>The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.</source>
         <comment>Tips</comment>
-        <translation>Windows版本的&quot;刺猬杀&quot;支持Xfire。添加它到游戏列表里让您的朋友看到。</translation>
+        <translation>Windows版本的刺猬大作战支持Xfire。添加它到游戏列表里让您的朋友看到。</translation>
     </message>
     <message>
         <source>You should never install Hedgewars on computers you don&apos;t own (school, university, work, etc.). Please ask the responsible person instead!</source>
         <comment>Tips</comment>
-        <translation>您不应该在不属于您的计算机上安装“刺猬杀”——比如学校/工作场所!</translation>
+        <translation>您不应该在不属于您的计算机上安装刺猬大作战——比如学校/工作场所。</translation>
     </message>
     <message>
         <source>Hedgewars can be perfect for short games during breaks. Just ensure you don&apos;t add too many hedgehogs or use an huge map. Reducing time and health might help as well.</source>
         <comment>Tips</comment>
-        <translation>“刺猬杀”适合短时间休闲游戏,不需要将大量刺猬挤在一幅超大地图上。</translation>
+        <translation>刺猬大作战适合短时间休息,不需要太多刺猬挤在大地图上。</translation>
     </message>
     <message>
         <source>No hedgehogs were harmed in making this game.</source>
         <comment>Tips</comment>
-        <translation>制作这个游戏时不曾伤害任何刺猬。</translation>
+        <translation>制作这个游戏时不曾伤害任何刺猬</translation>
     </message>
     <message>
         <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source>
@@ -537,142 +537,152 @@
     <message>
         <source>Hedgewars is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund!</source>
         <comment>Tips</comment>
-        <translation>“刺猬杀”是一个开源的免费软件,它充分利用了我们的业余时间。如果有人想要将它卖给你,请你拒绝他!</translation>
-    </message>
-    <message>
-        <source>Connect one or more gamepads before starting the game to be able to assign their controls to your teams.</source>
-        <comment>Tips</comment>
-        <translation>游戏运行前连上游戏板,让你的团队充分控制刺猬.</translation>
+        <translation>刺猬大作战是开放源代码的免费软件,用我们的闲暇时间创造。如果有人卖给你,那么应该把钱拿回来!</translation>
     </message>
     <message>
         <source>Create an account on %1 to keep others from using your most favourite nickname while playing on the official server.</source>
         <comment>Tips</comment>
-        <translation>在官方服务器 %1 建立自己的帐号,就可以在官方服务器使用你最喜欢的昵称了.</translation>
-    </message>
-    <message>
-        <source>If your graphics card isn&apos;t able to provide hardware accelerated OpenGL, try to update the associated drivers.</source>
-        <comment>Tips</comment>
-        <translation>假如你的显卡不能提供OpenGL硬件加速,试着用降低效果的方式运行。</translation>
+        <translation>在 %1 建立一个帐号阻止其他人使用你喜欢的名称在官方服务器游戏。</translation>
     </message>
     <message>
         <source>There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump.</source>
         <comment>Tips</comment>
-        <translation>三种跳跃模式,快速按两次 [长跳] 键可以跳到非常高/向后跳.</translation>
+        <translation>三种跳跃方式。点击[高跳]两次做出跳跃高度极限的后空翻。</translation>
     </message>
     <message>
         <source>Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving.</source>
         <comment>Tips</comment>
-        <translation>害怕掉进深渊?一直按住[精确控制]建并按[左][右]不用移动.</translation>
+        <translation>害怕掉下悬崖?按住[精确]后再点击[左][右]就会只转身,不移动位置。</translation>
     </message>
     <message>
         <source>Some weapons require special strategies or just lots of training, so don&apos;t give up on a particular tool if you miss an enemy once.</source>
         <comment>Tips</comment>
-        <translation>一些武器需要特别的技能与足够的训练,因此不要放弃练习,即便是失败。是曰:屡败屡战。</translation>
+        <translation>有些武器需要特殊策略或者仅仅是大量的练习,假如你一次失去准星,也不要放弃。</translation>
     </message>
     <message>
         <source>Most weapons won&apos;t work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.</source>
         <comment>Tips</comment>
-        <translation>大多数武器在碰到水面的时候就失效了,除了“野蜂飞舞”和“蛋糕”。</translation>
+        <translation>多数武器不会在接触水之后生效。归巢的蜜蜂和蛋糕是例外。</translation>
     </message>
     <message>
         <source>The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.</source>
         <comment>Tips</comment>
-        <translation>毒奶酪只能造成不大的杀伤,不过能形成一片毒云并杀伤一片的刺猬.</translation>
+        <translation>老干酪发射器造成小规模爆炸,然后产生随风移动的有毒云雾——能一次毒害多个刺猬。</translation>
     </message>
     <message>
         <source>The Piano Strike is the most damaging air strike. You&apos;ll lose the hedgehog performing it, so there&apos;s a huge downside as well.</source>
         <comment>Tips</comment>
-        <translation>钢琴攻击能产生极大的空袭杀伤,同时你将失去这个刺猬,所以这招实在是个下下策.</translation>
+        <translation>钢琴攻击是最大威力的空袭。弹奏钢琴的刺猬会跟着钢琴返回天堂。</translation>
     </message>
     <message>
         <source>The Homing Bee can be tricky to use. It&apos;s turn radius depends on it&apos;s velocity, so try to not use full power.</source>
         <comment>Tips</comment>
-        <translation>“野蜂飞舞”可以蓄力使用,它旋转时的精度依赖于其速度,所以没必要发全力.</translation>
+        <translation>归巢的蜜蜂有些技巧。它的回转半径和初速有关,最好不用全力发射。</translation>
     </message>
     <message>
         <source>Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.</source>
         <comment>Tips</comment>
-        <translation>近身地雷完美的构建了一个链子因此可以将敌人打入地下或者...水里.</translation>
+        <translation>黏着地雷是创造小范围连锁反应的绝佳武器。</translation>
     </message>
     <message>
         <source>The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.</source>
         <comment>Tips</comment>
-        <translation>大捶主要用在桥梁或者薄板,可以将敌人敲下去.</translation>
+        <translation>锤是桥梁上/分界处最佳武器之一,只是刚刚好把刺猬打陷——如果没底就没办法了。</translation>
     </message>
     <message>
         <source>If you&apos;re stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.</source>
         <comment>Tips</comment>
-        <translation>如果你被敌人围困,可以用大锤来解围。</translation>
+        <translation>假如对方刺猬把你堵住了,一锤打下去让自己轻松些。</translation>
     </message>
     <message>
         <source>The Cake&apos;s maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.</source>
         <comment>Tips</comment>
-        <translation>蛋糕最大行走距离取决于地形边缘,用[攻击]键尽早结束它。</translation>
+        <translation>蛋糕的最大行走距离取决于地表。也可按下[攻击键]激活起爆。</translation>
     </message>
     <message>
         <source>The Flame Thrower is a weapon but it can be used for tunnel digging as well.</source>
         <comment>Tips</comment>
-        <translation>[钻洞器]既可以当作武器,也可以用做为打洞器。</translation>
+        <translation>火焰喷射器是一种武器,也是一种开路机器。</translation>
     </message>
     <message>
         <source>Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.</source>
         <comment>Tips</comment>
-        <translation>可以用“飞碟”让刺猬暂时离开洞穴等地形环境.</translation>
+        <translation>燃烧瓶可以短时阻止刺猬通过特定区域(比如通道或平台)</translation>
     </message>
     <message>
         <source>Want to know who&apos;s behind the game? Click on the Hedgewars logo in the main menu to see the credits.</source>
         <comment>Tips</comment>
-        <translation>想知道是谁贡献的这个游戏?请在主界面点击“Hedgewars”LOGO就可以看到“制作团队”.</translation>
-    </message>
-    <message>
-        <source>Like Hedgewars? Become a fan on %1 or follow us on %2!</source>
+        <translation>想要知道谁是此游戏的幕后人员?点击主菜单的Hedgewars Logo就可以看到贡献者名单。</translation>
+    </message>
+    <message>
+        <source>Like hedgewars? Become a fan on %1 or join our group at %2. You could follow us on %3 as well!</source>
+        <comment>Tips</comment>
+        <translation type="obsolete">喜欢刺猬大作战(hedgewars)?那么加入我们 %1 或者 %2.。你可以在 %3 跟随我们!</translation>
+    </message>
+    <message>
+        <source>You can find your Hedgewars configuration files under &quot;My Documents\Hedgewars&quot;. Create backups or take the files with you, but don&apos;t edit them by hand.</source>
+        <comment>Tips</comment>
+        <translation>你可以在( 我的文档\Hedgewars)里找到设置文件。可以创建备份,但不要手动修改。</translation>
+    </message>
+    <message>
+        <source>You can find your Hedgewars configuration files under &quot;Hedgewars&quot; in your home directory. Create backups or take the files with you, but don&apos;t edit them by hand.</source>
         <comment>Tips</comment>
-        <translation>喜欢刺猬杀? 来做我们的粉丝吧可以到%1或者%2!</translation>
+        <translation type="obsolete">你可以在家目录找到 .hedgewars。可以创建备份,但不要手动修改。</translation>
+    </message>
+    <message>
+        <source>Connect one or more gamepads before starting the game to be able to assign their controls to your teams.</source>
+        <comment>Tips</comment>
+        <translation>在游戏开始前连接游戏手柄才能用于操控</translation>
+    </message>
+    <message>
+        <source>If your graphics card isn&apos;t able to provide hardware accelerated OpenGL, try to update the associated drivers.</source>
+        <comment>Tips</comment>
+        <translation>加入你的显卡不能使用OpenGL硬件加速,请升级相应驱动。</translation>
+    </message>
+    <message>
+        <source>Like Hedgewars? Become a fan on %1 or join our group at %2. You could follow us on %3 as well!</source>
+        <comment>Tips</comment>
+        <translation type="obsolete">喜欢刺猬大作战(Hedgewars)吗?加入 %2 ,成为 %1 粉丝,也可以在  %3 跟随我们!</translation>
     </message>
     <message>
         <source>Feel free to draw your own graves, hats, flags or even maps and themes! But note that you&apos;ll have to share them somewhere to use them online.</source>
         <comment>Tips</comment>
-        <translation>你可以自由的构建自己的头像、帽子、旗帜甚至是地图和主题!但是请注意:你需要将这些在线分享出来。</translation>
+        <translation>欢迎你自己绘制墓碑,帽子(头饰),旗帜或者地图,主题!但是记住,如果要在网上使用,你的必须把它们分享出来。</translation>
     </message>
     <message>
         <source>Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!</source>
         <comment>Tips</comment>
-        <translation>喜欢一个很特别的帽子图案?贡献你的力量吧,你将得到一个属于自己的帽子图案!</translation>
+        <translation>非常想要一个帽子?捐赠的话就给你!</translation>
     </message>
     <message>
         <source>Keep your video card drivers up to date to avoid issues playing the game.</source>
         <comment>Tips</comment>
-        <translation>让你的显卡保持更新以便避免一些已知的游戏问题。</translation>
-    </message>
-    <message>
-        <source>You can find your Hedgewars configuration files under &quot;My Documents\Hedgewars&quot;. Create backups or take the files with you, but don&apos;t edit them by hand.</source>
-        <comment>Tips</comment>
-        <translation>你可以在“我的文档\Hedgewars”文件夹下找到“刺猬杀”的配置文件,可以新建和备份但不要随便修改。</translation>
-    </message>
-    <message>
-        <source>You can find your Hedgewars configuration files under &quot;Hedgewars&quot; in your home directory. Create backups or take the files with you, but don&apos;t edit them by hand.</source>
-        <comment>Tips</comment>
-        <translation type="obsolete">你可以在你的主文件夹下下找到“Hedgewars”文件夹,里面又配置文件,你可以新建和备份这个文件,但请不要随便编辑它.</translation>
+        <translation>保持显卡驱动最新避免可能的麻烦。</translation>
     </message>
     <message>
         <source>You&apos;re able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.</source>
         <comment>Tips</comment>
-        <translation>你可以组织刺猬杀的相关文件(保存的游戏和演示还有录像),通过收藏夹或者浏览器.</translation>
+        <translation>你可以使用网络浏览器或已存在的文件关联刺猬大作战的相关文件(比如存档和回放)</translation>
     </message>
     <message>
         <source>Want to save ropes? Release the rope in mid air and then shoot again. As long as you don&apos;t touch the ground you&apos;ll reuse your rope without wasting ammo!</source>
         <comment>Tips</comment>
-        <translation type="unfinished"></translation>
+        <translation>想要节省绳子?放开绳子之后再次发射,只要你不曾脱离绳子接触接触地面就可以继续使用同一根!</translation>
+    </message>
+    <message>
+        <source>Like Hedgewars? Become a fan on %1 or follow us on %2!</source>
+        <comment>Tips</comment>
+        <translation>喜欢刺猬大作战Hedgewars吗?来 %1 或者 %2 追随我们吧!</translation>
     </message>
     <message>
         <source>You can find your Hedgewars configuration files under &quot;Library/Application Support/Hedgewars&quot; in your home directory. Create backups or take the files with you, but don&apos;t edit them by hand.</source>
         <comment>Tips</comment>
-        <translation type="unfinished"></translation>
+        <translation>在家目录的&quot;Library/Application Support/Hedgewars&quot;找到刺猬的配置文件。备份随你,但是不要手动编辑。</translation>
     </message>
     <message>
         <source>You can find your Hedgewars configuration files under &quot;.hedgewars&quot; in your home directory. Create backups or take the files with you, but don&apos;t edit them by hand.</source>
         <comment>Tips</comment>
-        <translation type="unfinished"></translation>
+        <translation>在家目录的&quot;.hedgewars&quot;找到刺猬的配置文件。备份随你,但是不要手动编辑。</translation>
     </message>
 </context>
 <context>
@@ -739,31 +749,31 @@
     </message>
     <message>
         <source>You can&apos;t edit teams from team selection. Go back to main menu to add, edit or delete teams.</source>
-        <translation>您不能在队伍选择界面修改队伍,请返回主页面添加/修改/删除队伍。</translation>
+        <translation>您不能在队伍选择界面修改队伍。请返回主页面进行添加、修改、删除队伍等操作。</translation>
     </message>
     <message>
         <source>New scheme</source>
-        <translation type="unfinished"></translation>
+        <translation>新框架</translation>
     </message>
     <message>
         <source>Edit scheme</source>
-        <translation type="unfinished"></translation>
+        <translation>修改框架</translation>
     </message>
     <message>
         <source>Delete scheme</source>
-        <translation type="unfinished"></translation>
+        <translation>删除框架</translation>
     </message>
     <message>
         <source>New weapon set</source>
-        <translation type="unfinished"></translation>
+        <translation>新武器配置</translation>
     </message>
     <message>
         <source>Edit weapon set</source>
-        <translation type="unfinished"></translation>
+        <translation>修改武器配置</translation>
     </message>
     <message>
         <source>Delete weapon set</source>
-        <translation type="unfinished"></translation>
+        <translation>删除武器配置</translation>
     </message>
 </context>
 <context>
@@ -862,7 +872,7 @@
     <message numerus="yes">
         <source>There are %1 clients connected to this room.</source>
         <translation>
-            <numerusform>有 %1 个客户端连接到这个房间.</numerusform>
+            <numerusform>有 %1 个客户端连接到这个房间。</numerusform>
         </translation>
     </message>
     <message numerus="yes">
@@ -885,33 +895,33 @@
     </message>
     <message>
         <source>State:</source>
-        <translation>状态: </translation>
+        <translation>游戏状态</translation>
     </message>
     <message>
         <source>Rules:</source>
-        <translation>规则: </translation>
+        <translation>规则</translation>
     </message>
     <message>
         <source>Weapons:</source>
-        <translation>武器: </translation>
+        <translation>武器</translation>
     </message>
     <message>
         <source>Search:</source>
-        <translation>搜索: </translation>
+        <translation>搜索</translation>
     </message>
     <message>
         <source>Clear</source>
-        <translation>清除:</translation>
+        <translation>清除</translation>
     </message>
     <message>
         <source>Warning</source>
-        <translation>警告:</translation>
+        <translation>警告</translation>
     </message>
     <message>
         <source>The game you are trying to join has started.
 Do you still want to join the room?</source>
-        <translation>游戏正在大厅中。
-你是否想去观战?</translation>
+        <translation>你要加入的游戏已经开始了。
+还要进入房间吗?</translation>
     </message>
 </context>
 <context>
@@ -926,19 +936,19 @@
     </message>
     <message>
         <source>Defend your fort and destroy the opponents, two team colours max!</source>
-        <translation>保卫你的城堡,破坏对手的,对战努力吧!</translation>
+        <translation>保卫你的城堡,破坏对手的,努力吧!</translation>
     </message>
     <message>
         <source>Teams will start on opposite sides of the terrain, two team colours max!</source>
-        <translation>队伍开始在对手的地盘,努力!</translation>
+        <translation>队伍开始在对手的地盘,努力!</translation>
     </message>
     <message>
         <source>Land can not be destroyed!</source>
-        <translation>地面无法破坏!</translation>
+        <translation>地面无法破坏!</translation>
     </message>
     <message>
         <source>Add an indestructable border around the terrain</source>
-        <translation>添加不可毁坏地形</translation>
+        <translation>添加不可毁坏地边界</translation>
     </message>
     <message>
         <source>Lower gravity</source>
@@ -978,15 +988,15 @@
     </message>
     <message>
         <source>Order of play is random instead of in room order.</source>
-        <translation>随机出场顺序。</translation>
+        <translation>随机出场顺序</translation>
     </message>
     <message>
         <source>Play with a King. If he dies, your side dies.</source>
-        <translation>国王不能死!!否则自动输。</translation>
+        <translation>国王不能死!!</translation>
     </message>
     <message>
         <source>Take turns placing your hedgehogs before the start of play.</source>
-        <translation>在开局前手动放置刺猬。</translation>
+        <translation>在开局前手动放置刺猬</translation>
     </message>
     <message>
         <source>Ammo is shared between all teams that share a colour.</source>
@@ -994,39 +1004,39 @@
     </message>
     <message>
         <source>Disable girders when generating random maps.</source>
-        <translation>禁止随机生成地图使用梁。</translation>
+        <translation>禁止随机生成地图使用梁</translation>
     </message>
     <message>
         <source>Disable land objects when generating random maps.</source>
-        <translation>禁止随机生成地图使用地面物体。</translation>
+        <translation>禁止随机生成地图使用地面物体</translation>
     </message>
     <message>
         <source>AI respawns on death.</source>
-        <translation>AI死后重生。</translation>
-    </message>
-    <message>
-        <source>All (living) hedgehogs are fully restored at the end of turn</source>
-        <translation>所有或者的刺猬结局的时候都会被保存</translation>
+        <translation>AI 死亡再生</translation>
     </message>
     <message>
         <source>Attacking does not end your turn.</source>
-        <translation>不会终结你的回合.</translation>
+        <translation>攻击不会结束当前回合</translation>
     </message>
     <message>
         <source>Weapons are reset to starting values each turn.</source>
-        <translation>每轮武器的配置都会重置.</translation>
+        <translation>每回合开始武器自动重置到默认设定</translation>
     </message>
     <message>
         <source>Each hedgehog has its own ammo. It does not share with the team.</source>
-        <translation>每个刺猬都有其自己的武器. 并在奔队中不共享.</translation>
+        <translation>每个刺猬都有独立的弹药,非团队分享</translation>
+    </message>
+    <message>
+        <source>All (living) hedgehogs are fully restored at the end of turn</source>
+        <translation>所有活着的刺猬回合结尾时彻底恢复健康。</translation>
     </message>
     <message>
         <source>You will not have to worry about wind anymore.</source>
-        <translation type="unfinished"></translation>
+        <translation>不用担心风的影响了。</translation>
     </message>
     <message>
         <source>Wind will affect almost everything.</source>
-        <translation type="unfinished"></translation>
+        <translation>风无所不在。</translation>
     </message>
 </context>
 <context>
@@ -1041,14 +1051,14 @@
     </message>
     <message>
         <source>New</source>
-        <translation type="unfinished">新模式</translation>
+        <translation>新模式</translation>
     </message>
 </context>
 <context>
     <name>PageSinglePlayer</name>
     <message>
         <source>Simple Game (a quick game against the computer, settings are chosen for you)</source>
-        <translation>快速游戏 (对抗电脑,固定设置)</translation>
+        <translation>快速游戏 (使用预设对抗电脑)</translation>
     </message>
     <message>
         <source>Multiplayer (play a hotseat game against your friends, or AI teams)</source>
@@ -1068,7 +1078,7 @@
     </message>
     <message>
         <source>Campaign Mode (...). IN DEVELOPMENT</source>
-        <translation>对战模式(...)开发中</translation>
+        <translation>战役模式 ——开发中</translation>
     </message>
 </context>
 <context>
@@ -1146,11 +1156,11 @@
     </message>
     <message>
         <source>Frontend fullscreen</source>
-        <translation>界面全屏幕</translation>
+        <translation>前端界面全屏幕</translation>
     </message>
     <message>
         <source>Append date and time to record file name</source>
-        <translation>记录名称中包含具体时间日期</translation>
+        <translation>记录名称中包含具体时间和日期</translation>
     </message>
     <message>
         <source>Reduced quality</source>
@@ -1162,15 +1172,15 @@
     </message>
     <message>
         <source>Enable frontend sounds</source>
-        <translation>开启界面音效</translation>
+        <translation>开启前端界面音效</translation>
     </message>
     <message>
         <source>Enable frontend music</source>
-        <translation>开启界面音乐</translation>
+        <translation>开启前端界面音乐</translation>
     </message>
     <message>
         <source>Frontend effects</source>
-        <translation>界面效果</translation>
+        <translation>前端界面效果</translation>
     </message>
 </context>
 <context>
@@ -1193,7 +1203,7 @@
     </message>
     <message>
         <source>generated maze...</source>
-        <translation>生成的迷宫...</translation>
+        <translation>生成迷宫</translation>
     </message>
     <message>
         <source>Mission</source>
@@ -1205,15 +1215,15 @@
     </message>
     <message>
         <source>Any</source>
-        <translation>任何</translation>
+        <translation>任意</translation>
     </message>
     <message>
         <source>In lobby</source>
-        <translation>在线状态</translation>
+        <translation>大厅中</translation>
     </message>
     <message>
         <source>In progress</source>
-        <translation>使用中</translation>
+        <translation>进行中</translation>
     </message>
     <message>
         <source>Default</source>
@@ -1221,31 +1231,31 @@
     </message>
     <message>
         <source>Pro mode</source>
-        <translation type="obsolete">Pro 模式</translation>
+        <translation type="obsolete">高手模式</translation>
     </message>
     <message>
         <source>Shoppa</source>
-        <translation type="obsolete">绳索模式</translation>
+        <translation type="obsolete">绳子党</translation>
     </message>
     <message>
         <source>Basketball</source>
-        <translation type="obsolete">篮球模式</translation>
+        <translation type="obsolete">篮球</translation>
     </message>
     <message>
         <source>Minefield</source>
-        <translation type="obsolete">地雷模式</translation>
+        <translation type="obsolete">雷区</translation>
     </message>
     <message>
         <source>Barrel mayhem</source>
-        <translation type="obsolete">武器不共享</translation>
+        <translation type="obsolete">炼狱场</translation>
     </message>
     <message>
         <source>Tunnel hogs</source>
-        <translation type="obsolete">洞穴刺猬</translation>
+        <translation type="obsolete">刺猬洞</translation>
     </message>
     <message>
         <source>Crazy</source>
-        <translation type="obsolete">疯狂模式</translation>
+        <translation type="obsolete">疯狂刺猬</translation>
     </message>
 </context>
 <context>
@@ -1276,7 +1286,7 @@
     </message>
     <message>
         <source>Net game</source>
-        <translation>网络游戏</translation>
+        <translation>局域网络游戏</translation>
     </message>
     <message>
         <source>Weapons</source>
@@ -1300,7 +1310,7 @@
     </message>
     <message>
         <source>Schemes and Weapons</source>
-        <translation type="unfinished"></translation>
+        <translation>游戏框架和武器配置</translation>
     </message>
 </context>
 <context>
@@ -1311,7 +1321,7 @@
     </message>
     <message>
         <source>This program is distributed under the GNU General Public License</source>
-        <translation>这款程序遵守GPL协议的保护</translation>
+        <translation>This program is distributed under the GNU General Public License</translation>
     </message>
     <message>
         <source>Resolution</source>
@@ -1327,7 +1337,7 @@
     </message>
     <message>
         <source>Art:</source>
-        <translation>美化:</translation>
+        <translation>艺术:</translation>
     </message>
     <message>
         <source>Translations:</source>
@@ -1371,7 +1381,7 @@
     </message>
     <message>
         <source>Damage Modifier</source>
-        <translation>伤害修改</translation>
+        <translation>伤害修正值</translation>
     </message>
     <message>
         <source>Turn Time</source>
@@ -1387,7 +1397,7 @@
     </message>
     <message>
         <source>Scheme Name:</source>
-        <translation>设置名称:  </translation>
+        <translation>设置名称:</translation>
     </message>
     <message>
         <source>Crate Drops</source>
@@ -1407,7 +1417,7 @@
     </message>
     <message>
         <source>% Dud Mines</source>
-        <translation>% 地雷哑弹</translation>
+        <translation>% 地雷故障</translation>
     </message>
     <message>
         <source>Name</source>
@@ -1431,11 +1441,11 @@
     </message>
     <message>
         <source>Locale</source>
-        <translation>本土化</translation>
+        <translation>Locale</translation>
     </message>
     <message>
         <source>Restart game to apply</source>
-        <translation>重新启动游戏应用</translation>
+        <translation>需要重新启动游戏方可应用</translation>
     </message>
     <message>
         <source>Explosives</source>
@@ -1447,31 +1457,31 @@
     </message>
     <message>
         <source>This development build is &apos;work in progress&apos; and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source>
-        <translation>开发版本,尚不能和其他版本兼容,仍有不足。请谨慎使用!!</translation>
+        <translation>当前运行的为开发版本,不同其他版本兼容。功能或许损坏、不完整。请自行承担风险!</translation>
     </message>
     <message>
         <source>Quality</source>
-        <translation>价值</translation>
+        <translation>图像质量</translation>
+    </message>
+    <message>
+        <source>Sudden Death Water Rise</source>
+        <translation>死亡模式水位上涨</translation>
+    </message>
+    <message>
+        <source>Sudden Death Health Decrease</source>
+        <translation>死亡模式健康降低</translation>
+    </message>
+    <message>
+        <source>% Rope Length</source>
+        <translation>% 绳长</translation>
     </message>
     <message>
         <source>% Health Crates</source>
-        <translation>% 健康包裹</translation>
+        <translation>% 生命箱</translation>
     </message>
     <message>
         <source>Health in Crates</source>
-        <translation>包裹里有血</translation>
-    </message>
-    <message>
-        <source>Sudden Death Water Rise</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Sudden Death Health Decrease</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>% Rope Length</source>
-        <translation type="unfinished"></translation>
+        <translation>生命箱的值数</translation>
     </message>
 </context>
 <context>
@@ -1485,7 +1495,7 @@
     <name>QMainWindow</name>
     <message>
         <source>Hedgewars %1</source>
-        <translation>刺猬杀 %1</translation>
+        <translation>刺猬大作战 %1</translation>
     </message>
 </context>
 <context>
@@ -1508,7 +1518,7 @@
     </message>
     <message>
         <source>Connection to server is lost</source>
-        <translation>服务器连接丢失</translation>
+        <translation>与服务器的连接丢失</translation>
     </message>
     <message>
         <source>Weapons</source>
@@ -1528,39 +1538,39 @@
     </message>
     <message>
         <source>Can not overwrite default weapon set &apos;%1&apos;!</source>
-        <translation>不能覆盖默认的武器配置 &apos;%1&apos;!</translation>
+        <translation>不能覆盖默认的武器配置 &apos;%1&apos;</translation>
     </message>
     <message>
         <source>All file associations have been set.</source>
-        <translation>文件联合已经存储完毕. </translation>
-    </message>
-    <message>
-        <source>File association failed.</source>
-        <translation>文件联合失败.</translation>
+        <translation>所有相关文件已经设定。</translation>
     </message>
     <message>
         <source>Teams</source>
-        <translation type="unfinished">队伍</translation>
+        <translation>队伍</translation>
     </message>
     <message>
         <source>Really delete this team?</source>
-        <translation type="unfinished"></translation>
+        <translation>真的要删除队伍?</translation>
     </message>
     <message>
         <source>Schemes</source>
-        <translation type="unfinished"></translation>
+        <translation>游戏框架</translation>
     </message>
     <message>
         <source>Can not delete default scheme &apos;%1&apos;!</source>
-        <translation type="unfinished"></translation>
+        <translation>无法删除默认游戏框架 &apos;%1&apos;!</translation>
+    </message>
+    <message>
+        <source>File association failed.</source>
+        <translation>文件关联失败</translation>
     </message>
     <message>
         <source>Really delete this game scheme?</source>
-        <translation type="unfinished"></translation>
+        <translation>真的删除此游戏框架?</translation>
     </message>
     <message>
         <source>Can not delete default weapon set &apos;%1&apos;!</source>
-        <translation type="unfinished"></translation>
+        <translation>无法删除武器配置%1&apos;!</translation>
     </message>
 </context>
 <context>
@@ -1602,7 +1612,7 @@
     </message>
     <message>
         <source>Go!</source>
-        <translation>上场!!</translation>
+        <translation>上场!</translation>
     </message>
     <message>
         <source>Start</source>
@@ -1654,7 +1664,7 @@
     </message>
     <message>
         <source>Associate file extensions</source>
-        <translation>连接文件扩展</translation>
+        <translation>相关文件扩展</translation>
     </message>
 </context>
 <context>
@@ -1696,19 +1706,19 @@
     </message>
     <message>
         <source>Probabilities</source>
-        <translation>几率</translation>
+        <translation>空中支援几率</translation>
     </message>
     <message>
         <source>Ammo in boxes</source>
-        <translation>弹药数</translation>
+        <translation>弹药箱</translation>
     </message>
     <message>
         <source>Delays</source>
-        <translation>延迟</translation>
+        <translation>延迟回合数</translation>
     </message>
     <message>
         <source>new</source>
-        <translation type="unfinished">新</translation>
+        <translation>新</translation>
     </message>
 </context>
 <context>
@@ -1798,11 +1808,7 @@
     </message>
     <message>
         <source>AI Survival Mode</source>
-        <translation>AI 复活模式</translation>
-    </message>
-    <message>
-        <source>Reset Health</source>
-        <translation>重置健康值</translation>
+        <translation>AI生存模式</translation>
     </message>
     <message>
         <source>Unlimited Attacks</source>
@@ -1810,19 +1816,23 @@
     </message>
     <message>
         <source>Reset Weapons</source>
-        <translation>重置所有武器</translation>
+        <translation>重置武器</translation>
     </message>
     <message>
         <source>Per Hedgehog Ammo</source>
-        <translation>每个刺猬的武器</translation>
+        <translation>每个刺猬的弹药</translation>
+    </message>
+    <message>
+        <source>Reset Health</source>
+        <translation>重置生命值</translation>
     </message>
     <message>
         <source>Disable Wind</source>
-        <translation type="unfinished"></translation>
+        <translation>禁止风力作用</translation>
     </message>
     <message>
         <source>More Wind</source>
-        <translation type="unfinished"></translation>
+        <translation>让风来地更猛烈吧!</translation>
     </message>
 </context>
 <context>
@@ -1946,7 +1956,7 @@
     <message>
         <source>hedgehogs
 info</source>
-        <translation>刺猬杀
+        <translation>刺猬大作战
 信息</translation>
     </message>
     <message>
@@ -2013,67 +2023,67 @@
     <name>binds (descriptions)</name>
     <message>
         <source>Move your hogs and aim:</source>
-        <translation>移动您的刺猬同时瞄准: </translation>
+        <translation>移动您的刺猬同时瞄准:</translation>
     </message>
     <message>
         <source>Traverse gaps and obstacles by jumping:</source>
-        <translation>使用跳跃越过沟渠、障碍: </translation>
+        <translation>使用跳跃越过沟渠、障碍:</translation>
     </message>
     <message>
         <source>Fire your selected weapon or trigger an utility item:</source>
-        <translation>使用选择的武器开火、使用物品: </translation>
+        <translation>使用选择的武器开火、使用物品:</translation>
     </message>
     <message>
         <source>Pick a weapon or a target location under the cursor:</source>
-        <translation>选择一个武器、或者瞄准光标下的某点:</translation>
+        <translation>选取一个武器或者瞄准光标下的地点:</translation>
     </message>
     <message>
         <source>Switch your currently active hog (if possible):</source>
-        <translation>切换到您当前活动的刺猬(如果可用): </translation>
+        <translation>切换到您当前活动的刺猬(如果可用):</translation>
     </message>
     <message>
         <source>Pick a weapon or utility item:</source>
-        <translation>选择一个武器或物品: </translation>
+        <translation>选择一个武器或物品:</translation>
     </message>
     <message>
         <source>Set the timer on bombs and timed weapons:</source>
-        <translation>设置定时炸弹等武器起爆时间: </translation>
+        <translation>设置定时炸弹等武器起爆时间:</translation>
     </message>
     <message>
         <source>Move the camera to the active hog:</source>
-        <translation>移动镜头到选中的刺猬: </translation>
+        <translation>移动镜头到选中的刺猬:</translation>
     </message>
     <message>
         <source>Move the cursor or camera without using the mouse:</source>
-        <translation>不用鼠标移动光标或镜头: </translation>
+        <translation>不用鼠标移动光标或镜头:</translation>
     </message>
     <message>
         <source>Modify the camera&apos;s zoom level:</source>
-        <translation>调整镜头放大倍数: </translation>
+        <translation>调整镜头放大倍数:</translation>
     </message>
     <message>
         <source>Talk to your team or all participants:</source>
-        <translation>同队友或全部参与者对话: </translation>
+        <translation>同队友或全部参与者对话:</translation>
     </message>
     <message>
         <source>Pause, continue or leave your game:</source>
-        <translation>暂停、继续或离开游戏: </translation>
+        <translation>暂停、继续或离开游戏:</translation>
     </message>
     <message>
         <source>Modify the game&apos;s volume while playing:</source>
-        <translation>调整游戏时音量: </translation>
+        <translation>调整游戏时音量:</translation>
     </message>
     <message>
         <source>Toggle fullscreen mode:</source>
-        <translation>全屏模式: </translation>
+        <translation>全屏模式:</translation>
     </message>
     <message>
         <source>Take a screenshot:</source>
-        <translation>截图: </translation>
+        <translation>截图:</translation>
     </message>
     <message>
         <source>Toggle labels above hedgehogs:</source>
-        <translation>切换刺猬标签的显示方式: </translation>
+        <translation>切换刺猬头顶标签的显示方式:</translation>
     </message>
 </context>
 <context>
@@ -2136,7 +2146,7 @@
     </message>
     <message>
         <source>Tab</source>
-        <translation>Tab 键</translation>
+        <translation>Tab</translation>
     </message>
     <message>
         <source>Clear</source>
@@ -2152,7 +2162,7 @@
     </message>
     <message>
         <source>Escape</source>
-        <translation>退出键</translation>
+        <translation>ESC键(退出键)</translation>
     </message>
     <message>
         <source>Space</source>
@@ -2160,7 +2170,7 @@
     </message>
     <message>
         <source>Delete</source>
-        <translation>删除键</translation>
+        <translation>Del(删除键)</translation>
     </message>
     <message>
         <source>Numpad 0</source>
@@ -2352,43 +2362,43 @@
     </message>
     <message>
         <source>Left stick (Right)</source>
-        <translation>左摇杆(右)</translation>
+        <translation>右(左摇杆)</translation>
     </message>
     <message>
         <source>Left stick (Left)</source>
-        <translation>左摇杆(左)</translation>
+        <translation>左(左摇杆)</translation>
     </message>
     <message>
         <source>Left stick (Down)</source>
-        <translation>左摇杆(下)</translation>
+        <translation>下(左摇杆)</translation>
     </message>
     <message>
         <source>Left stick (Up)</source>
-        <translation>左摇杆(上)</translation>
+        <translation>上(左摇杆)</translation>
     </message>
     <message>
         <source>Left trigger</source>
-        <translation>左触发</translation>
+        <translation>左制动</translation>
     </message>
     <message>
         <source>Right trigger</source>
-        <translation>右触发</translation>
+        <translation>右制动</translation>
     </message>
     <message>
         <source>Right stick (Down)</source>
-        <translation>右摇杆(下)</translation>
+        <translation>下(右摇杆)</translation>
     </message>
     <message>
         <source>Right stick (Up)</source>
-        <translation>右摇杆(上)</translation>
+        <translation>上(右摇杆)</translation>
     </message>
     <message>
         <source>Right stick (Right)</source>
-        <translation>右摇杆(右)</translation>
+        <translation>右(右摇杆)</translation>
     </message>
     <message>
         <source>Right stick (Left)</source>
-        <translation>右摇杆(左)</translation>
+        <translation>左(右摇杆)</translation>
     </message>
     <message>
         <source>DPad</source>
--- a/share/hedgewars/Data/Locale/zh_CN.txt	Thu Dec 09 22:50:16 2010 +0100
+++ b/share/hedgewars/Data/Locale/zh_CN.txt	Thu Dec 09 22:51:07 2010 +0100
@@ -1,6 +1,6 @@
-; Simplified Chinese locale, Translated by Tonghuix (tonghuix@gmail.com) 21 Oct 2010
+; Simplified Chinese locale
 
-00:00=手榴蛋蛋
+00:00=手榴弹
 00:01=集束炸弹
 00:02=反坦克火箭筒
 00:03=归巢的蜜蜂
@@ -12,9 +12,9 @@
 00:09=沙漠之鹰
 00:10=炸药
 00:11=球棒
-00:12=喔嘻嘻呦拳
+00:12=升龙拳
 00:13=秒
-00:14=降落伞
+00:14=空降
 00:15=空袭
 00:16=地雷空袭
 00:17=喷灯
@@ -25,7 +25,7 @@
 00:22=鞭子
 00:23=神风特工队
 00:24=蛋糕
-00:25=色诱
+00:25=引诱
 00:26=西瓜炸弹
 00:27=地狱礼花
 00:28=钻头火箭
@@ -49,6 +49,8 @@
 00:46=火焰喷射器
 00:47=固定地雷
 00:48=大锤
+00:49=复苏
+00:50=电钻空袭
 
 01:00=开战!
 01:01=平局
@@ -56,285 +58,284 @@
 01:03=音量 %1%
 01:04=暂停
 01:05=确定要退出? (是Y/否Esc)
-01:06=突然死亡模式!
+01:06=死亡模式!
 01:07=%1 剩余
 01:08=燃料
 01:09=同步中...
 01:10=使用本工具不会结束回合!
 01:11=您还不能用它!
-01:12=突然死亡模式前最后一回合!
+01:12=死亡模式前最后一回合!
 01:13=%1 回合倒计时!
 01:14=预备上, %1!
 
 ; Event messages
 ; Hog (%1) died
 ; 02:00=%1 has kicked the bucket!
-02:00=%1踢到了春哥的腿!
+02:00=%1 离去!
 ; 02:00=%1 has seen the light!
-02:00=%1看到了小野妹子在向他招手!
+02:00=%1 目睹圣光降临!
 ; 02:00=%1 never saw that coming!
-02:00=阿西BUG!%1被人暗算了! 
+02:00=%1 无法瞑目
 ; 02:00=%1 waves goodbye!
-02:00=%1我嘞个去!哪个混蛋竟用这个绝招!
+02:00=%1 向大家挥手道别。
 ; 02:00=%1 has gone to a better place!
-02:00=%1:你竟然敢背叛组织!
+02:00=%1 去了极乐世界!
 ; 02:00=%1 meets his maker!
-02:00=我嘞个去!这货不是%1!这货不是%1!
+02:00=%1 去见造物主了!
 ; 02:00=%1 can hang on no longer!
-02:00=真悲剧%1平田君(头顶内裤的哥们)!
+02:00=%1 再也受不了了!
 ; 02:00=%1 has done his duty!
-02:00=%1再也不会蛋疼了!
+02:00=%1 完成了他的使命!
 ; 02:00=%1 makes the ultimate sacrifice!
-02:00=%1:剩下的哥们,加嘞个油!!
+02:00=%1 做了最大的牺牲!
 ; 02:00=%1 departs this mortal coil!
-02:00=%1想玩“移形幻影”,失败了!
+02:00=%1 摆脱了躯壳的束缚!
 ; 02:00=%1 makes like a tree and leaves!
-02:00=%1啊~内裤!我这辈子值啦!~
+02:00=%1 叶落归根。
 ; 02:00=%1 has timed out!
-02:00=%1的人生杯具了
+02:00=%1 大限已至。
 ; 02:00=%1 says peace out!
-02:00=%1中了[喔嘻嘻呦拳]。。。这辈子值了!
+02:00=%1 悄然离场了。
 ; 02:00=%1 will be fondly remembered!
-02:00=不嘞个是吧!%1竟然会死!
+02:00=%1 永远活在我们心中!
 ; 02:00=%1 has an aneurysm!
-02:00=湿父,让%1起死回生吧!
+02:00=%1 不治而亡。
 ; 02:00=%1 leaves behind a wife and child
-02:00=%1 留下一家孤儿寡母。。。
+02:00=%1 留下一家孤儿寡母。
 ; 02:00=%1 has launched his last bazooka
-02:00=%1发射了最后一发火箭弹
+02:00=%1 发射了最后一发火箭弹
 ; 02:00=%1 has tossed his last grenade
-02:00=%1扔出了最后一枚手榴弹
+02:00=%1 扔出了最后一枚手榴弹
 ; 02:00=%1 has baked his last cake
-02:00=%1烘烤了最后一块蛋糕
+02:00=%1 烘烤了最后一块蛋糕
 ; 02:00=%1 has swung on his last rope
-02:00=%1甩出了最后一根绳索
+02:00=%1 最后一次甩出了绳索
 ; 02:00=%1 has called his last airstrike
-02:00=%1呼叫了最后一次空袭
+02:00=%1 最后一次呼叫空袭
 ; 02:00=%1 has pumped his last shotgun
-02:00=%1抽出了最后一把霰弹枪
+02:00=%1 最后一次抽出了霰弹枪
 ; 02:00=%1 has thrown his last melon
-02:00=%1扔出了最后一个西瓜炸弹
+02:00=%1 最后一次扔出了西瓜炸弹
 ; 02:00=%1 has drawn his last deagle
-02:00=%1拔出了最后一把沙鹰
+02:00=%1 最后一次拔出了沙鹰
 ; 02:00=%1 took one shot too many
-02:00=%1好像看到那谁家的小谁了~~
+02:00=%1 挨了太多枪了
 ; 02:00=%1 could really have used a health crate
-02:00=%1还没打倒“肉山大魔王”呢~
+02:00=%1 真该用下医疗包的
 ; 02:00=%1 has gone to play a better game
-02:00=徘句之神一屁股糊%1熊脸上了!
+02:00=%1 去玩更有意思的游戏去了
 ; 02:00=%1 has ragequit life
-02:00=%1还没看到这个游戏的主线目标呢!
+02:00=%1 拔网线了!
 ; 02:00=%1 fails
-02:00=洒家,%1还会再来的!
+02:00=%1 失败了
 ; 02:00=Poor poor %1...
-02:00=%1的人生简直就是一茶几(杯具+餐具)
+02:00=可怜的 %1...
 ; 02:00=%1 prefers wormux
-02:00=%1老湿,这游戏不给力啊!
+02:00=%1 更喜欢 Wormux
 ; 02:00=%1 has been blocking shots with his face
-02:00=%1杯具啊!菊花要爆啦!
+02:00=%1 勇于面对,结果相当惨烈
 ; 02:00=%1 is a hero amongst me...err..hogs
-02:00=我嘞个去!竟然有人爆%1的菊花!
+02:00=%1 是我的英雄!
 ; 02:00=%1 finds his place in Valhalla
-02:00=好好干吧!要不然,过世的%1会很伤心的!~
+02:00=%1 在勇者纪念碑上找到了位置
 ; 02:00=%1 has left the building
-02:00=不要破坏团队合作!否则过世的%1会很伤心的!~
+02:00=%1 离开了这间屋子
 ; 02:00=%1 goes the way of the dinosaurs
-02:00=%1又开始蛋疼了!
+02:00=%1 步上了恐龙的道路
 ; 02:00=%1 brings hedgehogs one step closer to extinction
-02:00=我嘞个擦!%1要让刺猬灭绝了
+02:00=%1 让刺猬物种灭绝更近了一步
 ; 02:00=%1 brings a tear to my eye
-02:00=我擦嘞!%1死的太突然那了!
+02:00=%1 带走了我一滴眼泪
 ; 02:00=%1 is an ex-hog
-02:00=%1的必杀技是——变成食物——开玩笑,呵呵
+02:00=%1 生前是一只刺猬
 ; 02:00=%1 is pushing up the daisies
-02:00=%1诅咒害他那人蛋疼菊紧!
+02:00=%1 被菊花簇拥
 ; 02:00=%1 has ceased to be
-02:00=%1:啊呀!这种插法,为湿多疼啊!~
+02:00=%1 被删除了
 ; 02:00=Say goodbye to %1
-02:00=比任何人都想去天竺的八戒,已经魂归天际啦!
+02:00=对 %1 说再见
 ; 02:00=No hope left for %1
-02:00=坑爹呢!为什么残念的%1会死!~
+02:00=%1 没有希望了
 ; 02:00=%1 faces the final curtain
-02:00=%1:我杀了你们的朋友,现在搞我是吧!
+02:00=%1 面容被落下的帷幕遮住了
 ; 02:00=Smoke 'em if you got 'em, %1
-02:00=%1心目中的世界观根本就是个BUG啊!
+02:00=%1 抓紧时间实现你最后的愿望吧
 ; 02:00=%1 suffers a Spontaneous Massive Existence Failure
-02:00=%1休斯顿,我们出问题了!(出自阿波罗13)
+02:00=%1 遭遇了自发性大规模故障
 ; 02:00=%1 has passed on
-02:00=%1被天朝“墙”了!
+02:00=%1 走了
 ; 02:00=%1 is stone dead
-02:00=%1被凤姐吻的不行了!~
+02:00=%1 永垂不朽
 ; 02:00=%1 is no more
-02:00=春哥需要你,%1!
+02:00=%1 不在了
 ; 02:00=%1 has expired
-02:00=%1被光腚总菊河蟹了!~~
+02:00=%1 已故
 ; 02:00=Bereft of life, %1 rests in peace
-02:00=%1说,这位玩家的表情太猥琐了
+02:00=%1 安详地躺着
 ; 02:00=%1 joins the choir invisible
-02:00=%1用尽了全部的查克拉~
+02:00=%1 加入了隐形唱诗班
 ; 02:00=Farewell %1, we hardly knew ye!
-02:00=%1后悔没信春哥!
+02:00=%1, 永别了,我们还没熟悉你呢!
 ; 02:00=%1 had a low tolerance for being shot
-02:00=%1想说,他一直暗恋凤姐很久了!~
+02:00=%1 抗打击能力不足
 ; 02:00=%1 could have used an extra life
-02:00=下一局,%1一定会妥妥儿的!~噢嗬!
+02:00=%1 本该用另一条命的
 ; 02:00=Is there a doctor in the house?
-02:00=擦!擦!玩儿蛋去!
+02:00=有医生吗?
 
 ; Hog (%1) drowned
 ; 02:01=%1 plays submarine!
-02:01=%1感觉自己内心清澈,心静如水~
+02:01=%1 以为自己是潜水艇!
 ; 02:01=%1 mimics the Titanic!
-02:01=%1想看波~~波~~
+02:01=%1 学泰坦尼克去了!
 ; 02:01=%1 swims like a stone!
-02:01=%1想在水下淫出一首好湿!
+02:01=%1 石沉大海!
 ;02:01=%1 checks out the deep end
-02:01=%1说凤姐在水下等她呢。。。
+02:01=%1 说要去检查深水区
 ;02:01=%1 goes glug glug glug
-02:01=%1 :菠萝菠萝蜜得隆东强~
-; 02:01=%1 goes splash
-02:01=芭蕉桑~你快醒醒吧~ 
-; 02:01=%1 forgot his armbands
-02:01=阿西BUG~!%1杯具了!
+02:01=%1 :“咕噜咕噜咕噜……”
+;02:01=%1 goes splash
+02:01=%1 栽入水花里
+;02:01=%1 forgot his armbands
+02:01=%1 忘记了戴臂章
 ;02:01=%1 really should have taken swimming lessons
-02:01=%1的遗言:信春哥得永生!
+02:01=%1 真的该去学游泳的
 ;02:01=%1 left his surfboard at home
-02:01=不给力啊!老湿!
+02:01=%1 把救生圈忘家了
 ;02:01=%1 is washed up
-02:01=%1庆幸自己没掉马桶里!
+02:01=%1 冲走了
 ;02:01=%1 is one soggy hog
-02:01=%1生前是个拳湿~~
+02:01=%1 湿掉了
 ;02:01=%1 forgot to bring his life jacket
-02:01=我擦泪!下水前%1忘了脱内裤!
+02:01=%1 忘记带救生衣了
 ;02:01=%1 goes splish splash splish
-02:01=我嘞个去!%1怎么穿着内裤就掉下去了~
+02:01=%1 实现了水上飘,身后一片水花荡漾
 ;02:01=%1 is sleeping with the fishes
-02:01=%1看到美人鱼在脱衣服~
+02:01=%1 将会和鱼睡在一起
 ;02:01=%1 thinks the water physics suck in this game
-02:01=%1认为这次元还真是个不毛之地啊!
+02:01=%1 认为这游戏的设定糟糕透了
 ;02:01=%1 looks thirsty
-02:01=这次元怎么连根毛都没有~
+02:01=%1 好像很渴
 ;02:01=the sea claims %1
-02:01=雅买歹~~(河蟹)
+02:01=大海吞没了 %1
 ;02:01=%1 is lost at sea
-02:01=%1宁愿自我河蟹~~
+02:01=%1 在海上迷失了
 ;02:01=%1 should have brought his scuba gear
-02:01=水表示鸭梨很大~~
+02:01=%1 应该要带潜水工具的
 ;02:01=%1 gets a burial at sea
-02:01=%1,春哥要你
+02:01=%1 享受到了海葬待遇
 ;02:01=%1 has that sinking feeling
-02:01=%1曾哥在水下唱“狮子座”
+02:01=%1 觉得自己在下沉
 ;02:01=%1 is practicing his backstroke
-02:01=%1的内裤是粉红色的哦!
+02:01=%1 终于能实践自己的游泳理论了
 ;02:01=%1 goes in search of the Titanic
-02:01=水下竟然有神兽!
+02:01=%1 去泰坦尼克号寻宝了
 ;02:01=%1 is not Jesus
-02:01=%1正在观看河蟹狂吃草泥马~ 
+02:01=很遗憾 %1 不是耶稣
 ;02:01=%1 is finding Nemo
-02:01=%1觉得陆地上房价太高了
+02:01=%1 正在寻找Nemo
 ;02:01=%1 springs a leak
-02:01=%1表示鸭梨很大~
-;02:01=%1 has tha
-02:01=%1想去看凤姐的内裤颜色~
+02:01=%1 钻入了一个水洼
 ;02:01=You've gotta wonder how many hogs are down there
-02:01=你会知道出师未捷身先死的八戒在下面等你呢
+02:01=你会知道海底还会有多少同伴的
 ;02:01=%1 makes the ocean slightly higher
 02:01=%1 让海平面高了那么一点, 就一点
 ;02:01=%1 didn't enlist in the Navy
-02:01=%1害怕城管来抓他~!
+02:01=很明显 %1 没在海军服役过
 ;02:01=%1 is doing his impersonation of a dead fish
-02:01=菲律宾警察营救%1失败~
+02:01=%1 其实是在模仿死鱼啦
 ;02:01=At least you didn't go down the toilet, %1
-02:01=%1撅着个腚飞起来啦~
+02:01=还好 %1 你不是掉进了厕所
 ;02:01=Sonic couldn't swim and neither can %1
-02:01=海底有个如意按摩棒~~ 
+02:01=索尼克不能游泳, %1 也一样
 ;02:01=%1 wants to play Ecco the dolphin
-02:01=%1想当水下波霸~!
+02:01=%1 想玩海底漫步
 ;02:01=%1 has gone to visit Aquaria
-02:01=%1被气得忿忿儿的!
+02:01=%1 去水族馆报到了
 ;02:01=%1 has found the lost city of Atlantis
-02:01=%1被爆菊了,要到水下清洗一下!
+02:01=%1 找到了传说中的亚特兰蒂斯城
 ;02:01=%1 aims for the lead role in Bioshock 3
-02:01=%1华丽丽的掉下去啦~
+02:01=%1 的目的是为了在生化奇兵3中起带头作用
 ;02:01=Your doggy paddle could use a little work, %1
-02:01=%1实在是太V5啦!连光腚总菊都拿他没辙!
+02:01=狗爬式会有用的, %1
 ;02:01=%1 should have brought a jet ski
-02:01=%1还没来得及吐槽!阿西BUG!
+02:01=%1 竟然没带摩托艇
 ;02:01=%1 doesn't like watersports
-02:01=%1的伪娘气质还没表现出来呢
+02:01=%1 不喜欢水上运动
 ;02:01=%1 is forever blowing bubbles
-02:01=%1落水时的体位亮了~
+02:01=%1 学会了绝技: 神风吹泡泡
 ;02:01=%1 is short of a raft
-02:01=%1被天朝屏蔽了~
+02:01=%1 腿太短了
 ;02:01=%1 thinks salt water is good for the skin
-02:01=%1认为天朝实在是个伟大的国度
+02:01=%1 认为盐水对皮肤有好处
 ;02:01=%1 gets salt water in his wounds
-02:01=%1大喊:不给力啊,你个白痴老湿!
+02:01=%1 的伤口沾上了盐水
 ;02:01=%1 has walked the plank
-02:01=太不给力啦,老湿!
+02:01=%1 错过了那块木板
 ;02:01=%1 has a bath
-02:01=这游戏不带感啊!
+02:01=%1 洗澡去了
 ;02:01=%1 is wet wet wet
-02:01=亮点永远都在最后
+02:01=%1 全身是水
 ;02:01=%1 gets his quills wet
-02:01=%1把屁股弄湿了
+02:01=%1 把刚毛弄湿了
 ;02:01=It's Davy Jones' locker for %1
-02:01=天朝正在水下等%1呢
+02:01=深海阎王正在等待 %1
 
 ; Round starts
 ; 02:02=Let's fight!
+02:02=开战!
 ; 02:02=Armed and ready!
-02:02=开战!
 02:02=准备!
 ;02:02=Let's get ready to rumble!
 02:02=准备对轰!
 ;02:02=Let's get it on!
-02:02=让我们取得胜利!
+02:02=让我们得到胜利!
 ;02:02=Let's get this party started
 02:02=这个Party要开始了
 ;02:02=Last hog standing wins
-02:02=胜利属于信春哥的人
+02:02=胜利属于最后一个生还者
 ;02:02=Let's go!
 02:02=出发吧!
 ;02:02=Let's rock!
+02:02=起点
 ;02:02=Let's jam!
 ;02:02=It's beginning...
-02:02=开始了...
+02:02=开始了
 ;02:02=This is the start of something big
 02:02=这是一个伟大的开始
 ;02:02=Welcome to Hedgewars
-02:02=欢迎来到“刺猬杀”!
+02:02=欢迎来到刺猬大作战
 ;02:02=Welcome to the front lines
 02:02=欢迎来到前线
 ;02:02=Crush your enemies!
-02:02=目标:吃掉你的敌人!
+02:02=目标:粉碎你的敌人!
 ;02:02=May the best hog win
-02:02=胜利属于会打飞机的那只!
+02:02=祝愿胜利属于最厉害的刺猬!
 ;02:02=Victory or death
 02:02=胜利或死亡
 ;02:02=To the victor goes the spoils
 02:02=战利品只属于胜利者
 ;02:02=Losing is not an option
-02:02=加嘞个油!老湿不能输啊!
+02:02=字典里面应该没有"输"这个字的
 ;02:02=Cry havoc! Let loose the hogs of war!
-02:02=哭吧! 这是刺猬的
+02:02=放声哭吧! 这是刺猬的战争!
 ;02:02=Hedgewars, brought to you by Hedgewars.org
-02:02=欢迎来到刺猬大作战, 官方网站 Hedgewars.org
+02:02=欢迎来到刺猬大作战, Hedgewars.org 为你呈现
 02:02=GL HF
 ;02:02=Just count yourself lucky you're not up against Tiyuri
-02:02=你看你多幸运你不是在对战 Tiyuri
+02:02=你看你多幸运不是在对战 Tiyuri
 ;02:02=Just count yourself lucky you're not up against unC0Rr
-02:02=你看你多幸运你不是在对战 unC0Rr
+02:02=你看你多幸运不是在对战 unC0Rr
 ;02:02=Just count yourself lucky you're not up against Nemo
-02:02=你看你多幸运你不是在对战 Nemo
+02:02=你看你多幸运不是在对战 Nemo
 ;02:02=Just count yourself lucky you're not up against Smaxx
-02:02=你看你多幸运你不是在对战 Smaxx
+02:02=你看你多幸运不是在对战 Smaxx
 ;02:02=Just count yourself lucky you're not up against Jessor
-02:02=你看你多幸运你不是在对战 Jessor
+02:02=你看你多幸运不是在对战 Jessor
 ;02:02=Give it your all!
 02:02=展现你的一切吧!
 ;02:02=The losers do the cleaning up!
-02:02=输的要去吻凤姐!
+02:02=输的要罚扫厕所!
 ;02:02=Let the fight of the millenium begin
 02:02=宇宙之战开始了
 ;02:02=Let the fight of the century begin
@@ -350,7 +351,7 @@
 ;02:02=Let the fight of the day begin
 02:02=本日最强入围赛开始了
 ;02:02=Let the fight of the hour begin
-02:02=我们能狂玩一小时!
+02:02=我们能战一小时!
 ;02:02=Do your best!
 02:02=诸君努力!
 ;02:02=Destroy the enemy!
@@ -358,30 +359,31 @@
 ;02:02=Good luck
 02:02=祝你好运
 ;02:02=Have fun~
-02:02=玩儿蛋去~
+02:02=开心玩~
 ;02:02=Fight the good fight
-02:02=要赢!
+02:02=漂亮的战斗
 ;02:02=Fight dirty
-02:02=不择手段也行!
+02:02=不择手段
 ;02:02=Fight with honour
-02:02=请注意文明用语
+02:02=满载荣誉而战
 ;02:02=Don't give up
-02:02=出师未捷身先死的教练: 别放弃
+02:02=教练告诉你: 别放弃
 ;02:02=Never surrender
 02:02=永不屈服!
 ;02:02=Rock 'em and sock 'em!
-02:02=刺猬杀!杀!杀!
+02:02=蹂虐对手
 ;02:02=Let the fragfest begin!
 02:02=积分赛开始!
 ;02:02=I hope you're ready for a tussle!
 02:02=你准备好恶战了么?
-02:02=Go Go Go!
+;02:02=Go Go Go!
+02:02=上!
 ;02:02=Hedgehogs advance!
-02:02=刺猬历险记!
+02:02=刺猬向前冲!
 ;02:02=Bring it to them!
 02:02=炸飞他们!
 ;02:02=Have no fear!
-02:02=勇敢前进!
+02:02=无所畏惧!
 ;02:02=Be brave and conquer
 02:02=敢于征服!
 
@@ -397,33 +399,33 @@
 ;02:05=Medic!
 02:05=急救包!
 ;02:05=First aid from the skies!
-02:05=最NB的东西空运来了!
+02:05=救援物资空运来了!
 ;02:05=A health pack for you
 02:05=你的医疗包到了
 ;02:05=Good health.. in box form!
-02:05=凤姐的内裤就在那箱子里!
+02:05=生命就在那箱子里!
 ;02:05=The doctor calls
-02:05=人在江湖飘啊,谁能不挨刀啊!PIA~PIA~
+02:05=医生的紧急呼叫
 ;02:05=Fresh band-aids!
 02:05=新鲜创可贴!
 ;02:05=This will make you feel better
-02:05=吃了这个感觉像在吻春哥...
+02:05=吃了这个感觉会好些的...
 ;02:05=A Hi-Potion! Whoops wrong game
-02:05=伟哥!呃。。。走错地方了
+02:05=兴奋剂!呃。。。走错地方了
 ;02:05=A pick-me-up!
 02:05=万金油!
 ;02:05=Grab it
-02:05=就是它了!
+02:05=捉住它
 ;02:05=A healthy snack
-02:05=春哥的吻如期而至~
+02:05=健康食品
 ;02:05=A remedy to pain
-02:05=这货不是药包!这货不是药包!貌似这货就是药包。。。
+02:05=止痛饼来了
 ;02:05=Correct Dosage: as many as you can find!
-02:05=凤姐诚心提醒:这东西很管用
+02:05=使用方法: 吃得越多越好
 ;02:05=Urgent delivery
-02:05=请小心使用
+02:05=紧急物资
 ;02:05=Supplies!
-02:05=里面没有TT
+02:05=补给!
 
 ; New ammo crate
 ; 02:06=More weapons!
@@ -431,79 +433,79 @@
 ;02:06=Reinforcements!
 02:06=增援!
 ;02:06=Lock and load!
-02:06=凤姐的及时雨!
+02:06=准备!
 ;02:06=I wonder what weapon is in there?
-02:06=尿布湿...
+02:06=我要的那个会在的吧...
 ;02:06=Supplies!
-02:06=也许有伟哥哦!
+02:06=补给!
 ;02:06=What could be inside?
 02:06=里面会有啥呢?
 ;02:06=Christmas comes early in Hedgewars
-02:06=刺猬杀特别派送~
+02:06=刺猬大作战每天都是圣诞节
 ;02:06=A present!
-02:06=今年过节不收礼!
+02:06=礼物送到!
 ;02:06=Special delivery!
-02:06=特快专递,收件人付费!
+02:06=特快专递!
 ;02:06=It was a nightmare getting this through customs
-02:06=“肉山大魔王”来了
+02:06=本局的噩梦来了
 ;02:06=Destructive toys from the heavens
-02:06=吃了这个可以找凤姐
+02:06=玩具从天堂掉下来了
 ;02:06=Warning! Contents Volatile
-02:06=警告! 小心喷鼻血~
+02:06=警告! 内含危险物品
 ;02:06=Pick it up or blow it up, choice is yours
-02:06=拿走或爆掉, 随你
+02:06=拿走或打爆, 随你
 ;02:06=Goodies!
-02:06=貌似没有凤姐的内裤!
+02:06=好玩意儿!
 ;02:06=Mmmmm Ammo
 02:06=弹药!!!!
 ;02:06=A box of destructive power
-02:06=潘朵拉的宝盒
+02:06=潘朵拉之盒
 ;02:06=Airmail!
-02:06=航空邮件,收件人付费!
+02:06=天降之物!
 ;02:06=Whatever's in that box, it ain't pizza
-02:06=无论里面是啥, 那肯定不会是小野妹子
+02:06=无论里面是啥, 那肯定不会是软妹子
 ;02:06=Get it!
 02:06=拿走它!
 ;02:06=Weapon drop incoming
 02:06=武器掉下来了!
 ;02:06=Don't let the enemy grab that!
-02:06=别让平田君拿了!
+02:06=别让敌人拿了!
 ;02:06=Shiny new toys!
-02:06=把这玩意装备上!
+02:06=新玩具!
 ;02:06=A mysterious box!
-02:06=迷一般的玩意...
+02:06=谜的箱子...
 
 ; New utility crate
 ; 02:07=Tooltime!
 02:07=工具箱!
 ;02:07=This could come in handy...
-02:07=这货不是工具箱!貌似这货就是工具箱...
+02:07=这可能派上用场
 ;02:07=Utilities!
 02:07=工具!
 ;02:07=Utilise this box
 02:07=工具在这里!
 ;02:07=Watch out below
-02:07=令人蛋疼的东西!
+02:07=快看这里!
 ;02:07=More utilities!
 02:07=更多选择更多欢笑, 尽在工具包
 ;02:07=Tools for you!
-02:07=爆菊用的, 送给你!
+02:07=一堆工具, 送给你!
 ;02:07=This should be good!
-02:07=菊花表示压力很大...
+02:07=这看见起来蛮好...
 ;02:07=Use this wisely
 02:07=使用这个才是明智的选择
 ;02:07=Ooo this box is heavy
-02:07=这东西让所有刺猬为之一震
+02:07=好重...好重...
 ;02:07=You might need this
 02:07=会有用的
 
 ; Hog (%1) skips his turn
 ; 02:08=%1 is sooo boring...
-02:08=%1太无聊了...
+02:08=%1 太无聊了...
 ;02:08=%1 couldn't be bothered
-02:08=%1要去找凤姐!
+02:08=%1 不想被打扰!
 ;02:08=%1 is one lazy hog
-02:08=%1太懒了
+02:08=%1 太懒了
 ;02:08=%1 is thoughtless
 02:08=%1 太轻率了
 ;02:08=%1 gave up
@@ -571,163 +573,89 @@
 ;02:08=%1 has fallen asleep
 02:08=%1 睡着了
 
-; Hog (%1) skips his turn
-; 02:08=%1 is sooo boring...
-02:08=%1 太无聊了...
-;02:08=%1 couldn't be bothered
-02:08=%1要去找凤姐!
-;02:08=%1 is one lazy hog
-02:08=%1找春哥要签名去了!
-;02:08=%1 is thoughtless
-02:08=%1吻凤姐去
-;02:08=%1 gave up
-02:08=%1阿西BUG!
-;02:08=You snooze you lose, %1
-02:08=%1无可奈何!
-;02:08=%1 shamelessly skips
-02:08=%1无耻的跳过了本回合
-;02:08=%1 is really lazy
-02:08=%1貌似长痔疮了!
-;02:08=%1 needs a little more motivation
-02:08=%1觉得自己需要伟哥
-;02:08=%1 is a pacifist
-02:08=%1脱了去
-;02:08=%1 has a breather
-02:08=%1正在吃饭呢
-;02:08=%1 has a rest
-02:08=%1需要食物
-;02:08=%1 chills out
-02:08=%1想要爱爱了
-;02:08=%1 has no faith in his own abilities
-02:08=%1做啥都没信心了
-;02:08=%1 decides to do nothing at all
-02:08=%1决定找凤姐一块玩
-;02:08=%1 lets the enemy destroy itself
-02:08=%1认为凤姐会来杀敌的
-;02:08=%1 would be terrible at parties
-02:08=%1撅着屁股摆体位
-;02:08=%1 hides out
-02:08=%1会隐身术
-;02:08=%1 has decided to pass on this opportunity
-02:08=%1已经决定放弃这个机会
-;02:08=%1 decides the best thing he can do is...nothing
-02:08=%1决定他现在最应该做的是......去找凤姐
-;02:08=%1 is a big wuss
-02:08=%1真是太蠢了!
-;02:08=Buck Buck Buck, %1 is a chicken
-02:08=%1找个内裤来玩玩
-;02:08=%1 is looking a little yellow
-02:08=%1看来有点印堂发黑
-;02:08=%1 is a coward!
-02:08=%1是圣德太子!
-;02:08=%1 is waiting for sudden death
-02:08=%1在等待突然死亡模式
-;02:08=%1 is not the fighting type
-02:08=%1妥妥儿的
-;02:08=%1 is reconsidering his purpose in life
-02:08=%1正在思考凤姐内裤的颜色
-;02:08=%1 was never much of a good shot anyway
-02:08=%1从来就没玩好过
-;02:08=%1 didn't want to join the army in the first place
-02:08=%1不想玩这游戏
-;02:08=Stop wasting our time, %1
-02:08=别浪费时间了! %1
-;02:08=I'm dissapointed in you, %1
-02:08=拳湿对你失望了,平田君
-;02:08=Come on, you can do better than that %1
-02:08=%1我嘞个去!
-;02:08=%1's will has broken
-02:08=%1正在打飞机
-;02:08=%1 apparently has better things to do
-02:08=%1显然有更好的事情等着做
-;02:08=%1 is scared stiff
-02:08=%1怕刺激
-;02:08=%1 has fallen asleep
-02:08=%1睡着了
-
 ; Hog (%1) hurts himself only
 ; 02:09=%1 should practice aiming!
-02:09=%1该练练瞄准了!
+02:09=%1 该练练瞄准了!
 ; 02:09=%1 seems to hate himself.
-02:09=%1似乎看自己很不爽。
+02:09=%1 似乎看自己很不爽。
 ; 02:09=%1 is standing on the wrong side!
-02:09=%1在表演狗吃屎!
+02:09=%1 在表演乌龙!
 ; 02:09=%1 makes like an emo
-02:09=%1以为自己是拳湿
+02:09=%1 以为自己无敌
 ; 02:09=%1 was holding his weapon the wrong way around
-02:09=%1好像把武器拿错方向了
+02:09=%1 好像把武器拿错方向了
 ;02:09=%1 is a little sadistic
-02:09=%1更喜欢凤姐来玩
+02:09=%1 有点施虐狂
 ;02:09=%1 is a masochist
-02:09=%1是更喜欢春哥来玩
+02:09=%1 是受虐狂
 ;02:09=%1 has no instinct of self-preservation
-02:09=%1根本不会自我保护
+02:09=%1 根本不会自我保护
 ;02:09=%1 messed up
-02:09=%1吐槽了
+02:09=%1 乱套了
 ;02:09=%1 screwed up
-02:09=%1体位搞错了
+02:09=%1 搞砸了
 ;02:09=That was a poor shot, %1
-02:09=%1这一发真坑爹的!
+02:09=%1 这一发真渣
 ;02:09=%1 is a little too careless with dangerous weapons
-02:09=%1太不小心用那些危险的玩意了
+02:09=%1 太不小心用那些危险的玩意了
 ;02:09=%1 should consider a change of career
-02:09=%1正在考虑玩凤姐
+02:09=%1 正在考虑转职
 ;02:09=Worst. Shot. Ever!
-02:09=值啦! 值啦! 太值啦!
+02:09=更差! 最差! 非常差!
 ;02:09=No no no %1, you shoot at the ENEMY!
-02:09=%1, 你要打敌人!不要打飞机!
+02:09=No no no %1, 你要打敌人!
 ;02:09=%1 should only be destroying the enemy
-02:09=%1应该消灭宿敌啊
+02:09=%1 应该消灭敌人才对
 ;02:09=%1 moves one step closer to suicide
-02:09=%1需要吃蘑菇了
+02:09=%1 正在走向自杀
 ;02:09=%1 aids the enemy
-02:09=%1感觉自己蛋疼
+02:09=%1 帮助敌人
 ;02:09=That was stupid %1
-02:09=%1感觉自己菊紧
+02:09= %1 是笨蛋
 ;02:09=%1 lives by the mantra of "no pain, no gain"
-02:09=%1突然有点乳酸
+02:09=%1 贯彻“不付出,何收获“的原则
 ;02:09=%1 is confused
-02:09=%1貌似吃错药了
+02:09=%1 思维混乱了
 ;02:09=%1 hurt itself in its confusion
-02:09=%1吃错药而打错人
+02:09=%1 在混乱中攻击自己
 ;02:09=%1 has a knack for embarrassing himself
-02:09=%1感觉菊花鸭梨很大
+02:09=%1 正在为自己尴尬
 ;02:09=%1 is a klutz!
-02:09=%1要受不了啦
+02:09=%1 就是一个笨蛋!
 ;02:09=%1 is clumsy
-02:09=%1实在是笨到水了
+02:09=%1 笨手笨脚的
 ;02:09=%1 shows the enemy what he's capable of
-02:09=%1真是太杯具了
+02:09=%1 展示了自己的能力
 ;02:09=%1 can't be expected to be perfect all the time
-02:09=%1感觉自己的人生就一茶几
+02:09=%1 不能每次都完美
 ;02:09=Don't worry %1, pobody's nerfect
-02:09=杯具啊!
+02:09=不用担心 %1 , 人都不是完美的
 ;02:09=%1 totally did that on purpose
-02:09=爆菊啦!
+02:09=%1 这么做真的是有目的
 ;02:09=I won't tell anyone if you don't, %1
-02:09=脑仁疼啊!
+02:09=我不会把 %1 的事情到处说的
 ;02:09=How embarrassing!
-02:09=内裤找不到啦,害羞!
+02:09=何等的失态!
 ;02:09=I'm sure nobody saw that %1
-02:09=这游戏是谁发明的,画个圈圈诅咒他。。。
+02:09=保证,决没人看到 %1 做什么
 ;02:09=%1 needs to review his field manual
-02:09=%1不看说明书就上场
+02:09=%1 需要复习说明书
 ;02:09=%1's weapon clearly malfunctioned
-02:09=%1被谁爆菊了吧
+02:09=%1 的武器很明显坏了
 
 ; Hog shot an home run (using the bat and another hog)
 ; 02:10=Home Run!
 02:10=全垒打!
 ; 02:10=A bird, a plane, ...
-02:10=看!灰机!来打灰机啊!...
+02:10=一只鸟,一架飞机,...
 ; 02:10=That one is out!
-02:10=太差劲了,出局!
+02:10=那一位出界了!
 
 ; Hog (%1) has to leave (team is gone)
-02:11=%1必须找凤姐上床了
-02:11=%1玩的过火了,找犀利哥替代一下
-02:11=发射!这位已经被射出去。。。
-02:11=%1必须颠菜了
+02:11=%1 必须上床了
+02:11=%1 玩的过火了,休息一下
+02:11=发射!这位已经被送出去
+02:11=%1 必须走了
 
 ; Weapon Categories
 03:00=定时手雷
@@ -743,11 +671,11 @@
 03:10=BOOM!
 03:11=咚!
 03:12=武术
-03:13=UNUSED
+03:13=未使用
 03:14=移动工具
 03:15=空投打击
 03:16=空投打击
-03:17=钻孔工具
+03:17=打洞工具
 03:18=工具
 03:19=移动工具
 03:20=动作
@@ -755,7 +683,7 @@
 03:22=叫我主人!
 03:23=武术 (真的!)
 03:24=蛋糕不是谎言!
-03:25=儿童不宜
+03:25=化妆的诱惑
 03:26=果汁手雷
 03:27=烫手手雷
 03:28=弹道武器
@@ -772,10 +700,9 @@
 03:39=移动工具
 03:40=燃烧弹
 ;03:41=Huge fan of Squawks
-03:41=强烈的震撼
+03:41=噪音
 ;03:42=I'm making a note here...
-03:42=我将名垂青湿...
-
+03:42=我将在此记录...
 ; the misspelled "Beethoven" is intentional (-> to beat)
 ;03:43=Performing Beathoven's deadly sonata
 03:43=特殊的圣诞表演
@@ -789,7 +716,10 @@
 03:47= 呆在有利的地方!
 ;03:48=It's Hammer time!
 03:48=大锤威武!
-
+;03:49=Does what you guess
+03:49=尽情猜想
+;03:50=Moles fan
+03:50=地道战
 
 ; Weapon Descriptions (use | as line breaks)
 04:00=使用简单的手榴弹攻击敌人.|定时器倒数到0就会爆炸.|1-5: 设定定时器|攻击键: 按住蓄力.
@@ -810,9 +740,9 @@
 04:15=呼叫一架飞机轰炸你的敌人.|左/右方向键: 决定攻击方向|光标: 选定目标
 04:16=呼叫一架飞机投下大量地雷.|左/右方向键: 决定攻击方向|光标: 选定目标
 04:17=需要个安全的地方? 使用喷灯为你挖掘一条安全的隧道!|攻击键: 开始/停止挖掘
-04:18=钻洞器还不够?还要个更安全的地方?|建造若干条大梁挡住吧.|左/右方向键: 选择梁的方向|光标: 建造
+04:18=喷灯还不够?还要个更安全的地方?|建造若干条大梁挡住吧.|左/右方向键: 选择梁的方向|光标: 建造
 04:19=适当的时候撤退是比所有的攻击|更安全的选择|光标: 选择传送目标
-04:20=可以让你更换当前使用的刺猬.|攻击键: 启动切换功能|TAB:切换刺猬
+04:20=可以让你更换当前使用的刺猬.|攻击键: 启动切换功能
 04:21=用炮弹发射器发射一个手榴弹样|的东西. 在爆炸之后会裂开成小块|攻击键: 全力发射
 04:22=这不只是女王才用的东西!|这鞭子能解决很多问题, 比如说那些|喜欢站在悬崖边上的小屁孩.|攻击键: 鞭打你面前的一切东西
 04:23=自杀式炸弹袭击向来好用!|用你的一条命攻击直线上的一切东西并爆炸.|攻击键: 启动自杀性攻击
@@ -834,20 +764,21 @@
 04:39=驾驶飞碟可以飞到地图上的任何角落.|不过这个东西连发明者都认为很难用.|攻击键: 激活|上/左/右方向键: 向某方向飞|前跳:攻击敌人
 04:40=把地面填满汽油然后....|攻击键: 按住蓄力.
 ;04:41=自然的力量要盖过飞盘。|带着刺猬的鸟竟然毫不犹豫的空中下蛋!|攻击键: 激活和放蛋|上/左/右方向键: 向某方向飞
-;04:42=这玩意可以,|or your weaponry between two points on the|terrain.|Use it wisely and your campaign will be a...|HUGE SUCCESS!|Attack: Shoot a portal|Switch: Cycle portal colours
+;04:42=This portable portal device is capable|of instantly transporting you, your enemies,|or your weaponry between two points on the|terrain.|Use it wisely and your campaign will be a...|HUGE SUCCESS!|Attack: Shoot a portal|Switch: Cycle portal colours
 04:42=移动传送装置|迅速传输自己或者敌人或者|你的武器,直接连接|地表的两个不同位置。|用的聪明那么。。。|攻击键: 发射一个传送点|切换键: 改变颜色
 ;04:43=Make your musical debut an explosive success!|Drop a piano from the heavens, but beware...|someone needs to play it, and that may cost you|your life!|Cursor: Select target region|F1-F9: Play the piano
 04:43=音乐细胞的迸发!|钢琴从天堂降落,带|着演奏者最终回归天堂|光标: 选择目标区域|F1-F9:演奏钢琴
-04:44=这货不是奶酪!貌似是生化武器!|爆炸只有一次,带来的毒害是深远的!|1-5: 设定定时器|攻击键: 按住蓄力
+04:44=这不是奶酪!而是生化武器!|爆炸只有一次,带来的毒害是深远的!|1-5: 设定定时器|攻击键: 按住蓄力
 ;04:45=All those physics classes have finally |paid off, launch a devastating Sine |wave at your foes. |Watch out, this weapon packs quite a kick. (This weapon is incomplete)|Attack: Shoot
 04:45=全部物理阶级最终|转化为正弦波动|留心,力是相对的|攻击键: 发射
 ;04:46=Cover your foes with sizzling liquid flame.|Heartwarming!|Attack: Activate|Up/Down: Continue aiming|Left/Right: Modify spitting power
 04:46= 用满腔的火焰虐待你的对手吧。|攻击键: 激活|上/下方向键: 改变攻击方向|左/右方向键: 调整喷射距离
 ;04:47=Double the fun with two spiky, sneaky, sticky mines.|Set up a chain reaction or defend yourself (or both!)|Attack: Hold to shoot with more power (twice)
-04:47=两次机会双重乐趣,隐蔽且固定的地雷。|利用脑力造成连锁反应!|攻击键: 按住蓄力(两发)
+04:47=两次机会双重乐趣,隐蔽且黏着的地雷。|利用脑力造成连锁反应!|攻击键: 按住蓄力(两发)
 ;04:48=Why should the moles get all the abuse?|Wacking a hog can be just as fun! A good|blow from this hammer will shave off one|third of a hog's health and plunge them|underground.|Attack: Activate
-04:48=痛扁刺猬:用力一锤|将使中者镶入地表,削减它生命值的1/3.|攻击键: 击打
-
+04:48=痛扁刺猬:用力一锤|将使中者镶入地表,削减它健康的1/3.|攻击键: 打
+;04:49=Resurrect your friends!|But beware that this also resurrects your foes.|Attack: Keep attack pressed to resurrect slowly|Up: Accelerate resurrection
+04:49=复苏|注意,一视同仁|使用: 按住使用键|上: 提高速率
 
 ; Game goal strings
 ;05:01=The following rules apply
@@ -859,7 +790,7 @@
 ;05:04=Invulnerability: Hogs are (almost) invulnerable
 05:04=无敌: 刺猬不受伤害
 ;05:05=Vampirism: Hogs will be healed for the damage dealt
-05:05=吸血: 敌人失去的就是我得到的
+05:05=吸血: 敌人失去的就是我的
 ;05:06=Karma: Hogs will be damaged for the damage dealt
 05:06=因果效应: 伤害有多少,自己都知道
 ;05:07=Protect the King: Don't let your king die!|Place the King: Pick a protected starting point for your King
@@ -880,3 +811,13 @@
 05:14=地雷定时器: 0-3 秒起爆
 ;05:15=Damage Modifier: All weapons will do %1% damage
 05:15=伤害修正: 武器伤害使用 %1% 修正值
+;05:16=Health of all hogs is reset on end of turn
+05:16=所有活着的刺猬回合结尾时彻底恢复健康
+;05:17=AI hogs respawn on death
+05:17=AI刺猬即时复活
+;05:18=Unlimited Attacks
+05:18=无限攻击法则
+;05:19=Weapons are reset on end of turn
+05:19=武器在回合结束时重置
+;05:20=Weapons are not shared between hogs
+05:20=刺猬的武器无法分享
--- a/share/hedgewars/Data/Maps/Basketball/map.lua	Thu Dec 09 22:50:16 2010 +0100
+++ b/share/hedgewars/Data/Maps/Basketball/map.lua	Thu Dec 09 22:51:07 2010 +0100
@@ -111,7 +111,7 @@
 end
 
 function onGameStart()
-	ShowMission(loc(caption), loc(subcaption), loc(goal), -amBaseballBat, 0);
+	ShowMission(loc(caption), loc(subcaption), loc(goal), -amBaseballBat, 0)
 	started = true
 end
 
--- a/share/hedgewars/Data/Missions/Campaign/01#Boot Camp.lua	Thu Dec 09 22:50:16 2010 +0100
+++ b/share/hedgewars/Data/Missions/Campaign/01#Boot Camp.lua	Thu Dec 09 22:51:07 2010 +0100
@@ -250,12 +250,12 @@
 		
 	elseif progress > 0 and ((TurnTimeLeft == 0) or (GetHealth(player) ~= player_health) or (GetHealth(instructor) ~= instructor_health)) then
 		progress = -1
-		ShowMission(loc(caption), loc(subcaption), loc(failed), -amBazooka, 0);
+		ShowMission(loc(caption), loc(subcaption), loc(failed), -amBazooka, 0)
 		time_start = GameTime
 		PlaySound(sndNooo)
 		TurnTimeLeft = 0
 	elseif GameTime == 0 then
-		ShowMission(loc(caption), loc(subcaption), loc(goals[0]), -amBazooka, 0);
+		ShowMission(loc(caption), loc(subcaption), loc(goals[0]), -amBazooka, 0)
 		TurnTimeLeft = 60000
 	elseif GameTime == 2500 then
 		FollowGear(instructor)
@@ -269,7 +269,7 @@
 		progress = 1
 		TurnTimeLeft = 10000
 	elseif progress == 1 then
-		local x, y = GetGearPosition(player);
+		local x, y = GetGearPosition(player)
 		if x < player_start_x - 50 then
 			progress = 2
 			FollowGear(instructor)
@@ -277,7 +277,7 @@
 			TurnTimeLeft = 10000
 		end
 	elseif progress == 2 then
-		local x, y = GetGearPosition(player);
+		local x, y = GetGearPosition(player)
 		if x > player_start_x then
 			progress = 3
 			FollowGear(instructor)
@@ -291,7 +291,7 @@
 		HogTurnLeft(player, true)
 		TurnTimeLeft = 10000
 	elseif progress == 4 then
-		local x, y = GetGearPosition(player);
+		local x, y = GetGearPosition(player)
 		if y < player_start_y then
 			progress = 5
 			FollowGear(instructor)
@@ -308,15 +308,15 @@
 	elseif progress == 5 and (time_start + 7500 == GameTime) then
 		FollowGear(instructor)
 		HogSay(instructor, loc(drill[8]), SAY_SHOUT)
-		ShowMission(loc(caption), loc(subcaption), loc(goals[1]), 1, 0);
+		ShowMission(loc(caption), loc(subcaption), loc(goals[1]), 1, 0)
 		target = AddGear(target_x, target_y, gtTarget, 0, 0, 0, 0)
 		TurnTimeLeft = 60000
 	elseif progress == 5 and (time_start + 10000 == GameTime) then
 		FollowGear(target)
 	elseif progress == 6 then
 		progress = 7
-		ShowMission(loc(caption), loc(subcaption), loc(goals[2]), 0, 0);
-		PlaySound(sndVictory);
+		ShowMission(loc(caption), loc(subcaption), loc(goals[2]), 0, 0)
+		PlaySound(sndVictory)
 		time_start = GameTime
 	elseif progress == 7 and (time_start + 2500 == GameTime) then
 		EndGame()
@@ -336,14 +336,14 @@
 	
 	AddTeam(loc(teamnames[0]), teamcolor, "Simple", "Island", "Default")
 	player = AddHog(loc(hognames[0]), 0, player_health, "NoHat")
-	SetGearPosition(player, player_start_x, player_start_y);
+	SetGearPosition(player, player_start_x, player_start_y)
 	
 	AddTeam(loc(teamnames[1]), teamcolor + 1, "Simple", "Island", "Default")
 	instructor = AddHog(loc(hognames[1]), 0, instructor_health, "NoHat")
 	SetGearPosition(instructor, player_start_x + 100, player_start_y)
 	HogTurnLeft(instructor, true)
 
-	FollowGear(player);
+	FollowGear(player)
 end
 
 function onAmmoStoreInit()
--- a/share/hedgewars/Data/Missions/Training/Bazooka.lua	Thu Dec 09 22:50:16 2010 +0100
+++ b/share/hedgewars/Data/Missions/Training/Bazooka.lua	Thu Dec 09 22:51:07 2010 +0100
@@ -174,7 +174,7 @@
 	AddTeam(loc(teamname), 14483456, "Simple", "Island", "Default")
 	-- And add a hog to it
 	player = AddHog(loc(hogname), 0, 1, "NoHat")
-	SetGearPosition(player, 1960, 1160);
+	SetGearPosition(player, 1960, 1160)
 end
 
 -- This function is called when the round starts
@@ -190,7 +190,7 @@
 	-- A negative icon parameter (-n) represents the n-th weapon icon
 	-- A positive icon paramter (n) represents the (n+1)-th mission icon
 	-- A timeframe of 0 is replaced with the default time to show.
-	ShowMission(loc(caption), loc(subcaption), loc(goal), -amBazooka, 0);
+	ShowMission(loc(caption), loc(subcaption), loc(goal), -amBazooka, 0)
 end
 
 -- This function is called every game tick.
@@ -204,9 +204,9 @@
 	if TurnTimeLeft == 1 and score < score_goal then
 		game_lost = true
 		-- ... and show a short message.
-		ShowMission(loc(caption), loc(subcaption), loc(timeout), -amSkip, 0);
+		ShowMission(loc(caption), loc(subcaption), loc(timeout), -amSkip, 0)
 		-- How about killing our poor hog due to his poor performance?
-		SetHealth(player, 0);
+		SetHealth(player, 0)
 		-- Just to be sure set the goal time to 1 ms
 		time_goal = 1
 	end
@@ -253,7 +253,7 @@
 		else
 			if not game_lost then
 			-- Otherwise show that the goal was accomplished
-			ShowMission(loc(caption), loc(subcaption), loc(success), 0, 0);
+			ShowMission(loc(caption), loc(subcaption), loc(success), 0, 0)
 			-- Also let the hogs shout "victory!"
 			PlaySound(sndVictory)
 			-- Save the time left so we may keep it.
--- a/share/hedgewars/Data/Missions/Training/Shotgun.lua	Thu Dec 09 22:50:16 2010 +0100
+++ b/share/hedgewars/Data/Missions/Training/Shotgun.lua	Thu Dec 09 22:51:07 2010 +0100
@@ -174,7 +174,7 @@
 	AddTeam(loc(teamname), 14483456, "Simple", "Island", "Default")
 	-- And add a hog to it
 	player = AddHog(loc(hogname), 0, 1, "NoHat")
-	SetGearPosition(player, 2334, 1254);
+	SetGearPosition(player, 2334, 1254)
 end
 
 -- This function is called when the round starts
@@ -190,7 +190,7 @@
 	-- A negative icon parameter (-n) represents the n-th weapon icon
 	-- A positive icon paramter (n) represents the (n+1)-th mission icon
 	-- A timeframe of 0 is replaced with the default time to show.
-	ShowMission(loc(caption), loc(subcaption), loc(goal), -amShotgun, 0);
+	ShowMission(loc(caption), loc(subcaption), loc(goal), -amShotgun, 0)
 end
 
 -- This function is called every game tick.
@@ -204,9 +204,9 @@
 	if TurnTimeLeft == 1 and score < score_goal then
 		game_lost = true
 		-- ... and show a short message.
-		ShowMission(loc(caption), loc(subcaption), loc(timeout), -amSkip, 0);
+		ShowMission(loc(caption), loc(subcaption), loc(timeout), -amSkip, 0)
 		-- How about killing our poor hog due to his poor performance?
-		SetHealth(player, 0);
+		SetHealth(player, 0)
 		-- Just to be sure set the goal time to 1 ms
 		time_goal = 1
 	end
@@ -253,7 +253,7 @@
 		else
 			if not game_lost then
 			-- Otherwise show that the goal was accomplished
-			ShowMission(loc(caption), loc(subcaption), loc(success), 0, 0);
+			ShowMission(loc(caption), loc(subcaption), loc(success), 0, 0)
 			-- Also let the hogs shout "victory!"
 			PlaySound(sndVictory)
 			-- Save the time left so we may keep it.
--- a/share/hedgewars/Data/Missions/Training/SniperRifle.lua	Thu Dec 09 22:50:16 2010 +0100
+++ b/share/hedgewars/Data/Missions/Training/SniperRifle.lua	Thu Dec 09 22:51:07 2010 +0100
@@ -174,7 +174,7 @@
 	AddTeam(loc(teamname), 14483456, "Simple", "Island", "Default")
 	-- And add a hog to it
 	player = AddHog(loc(hogname), 0, 1, "Sniper")
-	SetGearPosition(player, 602, 1465);
+	SetGearPosition(player, 602, 1465)
 end
 
 -- This function is called when the round starts
@@ -190,7 +190,7 @@
 	-- A negative icon parameter (-n) represents the n-th weapon icon
 	-- A positive icon paramter (n) represents the (n+1)-th mission icon
 	-- A timeframe of 0 is replaced with the default time to show.
-	ShowMission(loc(caption), loc(subcaption), loc(goal), -amSniperRifle, 0);
+	ShowMission(loc(caption), loc(subcaption), loc(goal), -amSniperRifle, 0)
 end
 
 -- This function is called every game tick.
@@ -215,9 +215,9 @@
 	if TurnTimeLeft == 1 and score < score_goal then
 		game_lost = true
 		-- ... and show a short message.
-		ShowMission(loc(caption), loc(subcaption), loc(timeout), -amSkip, 0);
+		ShowMission(loc(caption), loc(subcaption), loc(timeout), -amSkip, 0)
 		-- How about killing our poor hog due to his poor performance?
-		SetHealth(player, 0);
+		SetHealth(player, 0)
 		-- Just to be sure set the goal time to 1 ms
 		time_goal = 1
 	end
@@ -381,7 +381,7 @@
 		else
 			if not game_lost then
 			-- Otherwise show that the goal was accomplished
-			ShowMission(loc(caption), loc(subcaption), loc(success), 0, 0);
+			ShowMission(loc(caption), loc(subcaption), loc(success), 0, 0)
 			-- Also let the hogs shout "victory!"
 			PlaySound(sndVictory)
 			-- Save the time left so we may keep it.