Merge with master branch
authorGrigory Ustinov <grenka@altlinux.org>
Wed, 28 Nov 2018 17:25:29 +0300
changeset 14331 80a4283a58b1
parent 14330 6b56a0a0afb4 (current diff)
parent 14326 ddcc5dd7a805 (diff)
child 14332 acc96bccca6e
Merge with master branch
--- a/ChangeLog.txt	Wed Nov 28 17:20:22 2018 +0300
+++ b/ChangeLog.txt	Wed Nov 28 17:25:29 2018 +0300
@@ -5,6 +5,7 @@
  + Complete overhaul of Continental supplies
  + Can adjust weapon start and crate probabilities in Balanced Random Weapon
  + Remove rubber duck
+ + New air mine features
  + Rework team rankings
  + Tied teams now rank equally
  + Help button in main menu
@@ -19,7 +20,8 @@
 Game, gameplay:
  + Increase hedgehog limit to 64
  + Remove rubber duck
- + Shotgun, Desert Eagle, Sniper Rifle, Firepunch, Kamikaze, Whip and Baseball Bat can now hit air mines (and some other moving gears) ...
+ + Shotgun, Desert Eagle, Sniper Rifle, Firepunch, Kamikaze, Whip and Baseball Bat can now hit air mines (and some other projectiles)
+ + Freezer can freeze air mines when they don't move too fast
  + Air mines get stunned by getting shoved
  + Shotgun shots can now pass through portals
  * Fix hog being unable to walk after using sniper rifle without firing both shots
@@ -75,7 +77,6 @@
  + Add help button in main menu (link to Hedgewars Wiki)
  + Add setting to disable audio dampening when losing window focus
  + Rework player rankings: Losing clans are now ranked in the reverse order they died
- + Add-ons now support preview images for campaign missions
  * Fix player rankings on round draw: Clans that died in the same turn now have the same rank
  * Fix rare crash when aborting video encoding in progress
  * Fix critical failure to cleanup teams list after rejoining game under certain conditions
@@ -110,6 +111,8 @@
  * Fix breakage when enabling per-hog ammo
 
 Mutant:
+ + Do not reduce mutant's health in Ready phase
+ + Play poison hurt sound when mutant is low on health
  + Unlock game scheme
 
 Continental supplies:
@@ -122,6 +125,7 @@
  + Show message when hog receives new continent ammo
  + Sabotaged hedgehogs also emit smoke when it's not their turn
  + Can switch continent in reverse order with [Precise]+[Switch]
+ * Sabotage deals no damage in ready phase, while attacking or retreating
  * Invulnerability now protects from sabotage damage
  * Sabotage kills hog instantly when health reaches 0
  * Reliably prevent using of Lonely Cries and baseball bat specials when usage not allowed
@@ -163,6 +167,10 @@
  + New land objects for Beach theme
  * Fix repeating sun in Hoggywood theme
 
+Content creation:
+ + HWPs can be nested inside HWPs (1 layer deep only)
+ + Add-ons now support preview images for campaign missions
+
 Translations:
  + Translations kept up-to-date: German, Polish
  + Major translation updates: Russian, Japanese, Scottish Gaelic, Ukrainian
--- a/INSTALL.md	Wed Nov 28 17:20:22 2018 +0300
+++ b/INSTALL.md	Wed Nov 28 17:25:29 2018 +0300
@@ -76,7 +76,7 @@
     - `utf8-string`
     - `SHA`
     - `entropy`
-    - `zlib` >= 0.5.3 and < 0.6
+    - `zlib` >= 0.5.3 and < 0.7
     - `regex-tdfa`
     - `binary` >= 0.8.5.1
 
--- a/QTfrontend/main.cpp	Wed Nov 28 17:20:22 2018 +0300
+++ b/QTfrontend/main.cpp	Wed Nov 28 17:25:29 2018 +0300
@@ -255,7 +255,7 @@
         }
     }
 
-    if(cmdMsgState == 0)
+    if(cmdMsgState == cmdMsgNone)
     {
         if(parsedArgs.contains("data-dir"))
         {
@@ -532,7 +532,7 @@
 
     app.form = new HWForm(NULL, style);
 #ifdef Q_OS_WIN
-    if(cmdMsgState == 0)
+    if(cmdMsgState == cmdMsgNone)
         splash.finish(app.form);
 #endif
     app.form->show();
Binary file QTfrontend/res/splash.png has changed
--- a/gameServer/hedgewars-server.cabal	Wed Nov 28 17:20:22 2018 +0300
+++ b/gameServer/hedgewars-server.cabal	Wed Nov 28 17:25:29 2018 +0300
@@ -36,6 +36,8 @@
     zlib >= 0.5.3 && < 0.7,
     regex-tdfa,
     binary >= 0.8.5.1,
+
+-- These dependencies are for OFFICIAL_SERVER only and do not need to be mentioned in docs
     yaml >= 0.8.30,
     aeson,
     text >= 1.2
--- a/share/hedgewars.appdata.xml	Wed Nov 28 17:20:22 2018 +0300
+++ b/share/hedgewars.appdata.xml	Wed Nov 28 17:25:29 2018 +0300
@@ -16,21 +16,21 @@
     As commander, it's your job to assemble your crack team of hedgehog soldiers and bring the war to your enemy.
   </p>
   <p xml:lang="de">
-    Als Kommandant ist es deine Aufgabe, deine Topmannschaft aus Igelsoldaten aufzustellen und in den Krieg gegen deinen Feind zu führen.
+    Als Kommandant ist es deine Aufgabe, deine Topmannschaft aus Igelsoldaten aufzustellen und in den Krieg gegen deinen Feind zu ziehen.
   </p>
   <p>Game features:</p>
   <p xml:lang="de">Spiel-Features:</p>
   <ul>
    <li>Hilarious and strategic turn based combat for up to 8 players</li>
    <li xml:lang="de">Absurder und strategischer zugbasierter Kampf mit bis zu 8 Spielern</li>
-   <li>Singpleplayer mode with two campaigns and many scenarios and challenges</li>
+   <li>Singleplayer mode with two campaigns and many scenarios and challenges</li>
    <li xml:lang="de">Einzelspielermodus mit zwei Kampagnen und vielen Szenarios und Herausforderungen</li>
    <li>Both local and network multiplayer, with optional AI opponents</li>
    <li xml:lang="de">Mehrspielermodus sowohl lokal als auch über das Netzwerk, mit optionalen KI-Gegnern</li>
    <li>Battle on an infinite number of randomly generated maps, with over 22 environments</li>
    <li xml:lang="de">Kämpfe auf einer unendlichen Anzahl auf zufällig erstellten Landschaften mit über 22 Szenerien</li>
    <li>Attack with one of over 38 devastating weapons!</li>
-   <li xml:lang="de">Greif mit einer von über 38 zerstörerischen Waffen an</li>
+   <li xml:lang="de">Greif mit einer von über 38 zerstörerischen Waffen an!</li>
    <li>Including the piano strike and explosive robotic cake</li>
    <li xml:lang="de">Darunter auch der Pianoangriff und ein explosiver robotischer Kuchen</li>
    <li>Utilise over 16 utilities like the rope or portable portal device to pave your path to victory</li>
--- a/share/hedgewars/Data/Locale/hedgewars_de.ts	Wed Nov 28 17:20:22 2018 +0300
+++ b/share/hedgewars/Data/Locale/hedgewars_de.ts	Wed Nov 28 17:25:29 2018 +0300
@@ -391,7 +391,7 @@
     <message>
         <source>Hedgewars can use a %1 (e.g. &quot;%2&quot;) to connect on start.</source>
         <comment>command-line</comment>
-        <translation>Hedgewars kann ein %1 (z.B. »%2«) verwenden, um beim Start zu verbinden.</translation>
+        <translation>Hedgewars kann einen %1 (z.B. »%2«) verwenden, um sich beim Start zu verbinden.</translation>
     </message>
     <message>
         <source>Malformed option argument: %1</source>
--- a/share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua	Wed Nov 28 17:20:22 2018 +0300
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua	Wed Nov 28 17:25:29 2018 +0300
@@ -1633,7 +1633,7 @@
 
 -- Spawn sabotage smoke for inactive hogs (red smoke, more subtle than for active hogs)
 function SabotageSmokeInactive(gear)
-	if GetGearType(gear) == gtHedgehog and gear ~= CurrentHedgehog and CS.SABOTAGE_HOGS[gear]~=nil and CS.SABOTAGE_HOGS[gear]>=1 then
+	if GetGearType(gear) == gtHedgehog and (gear ~= CurrentHedgehog or ReadyTimeLeft > 0) and CS.SABOTAGE_HOGS[gear]~=nil and CS.SABOTAGE_HOGS[gear]>=1 then
 		local vg = AddVisualGear(GetX(gear), GetY(gear), vgtSmokeWhite, 0, false)
 		SetVisualGearValues(vg, nil, nil, nil, nil, nil, nil, nil, nil, nil, 0xFF8080B0)
 	end
@@ -1773,7 +1773,7 @@
 	if(CS.SABOTAGE_HOGS[CurrentHedgehog]~=nil and CS.SABOTAGE_HOGS[CurrentHedgehog]>=1)
 	then
 		--for sabotage
-		if(CS.SABOTAGE_HOGS[CurrentHedgehog]==1)
+		if(CS.SABOTAGE_HOGS[CurrentHedgehog]==1 and ReadyTimeLeft == 0)
 		then
 			AddCaption(loc("You are sabotaged, RUN!"))
 
@@ -1785,7 +1785,7 @@
 			CS.SABOTAGE_HOGS[CurrentHedgehog]=2
 		end
 
-		if(CS.SABOTAGE_COUNTER % 20 == 0)
+		if(CS.SABOTAGE_HOGS[CurrentHedgehog]==2 and CS.SABOTAGE_COUNTER % 20 == 0)
 		then
 			-- Sabotage effect (red smoke)
 			local vg = AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmokeWhite, 0, false)
@@ -1799,10 +1799,11 @@
 		then
 			-- Sabotage decreases hog health regularily,
 			-- but invulnerable protects.
-			-- Also do not decrease health while retreating or attacking.
+			-- Also do not decrease health while retreating, attacking or in ready phase.
 			if(GetEffect(CurrentHedgehog, heInvulnerable) == 0 and
 			band(GetState(CurrentHedgehog), gstHHDriven) ~= 0 and
-			band(GetState(CurrentHedgehog), gstAttacked+gstAttacking) == 0)
+			band(GetState(CurrentHedgehog), gstAttacked+gstAttacking) == 0) and
+			(ReadyTimeLeft == 0)
 			then
 				if(GetHealth(CurrentHedgehog)<=CS.SABOTAGE_DAMAGE)
 				then
--- a/share/hedgewars/Data/Scripts/Multiplayer/Mutant.lua	Wed Nov 28 17:20:22 2018 +0300
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Mutant.lua	Wed Nov 28 17:25:29 2018 +0300
@@ -313,23 +313,34 @@
         end
     end
 
-    if TurnTimeLeft==0 and mt_hurt then
+    if (TurnTimeLeft==0 or band(GetState(mutant), gstHHDriven) == 0) and mt_hurt then
         mt_hurt = false
     end
 
-    if mt_hurt and mutant~=nil then
+    -- Mutant's disease
+    -- Hurt Mutant during its turn time
+    -- Mutant's health is safe in ready phase
+    if mt_hurt and mutant~=nil and ReadyTimeLeft == 0 then
         timer = timer + 1
-            if timer > disease_timer then
-                timer = 0
-                SetHealth(mutant, GetHealth(mutant)-disease )
-                AddVisualGear(GetX(mutant), GetY(mutant)-5, vgtHealthTag, disease, true)
-                    if GetHealth(mutant)<=0 then
-                        SetHealth(mutant,0)
-                        mt_hurt= false
-                        setGearValue(mutant,"SelfDestruct",true)
-                        EndTurn()
-                    end
+        if timer > disease_timer then
+            timer = 0
+            local h = GetHealth(mutant)-disease
+            SetHealth(mutant, h)
+            -- Low health warning
+            if h <= 75 then
+                PlaySound(sndPoisonMoan, mutant)
+            elseif h <= 150 then
+                PlaySound(sndPoisonCough, mutant)
             end
+            local tag = AddVisualGear(GetX(mutant), GetY(mutant)-5, vgtHealthTag, disease, true)
+            SetVisualGearValues(tag, nil, nil, nil, nil, nil, nil, nil, nil, nil, GetClanColor(GetHogClan(mutant)))
+            if GetHealth(mutant)<=0 then
+                SetHealth(mutant,0)
+                mt_hurt= false
+                setGearValue(mutant,"SelfDestruct",true)
+                EndTurn()
+            end
+        end
     end
 
 end