# HG changeset patch # User nemo # Date 1544211308 18000 # Node ID c3ae3cac8fba5ce135dd3bad8ccd5d4ce6ef44b9 # Parent cc99f7c673c7dfa3a37d91d797b1998d293b5582# Parent 7f0166b01dc98c24082259030b5960b27cdf85cf pull 0.9.25 changes into default diff -r cc99f7c673c7 -r c3ae3cac8fba hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Fri Dec 07 18:32:36 2018 +0300 +++ b/hedgewars/hwengine.pas Fri Dec 07 14:35:08 2018 -0500 @@ -358,6 +358,9 @@ var s: shortstring; i: LongInt; begin +{$IFDEF PAS2C} + AddFileLog('Generated using pas2c'); +{$ENDIF} WriteLnToConsole('Hedgewars engine ' + cVersionString + '-r' + cRevisionString + ' (' + cHashString + ') with protocol #' + inttostr(cNetProtoVersion)); AddFileLog('Prefix: "' + shortstring(PathPrefix) +'"'); diff -r cc99f7c673c7 -r c3ae3cac8fba hedgewars/uChat.pas --- a/hedgewars/uChat.pas Fri Dec 07 18:32:36 2018 +0300 +++ b/hedgewars/uChat.pas Fri Dec 07 14:35:08 2018 -0500 @@ -515,7 +515,7 @@ exit end; - // “/clan” or “/team” (“/team” is an alias for “/clan”) + // "/clan" or "/team" ("/team" is an alias for "/clan") if ((copy(s, 2, 5) = 'clan ') or (copy(s, 2, 5) = 'team ')) then begin if (Length(s) > 6) then diff -r cc99f7c673c7 -r c3ae3cac8fba hedgewars/uGearsHedgehog.pas --- a/hedgewars/uGearsHedgehog.pas Fri Dec 07 18:32:36 2018 +0300 +++ b/hedgewars/uGearsHedgehog.pas Fri Dec 07 14:35:08 2018 -0500 @@ -775,7 +775,8 @@ if (ammo = amNothing) or (cnt = 0) then s:= trmsg[sidEmptyCrate] else if cnt >= AMMO_INFINITE then - s:= name + ansistring(' (+∞)') + // infinity symbol + s:= name + ansistring(' (+' + char($E2) + char($88) + char($9E) +')') else s:= name + ansistring(' (+' + IntToStr(cnt) + ')'); diff -r cc99f7c673c7 -r c3ae3cac8fba hedgewars/uInputHandler.pas --- a/hedgewars/uInputHandler.pas Fri Dec 07 18:32:36 2018 +0300 +++ b/hedgewars/uInputHandler.pas Fri Dec 07 14:35:08 2018 -0500 @@ -130,7 +130,7 @@ begin name:= SDL_GetKeyName(SDL_GetKeyFromScancode(code)); if (name = 'Escape') then - // Let's shorten the name “Escape” for the quit menu + // Let's shorten the name "Escape" for the quit menu KeyBindToName:= 'Esc' else if (length(name) <> 0) then KeyBindToName:= name diff -r cc99f7c673c7 -r c3ae3cac8fba hedgewars/uScript.pas --- a/hedgewars/uScript.pas Fri Dec 07 18:32:36 2018 +0300 +++ b/hedgewars/uScript.pas Fri Dec 07 14:35:08 2018 -0500 @@ -3593,7 +3593,6 @@ var braceCount: LongWord; var wordCount: LongWord; var lastChar: char; -// ⭒⭐⭒✨⭐⭒✨⭐☆✨⭐✨✧✨☆✨✧✨☆⭒✨☆⭐⭒☆✧✨⭒✨⭐✧⭒☆⭒✧☆✨✧⭐☆✨☆✧⭒✨✧⭒☆⭐☆✧ function ScriptReader(L: Plua_State; f: PFSFile; sz: Psize_t) : PChar; Cdecl; var mybuf: PChar; i: LongInt; @@ -3658,7 +3657,6 @@ end; ScriptLocaleReader:= mybuf end; -// ⭒⭐⭒✨⭐⭒✨⭐☆✨⭐✨✧✨☆✨✧✨☆⭒✨☆⭐⭒☆✧✨⭒✨⭐✧⭒☆⭒✧☆✨✧⭐☆✨☆✧⭒✨✧⭒☆⭐☆✧ function ScriptLoad(name : shortstring; mustExist : boolean): boolean; var ret : LongInt; diff -r cc99f7c673c7 -r c3ae3cac8fba hedgewars/uSound.pas --- a/hedgewars/uSound.pas Fri Dec 07 18:32:36 2018 +0300 +++ b/hedgewars/uSound.pas Fri Dec 07 14:35:08 2018 -0500 @@ -475,7 +475,7 @@ // Get a fallback voice, assuming that snd is not available. Returns sndNone if none is found. function GetFallbackV(snd: TSound): TSound; begin - // Fallback to sndFirePunch1 / sndOw1 / sndOoff1 if a “higher-numbered” sound is missing + // Fallback to sndFirePunch1 / sndOw1 / sndOoff1 if a "higher-numbered" sound is missing if (snd in [sndFirePunch2, sndFirePunch3, sndFirePunch4, sndFirePunch5, sndFirePunch6]) then GetFallbackV := sndFirePunch1 else if (snd in [sndOw2, sndOw3, sndOw4, sndOuch]) then diff -r cc99f7c673c7 -r c3ae3cac8fba hedgewars/uStats.pas --- a/hedgewars/uStats.pas Fri Dec 07 18:32:36 2018 +0300 +++ b/hedgewars/uStats.pas Fri Dec 07 14:35:08 2018 -0500 @@ -527,7 +527,7 @@ deathEntry:= deathEntry^.NextEntry; end; - // “Achievements” / Details part of stats screen + // "Achievements" / Details part of stats screen if SendAchievementsStatsOn then begin if msdhh <> nil then diff -r cc99f7c673c7 -r c3ae3cac8fba hedgewars/uTeams.pas --- a/hedgewars/uTeams.pas Fri Dec 07 18:32:36 2018 +0300 +++ b/hedgewars/uTeams.pas Fri Dec 07 14:35:08 2018 -0500 @@ -123,7 +123,7 @@ // Write victory message for caption and stats page if (TeamsNumber = cMaxTeams) or (TeamsCount = TeamsNumber) then begin - // No enemies for some reason … Everyone wins!!1! + // No enemies for some reason ... Everyone wins!!1! s:= trmsg[sidWinnerAll]; allWin:= true; end diff -r cc99f7c673c7 -r c3ae3cac8fba share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/first_blood.lua --- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/first_blood.lua Fri Dec 07 18:32:36 2018 +0300 +++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/first_blood.lua Fri Dec 07 14:35:08 2018 -0500 @@ -588,7 +588,7 @@ SetGearMessage(CurrentHedgehog, 0) AddAnim(challengeFailedAnim) chalTries = chalTries + 1 - difficulty = 0 + difficulty = 1 AddFunction({func = SetChoice, args = {}}) end diff -r cc99f7c673c7 -r c3ae3cac8fba share/hedgewars/Data/Scripts/TargetPractice.lua --- a/share/hedgewars/Data/Scripts/TargetPractice.lua Fri Dec 07 18:32:36 2018 +0300 +++ b/share/hedgewars/Data/Scripts/TargetPractice.lua Fri Dec 07 14:35:08 2018 -0500 @@ -226,8 +226,10 @@ end _G.onGearAdd = function(gear) + if GetGearType(gear) == params.gearType then + shots = shots + 1 + end if GetGearType(gear) == params.gearType or (params.secGearType and GetGearType(gear) == params.secGearType) then - shots = shots + 1 gearsInGameCount = gearsInGameCount + 1 gearsInGame[gear] = true end diff -r cc99f7c673c7 -r c3ae3cac8fba tests/lua/staticmines.lua --- a/tests/lua/staticmines.lua Fri Dec 07 18:32:36 2018 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ ---[[ Static Mines Test - -This test tests if mines are able to stand still on the ground for a very long time. 8 mines are spawned on a few girders. - -The test passes if the mines don't move for a very long time. -The test failes if any mine moves even the tiniest bit or is destroyed. - -This test case has been created as response to bug 96. -]] - --- Max. time to test -local TEST_TIME_LIMIT = 3600000 * 5 -- 5 hours - -local hhs = {} - -function onGameInit() - - ClearGameFlags() - EnableGameFlags(gfDisableWind, gfOneClanMode) - Map = "" - Seed = 12 - Theme = "Desert" - MapGen = mgDrawn - TurnTime = -1 - Explosives = 0 - MinesNum = 0 - CaseFreq = 0 - Delay = 100 - WaterRise = 0 - HealthDecrease = 0 - AirMinesNum = 0 - - - AddTeam("Test Team", 0xFFFF00, "Statue", "Tank", "Default", "cm_test") - hhs[1] = AddHog("Test Hog", 0, 100, "cm_test") - SetGearPosition(hhs[1], 300, 1450) -end - -local mines = { - { x = 231, y = 1708}, - { x = 290, y = 1708}, - { x = 342, y = 1708}, - { x = 261, y = 1708}, - { x = 319, y = 1708}, - { x = 403, y = 1706}, - { x = 428, y = 1706}, - { x = 461, y = 1706}, - { x = 498, y = 1706}, - { x = 518, y = 1706}, -} - -function LoadGearData() - ------ GIRDER LIST ------ - PlaceGirder(290, 1718, 4) - PlaceGirder(290, 1790, 4) - PlaceGirder(452, 1716, 4) - PlaceGirder(452, 1790, 4) - - PlaceGirder(300, 1500, 4) - - ------ MINE LIST ------ - for m=1, #mines do - mines[m].gear = AddGear(mines[m].x, mines[m].y, gtMine, 0, 0, 0, 0) - end - -end - -function onGameStart() - LoadGearData() -end - -function onGearDelete(gear) - for m=#mines, 1, -1 do - if gear == mines[m] then - WriteLnToConsole(string.format("Mine %d died!", m)) - table.remove(mines, m) - end - end -end - --- Give a short time for the mines to settle first. -local checkTimer = -5000 -local initPosCheck = false --- Count the total times the mines managed to stand still -local totalTime = 0 -local fin = false -function onGameTick20() - if fin then - return - end - -- Infinite turn time - if TurnTimeLeft < 6000 then - TurnTimeLeft = -1 - end - checkTimer = checkTimer + 20 - if initPosCheck then - totalTime = totalTime + 20 - end - if checkTimer >= 1000 then - local failed = false - for m=1, #mines do - if not initPosCheck then - -- Position initialization - -- Save “real” x and y values after the mines have settled - local x, y = GetGearPosition(mines[m].gear) - mines[m].rx = x - mines[m].ry = y - else - -- Position check - local x, y = GetGearPosition(mines[m].gear) - local rx, ry = mines[m].rx, mines[m].ry - if not x or not y then - WriteLnToConsole(string.format("Mine %d has died!", m)) - failed = true - elseif x ~= rx or y ~= ry then - WriteLnToConsole(string.format("Mine %d has moved! Expected: (%d, %d). Actual: (%d, %d)", m, rx, ry, x, y)) - failed = true - end - end - end - if not initPosCheck then - initPosCheck = true - end - if failed then - WriteLnToConsole(string.format("Test failed. The mines managed to stand still for %d ticks.", totalTime)) - EndLuaTest(TEST_FAILED) - fin = true - return - end - end - if totalTime >= TEST_TIME_LIMIT then - WriteLnToConsole(string.format("All mines have been static for over %d ticks! Success!", TEST_TIME_LIMIT)) - EndLuaTest(TEST_SUCCESSFUL) - fin = true - return - end -end \ No newline at end of file diff -r cc99f7c673c7 -r c3ae3cac8fba tests/lua_noncritical/staticmines.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/lua_noncritical/staticmines.lua Fri Dec 07 14:35:08 2018 -0500 @@ -0,0 +1,137 @@ +--[[ Static Mines Test + +This test tests if mines are able to stand still on the ground for a very long time. 8 mines are spawned on a few girders. + +The test passes if the mines don't move for a very long time. +The test failes if any mine moves even the tiniest bit or is destroyed. + +This test case has been created as response to bug 96. +]] + +-- Max. time to test +local TEST_TIME_LIMIT = 3600000 * 5 -- 5 hours + +local hhs = {} + +function onGameInit() + + ClearGameFlags() + EnableGameFlags(gfDisableWind, gfOneClanMode) + Map = "" + Seed = 12 + Theme = "Desert" + MapGen = mgDrawn + TurnTime = -1 + Explosives = 0 + MinesNum = 0 + CaseFreq = 0 + Delay = 100 + WaterRise = 0 + HealthDecrease = 0 + AirMinesNum = 0 + + + AddTeam("Test Team", 0xFFFF00, "Statue", "Tank", "Default", "cm_test") + hhs[1] = AddHog("Test Hog", 0, 100, "cm_test") + SetGearPosition(hhs[1], 300, 1450) +end + +local mines = { + { x = 231, y = 1708}, + { x = 290, y = 1708}, + { x = 342, y = 1708}, + { x = 261, y = 1708}, + { x = 319, y = 1708}, + { x = 403, y = 1706}, + { x = 428, y = 1706}, + { x = 461, y = 1706}, + { x = 498, y = 1706}, + { x = 518, y = 1706}, +} + +function LoadGearData() + ------ GIRDER LIST ------ + PlaceGirder(290, 1718, 4) + PlaceGirder(290, 1790, 4) + PlaceGirder(452, 1716, 4) + PlaceGirder(452, 1790, 4) + + PlaceGirder(300, 1500, 4) + + ------ MINE LIST ------ + for m=1, #mines do + mines[m].gear = AddGear(mines[m].x, mines[m].y, gtMine, 0, 0, 0, 0) + end + +end + +function onGameStart() + LoadGearData() +end + +function onGearDelete(gear) + for m=#mines, 1, -1 do + if gear == mines[m] then + WriteLnToConsole(string.format("Mine %d died!", m)) + table.remove(mines, m) + end + end +end + +-- Give a short time for the mines to settle first. +local checkTimer = -5000 +local initPosCheck = false +-- Count the total times the mines managed to stand still +local totalTime = 0 +local fin = false +function onGameTick20() + if fin then + return + end + -- Infinite turn time + if TurnTimeLeft < 6000 then + TurnTimeLeft = -1 + end + checkTimer = checkTimer + 20 + if initPosCheck then + totalTime = totalTime + 20 + end + if checkTimer >= 1000 then + local failed = false + for m=1, #mines do + if not initPosCheck then + -- Position initialization + -- Save “real” x and y values after the mines have settled + local x, y = GetGearPosition(mines[m].gear) + mines[m].rx = x + mines[m].ry = y + else + -- Position check + local x, y = GetGearPosition(mines[m].gear) + local rx, ry = mines[m].rx, mines[m].ry + if not x or not y then + WriteLnToConsole(string.format("Mine %d has died!", m)) + failed = true + elseif x ~= rx or y ~= ry then + WriteLnToConsole(string.format("Mine %d has moved! Expected: (%d, %d). Actual: (%d, %d)", m, rx, ry, x, y)) + failed = true + end + end + end + if not initPosCheck then + initPosCheck = true + end + if failed then + WriteLnToConsole(string.format("Test failed. The mines managed to stand still for %d ticks.", totalTime)) + EndLuaTest(TEST_FAILED) + fin = true + return + end + end + if totalTime >= TEST_TIME_LIMIT then + WriteLnToConsole(string.format("All mines have been static for over %d ticks! Success!", TEST_TIME_LIMIT)) + EndLuaTest(TEST_SUCCESSFUL) + fin = true + return + end +end \ No newline at end of file