--- a/QTfrontend/hwform.cpp Tue Feb 26 20:26:49 2013 -0500
+++ b/QTfrontend/hwform.cpp Tue Feb 26 20:37:58 2013 -0500
@@ -350,6 +350,7 @@
}
}
+ ui.Pages->setCurrentIndex(ID_PAGE_INFO);
PagesStack.push(ID_PAGE_MAIN);
((AbstractPage*)ui.Pages->widget(ID_PAGE_MAIN))->triggerPageEnter();
GoBack();
@@ -1730,6 +1731,7 @@
ui.pageNetGame->setMasterMode(true);
ui.pageNetGame->restrictJoins->setChecked(false);
ui.pageNetGame->restrictTeamAdds->setChecked(false);
+ ui.pageNetGame->restrictUnregistered->setChecked(false);
ui.pageNetGame->pGameCFG->GameSchemes->setModel(ammoSchemeModel);
ui.pageNetGame->pGameCFG->setMaster(true);
ui.pageNetGame->pNetTeamsWidget->setInteractivity(true);
@@ -1742,6 +1744,7 @@
ui.pageNetGame->leRoomName->disconnect(hwnet);
ui.pageNetGame->restrictJoins->disconnect(hwnet);
ui.pageNetGame->restrictTeamAdds->disconnect(hwnet);
+ ui.pageNetGame->restrictUnregistered->disconnect(hwnet);
ui.pageNetGame->disconnect(hwnet, SLOT(updateRoomName(const QString&)));
ui.pageNetGame->setRoomName(hwnet->getRoom());
@@ -1750,6 +1753,7 @@
connect(ui.pageNetGame, SIGNAL(askForUpdateRoomName(const QString &)), hwnet, SLOT(updateRoomName(const QString &)));
connect(ui.pageNetGame->restrictJoins, SIGNAL(triggered()), hwnet, SLOT(toggleRestrictJoins()));
connect(ui.pageNetGame->restrictTeamAdds, SIGNAL(triggered()), hwnet, SLOT(toggleRestrictTeamAdds()));
+ connect(ui.pageNetGame->restrictUnregistered, SIGNAL(triggered()), hwnet, SLOT(toggleRegisteredOnly()));
connect(ui.pageNetGame->pGameCFG->GameSchemes->model(),
SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
ui.pageNetGame->pGameCFG,
--- a/QTfrontend/net/newnetclient.cpp Tue Feb 26 20:26:49 2013 -0500
+++ b/QTfrontend/net/newnetclient.cpp Tue Feb 26 20:37:58 2013 -0500
@@ -490,9 +490,9 @@
emit connected();
}
+ m_playersModel->addPlayer(lst[i]);
emit nickAddedLobby(lst[i], false);
emit chatStringLobby(lst[i], tr("%1 *** %2 has joined").arg('\x03').arg("|nick|"));
- m_playersModel->addPlayer(lst[i]);
}
return;
}
@@ -636,9 +636,9 @@
emit configAsked();
}
+ m_playersModel->playerJoinedRoom(lst[i]);
emit nickAdded(lst[i], isChief && (lst[i] != mynick));
emit chatStringFromNet(tr("%1 *** %2 has joined the room").arg('\x03').arg(lst[i]));
- m_playersModel->playerJoinedRoom(lst[i]);
}
return;
}
@@ -982,6 +982,11 @@
RawSendNet(QString("TOGGLE_RESTRICT_TEAMS"));
}
+void HWNewNet::toggleRegisteredOnly()
+{
+ RawSendNet(QString("TOGGLE_REGISTERED_ONLY"));
+}
+
void HWNewNet::clearAccountsCache()
{
RawSendNet(QString("CLEAR_ACCOUNTS_CACHE"));
--- a/QTfrontend/net/newnetclient.h Tue Feb 26 20:26:49 2013 -0500
+++ b/QTfrontend/net/newnetclient.h Tue Feb 26 20:37:58 2013 -0500
@@ -163,6 +163,7 @@
void startGame();
void toggleRestrictJoins();
void toggleRestrictTeamAdds();
+ void toggleRegisteredOnly();
void partRoom();
void clearAccountsCache();
void getBanList();
--- a/QTfrontend/ui/page/pagenetgame.cpp Tue Feb 26 20:26:49 2013 -0500
+++ b/QTfrontend/ui/page/pagenetgame.cpp Tue Feb 26 20:37:58 2013 -0500
@@ -170,8 +170,11 @@
restrictJoins->setCheckable(true);
restrictTeamAdds = new QAction(QAction::tr("Restrict Team Additions"), menu);
restrictTeamAdds->setCheckable(true);
+ restrictUnregistered = new QAction(QAction::tr("Restrict Unregistered Players Join"), menu);
+ restrictUnregistered->setCheckable(true);
menu->addAction(restrictJoins);
menu->addAction(restrictTeamAdds);
+ menu->addAction(restrictUnregistered);
BtnMaster->setMenu(menu);
--- a/QTfrontend/ui/page/pagenetgame.h Tue Feb 26 20:26:49 2013 -0500
+++ b/QTfrontend/ui/page/pagenetgame.h Tue Feb 26 20:37:58 2013 -0500
@@ -49,6 +49,7 @@
QAction * restrictJoins;
QAction * restrictTeamAdds;
+ QAction * restrictUnregistered;
HWChatWidget* chatWidget;
--- a/gameServer/HWProtoCore.hs Tue Feb 26 20:26:49 2013 -0500
+++ b/gameServer/HWProtoCore.hs Tue Feb 26 20:37:58 2013 -0500
@@ -34,8 +34,8 @@
else
return [ModifyClient (\c -> c{pingsQueue = pingsQueue c - 1})]
-handleCmd ("CMD" : params) =
- let c = concatMap B.words params in
+handleCmd ("CMD" : parameters) =
+ let c = concatMap B.words parameters in
if not $ null c then
h $ (upperCase . head $ c) : tail c
else
@@ -45,6 +45,10 @@
h ["STATS"] = handleCmd ["STATS"]
h ["PART", msg] = handleCmd ["PART", msg]
h ["QUIT", msg] = handleCmd ["QUIT", msg]
+ h ["GLOBAL", msg] = do
+ rnc <- liftM snd ask
+ let chans = map (sendChan . client rnc) $ allClients rnc
+ return [AnswerClients chans ["CHAT", "[global notice]", msg]]
h c = return [Warning . B.concat . L.intersperse " " $ "Unknown cmd" : c]
handleCmd cmd = do
--- a/gameServer/HWProtoInRoomState.hs Tue Feb 26 20:26:49 2013 -0500
+++ b/gameServer/HWProtoInRoomState.hs Tue Feb 26 20:37:58 2013 -0500
@@ -77,11 +77,11 @@
SendUpdateOnThisRoom,
ModifyClient (\c -> c{teamsInGame = teamsInGame c + 1, clientClan = Just teamColor}),
AnswerClients clChan ["TEAM_ACCEPTED", tName],
+ AnswerClients othChans $ teamToNet $ newTeam,
+ AnswerClients roomChans ["TEAM_COLOR", tName, teamColor],
ModifyClient $ \c -> c{actionsPending = actionsPending cl
- ++ [AnswerClients clChan ["HH_NUM", tName, showB $ hhnum newTeam]
- , AnswerClients othChans $ teamToNet $ newTeam
- , AnswerClients roomChans ["TEAM_COLOR", tName, teamColor]
- ]},
+ ++ [AnswerClients clChan ["HH_NUM", tName, showB $ hhnum newTeam]]
+ },
AnswerClients [sendChan cl] ["PING"]
]
where
@@ -229,7 +229,7 @@
(legalMsgs, nonEmptyMsgs) = checkNetCmd msg
-handleCmd_inRoom ["ROUNDFINISHED", correctly] = do
+handleCmd_inRoom ["ROUNDFINISHED", _] = do
cl <- thisClient
rm <- thisRoom
chans <- roomClientsChans
@@ -245,7 +245,7 @@
else
return [] -- don't accept this message twice
where
- isCorrect = correctly == "1"
+-- isCorrect = correctly == "1"
-- compatibility with clients with protocol < 38
handleCmd_inRoom ["ROUNDFINISHED"] =
--- a/hedgewars/GSHandlers.inc Tue Feb 26 20:26:49 2013 -0500
+++ b/hedgewars/GSHandlers.inc Tue Feb 26 20:37:58 2013 -0500
@@ -2878,6 +2878,7 @@
var
t: PGearArray;
ox, oy: hwFloat;
+ tempColl: Word;
begin
AllInactive := false;
@@ -2896,11 +2897,12 @@
exit
end
end;
-
- if GameTicks > Gear^.FlightTime then
+ tempColl:= Gear^.CollisionMask;
+ Gear^.CollisionMask:= $007F;
+ if (TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) <> 0) or TestCollisionXWithGear(Gear, hwSign(Gear^.dX)) or (GameTicks > Gear^.FlightTime) then
t := CheckGearsCollision(Gear)
-
else t := nil;
+ Gear^.CollisionMask:= tempColl;
//fixes drill not exploding when touching HH bug
if (Gear^.Timer = 0) or ((t <> nil) and (t^.Count <> 0))
--- a/hedgewars/uCommandHandlers.pas Tue Feb 26 20:26:49 2013 -0500
+++ b/hedgewars/uCommandHandlers.pas Tue Feb 26 20:37:58 2013 -0500
@@ -594,7 +594,6 @@
if bShowAmmoMenu then
bShowAmmoMenu:= false
else if not(CurrentTeam^.Extdriven) and (((Gear^.State and (gstAttacking or gstAttacked)) <> 0)
- or ((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0))
or ((Gear^.State and gstHHDriven) = 0)) then
begin
end
--- a/hedgewars/uGears.pas Tue Feb 26 20:26:49 2013 -0500
+++ b/hedgewars/uGears.pas Tue Feb 26 20:37:58 2013 -0500
@@ -443,7 +443,8 @@
if TurnTimeLeft > 0 then
if CurrentHedgehog^.Gear <> nil then
- if ((CurrentHedgehog^.Gear^.State and gstAttacking) = 0) then
+ if ((CurrentHedgehog^.Gear^.State and gstAttacking) = 0) and
+ not(isInMultiShoot and (CurrentHedgehog^.CurAmmoType in [amShotgun, amDEagle, amSniperRifle])) then
begin
if (TurnTimeLeft = 5000)
and (cHedgehogTurnTime >= 10000)
--- a/hedgewars/uGearsHedgehog.pas Tue Feb 26 20:26:49 2013 -0500
+++ b/hedgewars/uGearsHedgehog.pas Tue Feb 26 20:37:58 2013 -0500
@@ -54,7 +54,6 @@
prevAmmo:= CurAmmoType;
ammoidx:= 0;
if ((HHGear^.State and (gstAttacking or gstAttacked)) <> 0)
- or ((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0))
or ((HHGear^.State and gstHHDriven) = 0) then
exit;
ChangeAmmo:= true;
@@ -62,8 +61,12 @@
while (ammoidx < cMaxSlotAmmoIndex) and (Ammo^[slot, ammoidx].AmmoType <> CurAmmoType) do
inc(ammoidx);
- if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) and (MultiShootAttacks > 0) then
- OnUsedAmmo(HHGear^.Hedgehog^);
+ if (MultiShootAttacks > 0) then
+ begin
+ if (CurAmmoType = amSniperRifle) and ((GameFlags and gfArtillery) = 0) then
+ cArtillery := false;
+ OnUsedAmmo(HHGear^.Hedgehog^)
+ end;
MultiShootAttacks:= 0;
HHGear^.Message:= HHGear^.Message and (not (gmLJump or gmHJump));
@@ -459,7 +462,7 @@
if (CurAmmoGear <> nil)
and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) = 0){check for dropping ammo from rope} then
begin
- if CurAmmoType = amRope then Message:= Message or gmAttack;
+ if CurAmmoType in [amRope,amResurrector] then Message:= Message or gmAttack;
CurAmmoGear^.Message:= Message
end
else
@@ -1002,20 +1005,13 @@
Hedgehog: PHedgehog;
begin
Hedgehog:= HHGear^.Hedgehog;
-// Some weapons, deagle in particular, wouldn't play so nice in infinite attack mode if hogs were still moving. Most likely scenario
-// is trying to shoot them twice while rolling. This is mostly about not wasting ammo, but shouldn't apply to gears not using AmmoShove (portal
-// Should we rethink AmmoShove? Presumably we'd need a way of knowing if current gear had already attacked a gear
-if isInMultiShoot and not AllInactive and (Hedgehog^.CurAmmoType in [amShotgun, amDEagle, amSniperRifle]) then HHGear^.Message:= HHGear^.Message and not gmAttack;
-(*
-if isInMultiShoot then
- HHGear^.Message:= 0;
-*)
-
-(*if ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_Utility) <> 0) and isInMultiShoot then
- AllInactive:= true
-else if not isInMultiShoot then
- AllInactive:= false;*)
- AllInactive:= false;
+//if isInMultiShoot and not AllInactive and (Hedgehog^.CurAmmoType in [amShotgun, amDEagle, amSniperRifle]) then HHGear^.Message:= HHGear^.Message and not gmAttack;
+if isInMultiShoot and (Hedgehog^.CurAmmoType in [amShotgun, amDEagle, amSniperRifle]) then
+ begin
+ AllInactive:= true;
+ HHGear^.Message:= 0
+ end
+else AllInactive:= false;
if (TurnTimeLeft = 0) or (HHGear^.Damage > 0) then
begin
@@ -1132,7 +1128,7 @@
exit
end;
- if Hedgehog^.Gear <> nil then
+ if not(isInMultiShoot and (Hedgehog^.CurAmmoType in [amShotgun, amDEagle, amSniperRifle])) and (Hedgehog^.Gear <> nil) then
begin
if GHStepTicks > 0 then
dec(GHStepTicks);
--- a/hedgewars/uUtils.pas Tue Feb 26 20:26:49 2013 -0500
+++ b/hedgewars/uUtils.pas Tue Feb 26 20:37:58 2013 -0500
@@ -361,14 +361,14 @@
if (#$1100 <= u) and (
(u <= #$11FF ) or // Hangul Jamo
((#$2E80 <= u) and (u <= #$2FDF)) or // CJK Radicals Supplement / Kangxi Radicals
- ((#$2FF0 <= u) and (u <= #$303F)) or // Ideographic Description Characters / CJK Radicals Supplement
- ((#$3130 <= u) and (u <= #$318F)) or // Hangul Compatibility Jamo
+ ((#$2FF0 <= u) and (u <= #$31FF)) or // Ideographic Description Characters / CJK Radicals Supplement / Hiragana / Hangul Compatibility Jamo / Katakana
((#$31C0 <= u) and (u <= #$31EF)) or // CJK Strokes
- ((#$3200 <= u) and (u <= #$4DBF)) or // Enclosed CJK Letters and Months / CJK Compatibility / CJK Unified Ideographs Extension A
+ ((#$3200 <= u) and (u <= #$4DBF)) or // Enclosed CJK Letters and Months / CJK Compatibility / CJK Unified Ideographs Extension A / Circled Katakana
((#$4E00 <= u) and (u <= #$9FFF)) or // CJK Unified Ideographs
((#$AC00 <= u) and (u <= #$D7AF)) or // Hangul Syllables
((#$F900 <= u) and (u <= #$FAFF)) or // CJK Compatibility Ideographs
- ((#$FE30 <= u) and (u <= #$FE4F))) // CJK Compatibility Forms
+ ((#$FE30 <= u) and (u <= #$FE4F)) or // CJK Compatibility Forms
+ ((#$FF66 <= u) and (u <= #$FF9D))) // halfwidth katakana
then
begin
CheckCJKFont:= THWFont( ord(font) + ((ord(High(THWFont))+1) div 2) );
--- a/share/hedgewars/Data/Locale/ja.txt Tue Feb 26 20:26:49 2013 -0500
+++ b/share/hedgewars/Data/Locale/ja.txt Tue Feb 26 20:37:58 2013 -0500
@@ -470,62 +470,62 @@
03:55=ユーティリティ
; Weapon Descriptions (use | as line breaks)
-04:00=シンプルな手榴弾を使って敵を攻撃。そのタイマーがゼロに達するとそれが爆発する。1-5:セットグレネードのタイマー攻撃:より多くの電力をスローするようにホールド
-04:01=クラスター爆弾を使用して敵を攻撃。そのタイマーがゼロに達すると、それは小さな爆弾に分割されます。1-5:セットグレネードのタイマー攻撃:より多くの電力をスローするようにホールド
-04:02=風に影響されるかもしれない弾道発射体を使用して敵を攻撃。攻撃:より多くの電力を使って撮影するホールド
-04:03=選択したターゲットにロックされ爆発的な蜂を起動します。その精度を向上させるためにフルパワーを使って撮影しないでください。カーソル:ピックターゲット攻撃:より多くの電力を使って撮影するホールド
-04:04=2ショットでショットガンを使って敵を攻撃する。その広がりあなたのおかげで、あなたの対戦相手に危害を直接ヒットする必要はありません。攻撃:シュート(複数回)
-04:05=地下に移動!地面に穴を開けると他の領域に到達するを使用しています。攻撃の開始または停止掘り
-04:06=退屈?攻撃する方法はありません?あなたの弾薬を保存しますか?問題ありません!ちょうどあなたのターン、臆病者をスキップして!攻撃:戦闘せずにターンをスキップ
-04:07=ロープでタイムアウトショットを使用して、巨大な距離を埋める。他の豚またはドロップ手榴弾およびそれらの他の武器にスライドするように勢いを使用しています。攻撃:ドロップ手榴弾または類似の武器:ロープロングジャンプシュートまたは解放
-04:08=狭い通路の右またはそれらの足の下鉱山をドロップすることで、離れてあなたの敵を保つ。あなた自身でそれをトリガする前に撤退してください!攻撃:あなたの足の隣に地雷を削除します。
-04:09=あなたの照準が分からない?4打差までを使用して攻撃するためにデザートイーグルを使用しています。攻撃:シュート(複数回)
-04:10=ブルートフォースは常にオプションです。あなたの敵と後退の隣にあるこの古典的な爆発物をドロップします。攻撃:あなたの足の隣にあるドロップダイナマイト
-04:11=マップの国境を越えてまたは水の中にそれらをバッティングして敵の豚を取り除く。またはどのようにお友達にいくつかの鉱山をノックでしょうか?攻撃:あなたの前にバットすべてを
-04:12=このほとんど致命的な武道技術の力を解き放つに近いと個人的な取得します。攻撃:素晴らしいを実行します。
+04:00=シンプルな手榴弾を使って敵を攻撃。|そのタイマーがゼロに達するとそれが爆発する。|1-5:セットグレネードのタイマー攻撃:より多くの電力をスローするようにホールド
+04:01=クラスター爆弾を使用して敵を攻撃。|そのタイマーがゼロに達すると、それは小さな爆弾に分割されます。|1-5:セットグレネードのタイマー攻撃:より多くの電力をスローするようにホールド
+04:02=風に影響されるかもしれない弾道発射体を使用して敵を攻撃。|攻撃:より多くの電力を使って撮影するホールド
+04:03=選択したターゲットにロックされ爆発的な蜂を起動します。|その精度を向上させるためにフルパワーを使って撮影しないでください。|カーソル:ピックターゲット攻撃:より多くの電力を使って撮影するホールド
+04:04=2ショットでショットガンを使って敵を攻撃する。|その広がりあなたのおかげで、あなたの対戦相手に危害を直接ヒットする必要はありません。|攻撃:シュート(複数回)
+04:05=地下に移動!|地面に穴を開けると他の領域に到達するを使用しています。|攻撃の開始または停止掘り
+04:06=退屈?攻撃する方法はありません?あなたの弾薬を保存しますか?問題ありません!|ちょうどあなたのターン、臆病者をスキップして!|攻撃:戦闘せずにターンをスキップ
+04:07=ロープでタイムアウトショットを使用して、巨大な距離を埋める。|他の豚またはドロップ手榴弾およびそれらの他の武器にスライドするように勢いを使用しています。|攻撃:ドロップ手榴弾または類似の武器:ロープロングジャンプシュートまたは解放
+04:08=狭い通路の右またはそれらの足の下鉱山をドロップすることで、離れてあなたの敵を保つ。|あなた自身でそれをトリガする前に撤退してください!|攻撃:あなたの足の隣に地雷を削除します。
+04:09=あなたの照準が分からない?4打差までを使用して攻撃するためにデザートイーグルを使用しています。|攻撃:シュート(複数回)
+04:10=ブルートフォースは常にオプションです。|あなたの敵と後退の隣にあるこの古典的な爆発物をドロップします。|攻撃:あなたの足の隣にあるドロップダイナマイト
+04:11=マップの国境を越えてまたは水の中にそれらをバッティングして敵の豚を取り除く。|またはどのようにお友達にいくつかの鉱山をノックでしょうか?攻撃:あなたの前にバットすべてを
+04:12=このほとんど致命的な武道技術の力を解き放つに近いと個人的な取得します。|攻撃:素晴らしいを実行します。
04:13=UNUSED
-04:14=高所恐怖症?優れたパラシュートをつかむ。それはあなたが遠すぎたら落ちる展開と秋のダメージを受けてから豚を保存します。攻撃:ドロップ手榴弾または類似の武器:パラシュートロングジャンプを伸ばし
-04:15=爆撃の実行を使用して敵を攻撃する飛行機の中で呼び出します。左右:選択してターゲット領域:攻撃方向のカーソルを決定
-04:16=ターゲットエリアにいくつかの鉱山をドロップするには飛行機の中で呼び出します。左右:選択してターゲット領域:攻撃方向のカーソルを決定
-04:17=避難が必要ですか?あなたがカバー付与固体地面にトンネルを掘るためにブロートーチを使用しています。攻撃の開始または停止掘り
-04:18=追加の保護が必要な場合、または地面を通過したいですか?好きなように、いくつかの桁に置きます。有効な位置に配置桁:左右:カーソルを配置する選択桁
-04:19=それはあなたが数秒以内に危険な状況から豚を保存することができますように、右瞬間テレポーテーションで使用するほぼすべての武器をより強力にすることができます。カーソル:選択してターゲット領域
-04:20=別の豚と、現在のターンを再生することができます。攻撃:スイッチング豚を有効にする
-04:21=インパクト時に複数の爆弾を解放します手榴弾のような弾丸を撃つ。攻撃:フルパワーで撃つ
-04:22=だけでなく、インディジョーンズのために!鞭は多くの状況で有用な武器である。あなたが崖から誰かを突き出すしたい場合は特に。攻撃:あなたの前にストライクのすべて
-04:23=あなたが失うものは何もない場合、これはかなり便利かもしれません。彼の方法上のすべてを傷つけると終了時に爆発し、特定の方向に彼を起動することで、豚を生け贄に捧げる。攻撃:壊滅的な、致命的な攻撃を開始
-04:24=誕生日おめでとう!このケーキを起動し、それが右の敵の隣に歩いて、彼らが爆発的パーティを持たせてみましょう。ケーキは、ほぼすべての地形を通過することができますが、彼は以前、この方法を爆発させるかもしれません。攻撃:ケーキを起動するか、停止させると爆発する
-04:25=(そして、いくつかのギャップや穴)が豚に向かってジャンプすることがあなたの敵を取得するには、この変装キットを使用しています。攻撃:キットを使用して、別の豚を誘惑しよう
-04:26=あなたの敵で、このジューシーなスイカをスローします。タイマーの期限が切れると、それはいくつかの爆発的な断片に分割されます。1-5:セットスイカのタイマー攻撃:より多くの電力を使って撮影するホールド
-04:27=この悪魔のよう爆発を使用して、あなたの対戦相手に業火の雨してみましょう。近すぎる小さな火災が長く続くかもしれないと爆発に得ることはありません。攻撃:より多くの電力を使って撮影するホールド
-04:28=このロケットを打ち上げた後の短い時間、それは固体地面を掘削を開始し、そのヒューズがトリガされると爆発するか、再び再浮上します。攻撃:より多くの電力を使って撮影するホールド
-04:29=これは小さな子供のためのものではありません!ボール銃は爆薬を充填した小さな色のボールのトンを発生させます。攻撃:アップダウン、フルパワーでシュートを目指して進みます
-04:30=強力なナパームストライキを起動するには飛行機の中で呼び出します。適切にこの攻撃を目指してそこに座って不運な豚を含む風景の巨大な部分を根絶することができます。左右:選択してターゲット領域:攻撃方向のカーソルを決定
-04:31=RCプレーンは箱を収集したり、遠く離れた豚を攻撃するのに理想的な武器です。どちらの敵にそれを操縦するか、最初のいくつかの爆弾をドロップします。攻撃:ワルキューレが戦闘に乗りましょう左右:平面ステアジャンプ平面またはドロップロング爆弾を起動します。
-04:32=低重力はどんなダイエットよりも効果的です!高く、長い距離を飛び越えたり、敵がさらに飛ぶしましょう。攻撃:アクティブ
-04:33=時には、いくつかのより多くのダメージを与えるためにその少し余分なブーストをちょうど必要があります。攻撃:アクティブ
-04:34=私に触れることができない!攻撃:アクティブ
-04:35=時には時間が早すぎる実行している。あなたの攻撃を完了するために、いくつかの余分な秒をつかむ。攻撃:アクティブ
-04:36=さて、時にはあなたが目指すのはあまりにも悪いです。現代の技術を使用していくつかの支援を得る。攻撃:アクティブ
-04:37=日光を恐れてはいけません。それはちょうど1ターン持続しますが、あなたが他の豚に何のダメージを吸収することができるようになります。攻撃:アクティブ
-04:38=スナイパーライフルは、あなたの全体の兵器庫の中で最も壊滅的な武器になります、しかし、それは接近戦で非常に効果的です。ダメージは、そのターゲットまでの距離とともに増加を与えた。攻撃:シュート(回)
-04:39=空飛ぶ円盤を使用してマップの他の部分に飛ぶ。これは、マスターユーティリティのハード戦場のほぼ任意の位置に行くことができるようになりました。攻撃:最大アクティブ左右:ドロップ手榴弾または類似の武器:一方向にロングジャンプ力を適用します。
-04:40=(すぐになる)、燃焼液で満たされたこのボトルを使用して、火災のいくつかの地を設定します。攻撃:より多くの電力を使って撮影するホールド
-04:41=証拠の性質も、空飛ぶ円盤を上回るかもしれません。バーディは、豚を持ち歩くとあなたの敵に卵をドロップすることができます!バーディーを使用すると、あなたのターンの時間に食べるように、迅速である!攻撃:およびドロップ卵アップ左右:一方向にフラップ
-04:42=この携帯ポータル装置は、瞬時に、あなたの敵、または地形上の2点間のあなたの武器あなたを輸送することが可能です。賢明にそれを使用して、キャンペーンがあります...大成功!攻撃:サイクルポータルの色:ポータルスイッチを撃つ
-04:43=あなたの音楽デビュー爆発を成功させる!天からピアノをドロップしますが、注意してください...誰かがそれを再生する必要があり、それはあなたの人生を要するかもしれない!カーソル:選択してターゲット領域F1-F9キーを押して:ピアノを弾く
-04:44=これはただのチーズではなく、生物兵器だ!タイマーがゼロに達すると、それは間違いなく臭いをタッチする誰もが不幸に毒されたら、それは被害の膨大な量が発生することはありません!1-5:セットグレネードのタイマー攻撃:より多くの電力をスローするようにホールド
-04:45=すべてのそれらの物理学のクラスは最終的に報われている、あなたの敵に壊滅的な正弦波を起動します。気を付けろ、この武器は非常にキックをパックします。(この武器は不完全です)攻撃力:シュート
-04:46=液体炎を非常に暑いとあなたの敵をカバーしています。ほのぼの!アタックを上下にアクティブにします。左右を目指して進みます:唾の電源を変更します。
-04:47=2先端のとがった、卑劣な、粘着地雷の楽しみを倍増。連鎖反応を設定するか(あるいは両方!)攻撃を守る:より多くの電力(倍)で撮影するホールド
-04:48=なぜモルすべての虐待を取得する必要があります?豚をは、単に楽しみとしてすることができます!このハンマーから良い打撃は豚の健康状態の3分の1をオフに剃るし、それらを地下に突入します。攻撃:アクティブ
-04:49=あなたの友人を復活させる!しかし、これはまたあなたの敵を復活させること注意してください。攻撃:ゆっくりと復活させるために押された攻撃に注意してください。復活を加速
-04:50=誰かが地下に隠れている?ドリルのストライキでそれらを掘る!タイマーは、それを掘る方法をはるかに制御します。
-04:51=泥のボールを投げつけることによって自由なショットで取得します。刺されは、ビット、豚をバックノックする。
+04:14=高所恐怖症?優れたパラシュートをつかむ。|それはあなたが遠すぎたら落ちる展開と秋のダメージを受けてから豚を保存します。|攻撃:ドロップ手榴弾または類似の武器:パラシュートロングジャンプを伸ばし
+04:15=爆撃の実行を使用して敵を攻撃する飛行機の中で呼び出します。|左右:選択してターゲット領域:攻撃方向のカーソルを決定
+04:16=ターゲットエリアにいくつかの鉱山をドロップするには飛行機の中で呼び出します。|左右:選択してターゲット領域:攻撃方向のカーソルを決定
+04:17=避難が必要ですか?あなたがカバー付与固体地面にトンネルを掘るためにブロートーチを使用しています。|攻撃の開始または停止掘り
+04:18=追加の保護が必要な場合、または地面を通過したいですか?好きなように、いくつかの桁に置きます。|有効な位置に配置桁:左右:カーソルを配置する選択桁
+04:19=それはあなたが数秒以内に危険な状況から豚を保存することができますように、右瞬間テレポーテーションで使用するほぼすべての武器をより強力にすることができます。|カーソル:選択してターゲット領域
+04:20=別の豚と、現在のターンを再生することができます。|攻撃:スイッチング豚を有効にする
+04:21=インパクト時に複数の爆弾を解放します手榴弾のような弾丸を撃つ。|攻撃:フルパワーで撃つ
+04:22=だけでなく、インディジョーンズのために!|鞭は多くの状況で有用な武器である。|あなたが崖から誰かを突き出すしたい場合は特に。|攻撃:あなたの前にストライクのすべて
+04:23=あなたが失うものは何もない場合、これはかなり便利かもしれません。|彼の方法上のすべてを傷つけると終了時に爆発し、特定の方向に彼を起動することで、豚を生け贄に捧げる。|攻撃:壊滅的な、致命的な攻撃を開始
+04:24=誕生日おめでとう!|このケーキを起動し、それが右の敵の隣に歩いて、彼らが爆発的パーティを持たせてみましょう。|ケーキは、ほぼすべての地形を通過することができますが、彼は以前、この方法を爆発させるかもしれません。|攻撃:ケーキを起動するか、停止させると爆発する
+04:25=(そして、いくつかのギャップや穴)が豚に向かってジャンプすることがあなたの敵を取得するには、この変装キットを使用しています。|攻撃:キットを使用して、別の豚を誘惑しよう
+04:26=あなたの敵で、このジューシーなスイカをスローします。|タイマーの期限が切れると、それはいくつかの爆発的な断片に分割されます。|1-5:セットスイカのタイマー攻撃:より多くの電力を使って撮影するホールド
+04:27=この悪魔のよう爆発を使用して、あなたの対戦相手に業火の雨してみましょう。|近すぎる小さな火災が長く続くかもしれないと爆発に得ることはありません。|攻撃:より多くの電力を使って撮影するホールド
+04:28=このロケットを打ち上げた後の短い時間、それは固体地面を掘削を開始し、そのヒューズがトリガされると爆発するか、再び再浮上します。|攻撃:より多くの電力を使って撮影するホールド
+04:29=これは小さな子供のためのものではありません!|ボール銃は爆薬を充填した小さな色のボールのトンを発生させます。|攻撃:アップダウン、フルパワーでシュートを目指して進みます
+04:30=強力なナパームストライキを起動するには飛行機の中で呼び出します。|適切にこの攻撃を目指してそこに座って不運な豚を含む風景の巨大な部分を根絶することができます。|左右:選択してターゲット領域:攻撃方向のカーソルを決定
+04:31=RCプレーンは箱を収集したり、遠く離れた豚を攻撃するのに理想的な武器です。|どちらの敵にそれを操縦するか、最初のいくつかの爆弾をドロップします。|攻撃:ワルキューレが戦闘に乗りましょう左右:平面ステアジャンプ平面またはドロップロング爆弾を起動します。
+04:32=低重力はどんなダイエットよりも効果的です!|高く、長い距離を飛び越えたり、敵がさらに飛ぶしましょう。|攻撃:アクティブ
+04:33=時には、いくつかのより多くのダメージを与えるためにその少し余分なブーストをちょうど必要があります。|攻撃:アクティブ
+04:34=私に触れることができない!|攻撃:アクティブ
+04:35=時には時間が早すぎる実行している。|あなたの攻撃を完了するために、いくつかの余分な秒をつかむ。|攻撃:アクティブ
+04:36=さて、時にはあなたが目指すのはあまりにも悪いです。|現代の技術を使用していくつかの支援を得る。|攻撃:アクティブ
+04:37=日光を恐れてはいけません。|それはちょうど1ターン持続しますが、あなたが他の豚に何のダメージを吸収することができるようになります。|攻撃:アクティブ
+04:38=スナイパーライフルは、あなたの全体の兵器庫の中で最も壊滅的な武器になります、しかし、それは接近戦で非常に効果的です。|ダメージは、そのターゲットまでの距離とともに増加を与えた。|攻撃:シュート(回)
+04:39=空飛ぶ円盤を使用してマップの他の部分に飛ぶ。|これは、マスターユーティリティのハード戦場のほぼ任意の位置に行くことができるようになりました。|攻撃:最大アクティブ左右:ドロップ手榴弾または類似の武器:一方向にロングジャンプ力を適用します。
+04:40=(すぐになる)、燃焼液で満たされたこのボトルを使用して、火災のいくつかの地を設定します。|攻撃:より多くの電力を使って撮影するホールド
+04:41=証拠の性質も、空飛ぶ円盤を上回るかもしれません。|バーディは、豚を持ち歩くとあなたの敵に卵をドロップすることができます!|バーディーを使用すると、あなたのターンの時間に食べるように、迅速である!|攻撃:およびドロップ卵アップ左右:一方向にフラップ
+04:42=この携帯ポータル装置は、瞬時に、あなたの敵、または地形上の2点間のあなたの武器あなたを輸送することが可能です。|賢明にそれを使用して、キャンペーンがあります...大成功!|攻撃:サイクルポータルの色:ポータルスイッチを撃つ
+04:43=あなたの音楽デビュー爆発を成功させる!|天からピアノをドロップしますが、注意してください...誰かがそれを再生する必要があり、それはあなたの人生を要するかもしれない!|カーソル:選択してターゲット領域F1-F9キーを押して:ピアノを弾く
+04:44=これはただのチーズではなく、生物兵器だ!|タイマーがゼロに達すると、それは間違いなく臭いをタッチする誰もが不幸に毒されたら、それは被害の膨大な量が発生することはありません!|1-5:セットグレネードのタイマー攻撃:より多くの電力をスローするようにホールド
+04:45=すべてのそれらの物理学のクラスは最終的に報われている、あなたの敵に壊滅的な正弦波を起動します。|気を付けろ、この武器は非常にキックをパックします。|(この武器は不完全です)攻撃力:シュート
+04:46=液体炎を非常に暑いとあなたの敵をカバーしています。|ほのぼの!|アタックを上下にアクティブにします。|左右を目指して進みます:唾の電源を変更します。
+04:47=2先端のとがった、卑劣な、粘着地雷の楽しみを倍増。|連鎖反応を設定するか(あるいは両方!|)攻撃を守る:より多くの電力(倍)で撮影するホールド
+04:48=なぜモルすべての虐待を取得する必要があります?豚をは、単に楽しみとしてすることができます!|このハンマーから良い打撃は豚の健康状態の3分の1をオフに剃るし、それらを地下に突入します。|攻撃:アクティブ
+04:49=あなたの友人を復活させる!|しかし、これはまたあなたの敵を復活させること注意してください。|攻撃:ゆっくりと復活させるために押された攻撃に注意してください。|復活を加速
+04:50=誰かが地下に隠れている?ドリルのストライキでそれらを掘る!|タイマーは、それを掘る方法をはるかに制御します。
+04:51=泥のボールを投げつけることによって自由なショットで取得します。|刺されは、ビット、豚をバックノックする。
04:52=UNUSED
-04:53=あなたの仲間が単独で戦うために残しながら、時間と空間を介して冒険に出る。いつでも返すように準備する、または突然死の場合、または、それらはすべて敗北しています。免責事項。あなたは一人である場合は、突然死で機能するか、キングである場合ではありません。
+04:53=あなたの仲間が単独で戦うために残しながら、時間と空間を介して冒険に出る。|いつでも返すように準備する、または突然死の場合、または、それらはすべて敗北しています。|免責事項。|あなたは一人である場合は、突然死で機能するか、キングである場合ではありません。
04:54=INCOMPLETE
-04:55=スティッキーフレークのストリームをスプレー。トンネルを封鎖、敵を埋める、ブリッジを構築します。あなたが上の任意のを取得しないように注意してください!
+04:55=スティッキーフレークのストリームをスプレー。|トンネルを封鎖、敵を埋める、ブリッジを構築します。|あなたが上の任意のを取得しないように注意してください!
; Game goal strings
05:00=ゲームモード