merge
authorkoda
Sat, 26 Jun 2010 04:36:28 +0200
changeset 3556 4bdc59101ce5
parent 3551 d4de36b3801a (current diff)
parent 3554 066faceb977d (diff)
child 3558 86a4437e614b
merge
--- a/hedgewars/GSHandlers.inc	Sat Jun 26 04:36:04 2010 +0200
+++ b/hedgewars/GSHandlers.inc	Sat Jun 26 04:36:28 2010 +0200
@@ -2375,6 +2375,7 @@
 
     dec(Gear^.Health);
     Gear^.Timer := Gear^.Health*10;
+    Gear^.PortalCounter:= 0;
     // This is not seconds, but at least it is *some* feedback
     if (Gear^.Health = 0) or ((Gear^.Message and gm_Attack) <> 0) then
     begin
@@ -3234,7 +3235,7 @@
         // wow! good candidate there, let's see if the distance really is small enough!
         if (Distance(Gear^.X-iterator^.X,Gear^.Y-iterator^.Y) > acptRadius) then
             continue;
-
+(*
         noTrap := ((not Gear^.dY.isNegative or (Gear^.dY.QWordValue = 0))
                   // can't be entered from above
                   or ((conPortal^.dY.isNegative and not (conPortal^.dY.QWordValue = 0))));
@@ -3242,7 +3243,7 @@
 
         // prevent getting stuck in a ground portal loop       
         if noTrap and (iterator^.dY.QWordValue < _0_08.QWordValue) then
-            continue;
+            continue; *)
 
         iterator^.Active := true;
         iterator^.State := iterator^.State or gstMoving;
@@ -3255,13 +3256,21 @@
         cdxy := Distance(conPortal^.dX, conPortal^.dY);
         s := (Int2hwFloat(Gear^.Radius)) / cdxy;
 
-        iterator^.X := conPortal^.X + s * conPortal^.dX;
-        iterator^.Y := conPortal^.Y + s * conPortal^.dY;
-
-        s := Distance(iterator^.dX, iterator^.dY) / cdxy;
-
-        iterator^.dX := s * conPortal^.dX;
-        iterator^.dY := s * conPortal^.dY;
+        if iterator^.Kind = gtCake then
+            begin
+            iterator^.X := conPortal^.X ;
+            iterator^.Y := conPortal^.Y ;
+            end
+        else
+            begin
+            iterator^.X := conPortal^.X + s * conPortal^.dX;
+            iterator^.Y := conPortal^.Y + s * conPortal^.dY;
+
+            s := Distance(iterator^.dX, iterator^.dY) / cdxy;
+
+            iterator^.dX := s * conPortal^.dX;
+            iterator^.dY := s * conPortal^.dY
+            end;
 
         FollowGear := iterator;
 
--- a/hedgewars/uLandGraphics.pas	Sat Jun 26 04:36:04 2010 +0200
+++ b/hedgewars/uLandGraphics.pas	Sat Jun 26 04:36:28 2010 +0200
@@ -674,36 +674,60 @@
 
 function SweepDirty: boolean;
 var x, y, xx, yy: LongInt;
-    bRes, updateBlock, resweep: boolean;
+    bRes, updateBlock, resweep, recheck: boolean;
 begin
 bRes:= false;
+reCheck:= true;
 
-for y:= 0 to LAND_HEIGHT div 32 - 1 do
+while recheck do
     begin
-
-    for x:= 0 to LAND_WIDTH div 32 - 1 do
+    recheck:= false;
+    for y:= 0 to LAND_HEIGHT div 32 - 1 do
         begin
-        if LandDirty[y, x] <> 0 then
+        for x:= 0 to LAND_WIDTH div 32 - 1 do
             begin
-            updateBlock:= false;
-            resweep:= true;
-            while(resweep) do
+            if LandDirty[y, x] <> 0 then
                 begin
-                resweep:= false;
-                for yy:= y * 32 to y * 32 + 31 do
-                    for xx:= x * 32 to x * 32 + 31 do
-                        if Despeckle(xx, yy) then
-                            begin
-                            bRes:= true;
-                            updateBlock:= true;
-                            resweep:= true;
-                            end;
+                updateBlock:= false;
+                resweep:= true;
+                while(resweep) do
+                    begin
+                    resweep:= false;
+                    for yy:= y * 32 to y * 32 + 31 do
+                        for xx:= x * 32 to x * 32 + 31 do
+                            if Despeckle(xx, yy) then
+                                begin
+                                bRes:= true;
+                                updateBlock:= true;
+                                resweep:= true;
+                                if (yy = y*32) and (y > 0) then
+                                    begin
+                                    LandDirty[y-1, x]:= 1;
+                                    recheck:= true;
+                                    end
+                                else if (yy = y*32+31) and (y < LAND_HEIGHT div 32 - 1) then
+                                    begin
+                                    LandDirty[y+1, x]:= 1;
+                                    recheck:= true;
+                                    end;
+                                if (xx = x*32) and (x > 0) then
+                                    begin
+                                    LandDirty[y, x-1]:= 1;
+                                    recheck:= true;
+                                    end
+                                else if (xx = x*32+31) and (x < LAND_WIDTH div 32 - 1) then
+                                    begin
+                                    LandDirty[y, x+1]:= 1;
+                                    recheck:= true;
+                                    end
+                                end;
+                    end;
+                if updateBlock then UpdateLandTexture(x * 32, 32, y * 32, 32);
+                LandDirty[y, x]:= 0;
                 end;
-            if updateBlock then UpdateLandTexture(x * 32, 32, y * 32, 32);
-            LandDirty[y, x]:= 0;
             end;
         end;
-    end;
+     end;
 
 SweepDirty:= bRes;
 end;
--- a/share/hedgewars/Data/Locale/uk.txt	Sat Jun 26 04:36:04 2010 +0200
+++ b/share/hedgewars/Data/Locale/uk.txt	Sat Jun 26 04:36:28 2010 +0200
@@ -267,48 +267,48 @@
 03:43=Performing Beathoven's deadly sonata
 
 ; Weapon Descriptions (use | as line breaks)
-04:00=Атакуй ворогів використовуючи просту гранату.|Вона вибухне як тільки її таймер доходить до нуля.|1-5: Виставте тайиер гранати|Атака: Утримуйте щоб метнути сильніше
-04:01=Атакуй ворогів використовуючи кластерну бомбу.|Вона розділиться на менші бомби коли таймер|досягає нуля.|1-5: Виставте тайиер гранати|Атака: Утримуйте щоб метнути сильніше
-04:02=Атакуй ворогів балістичним снарядом,|на політ якого впливає вітер.|Атака: Утримуйте щоб стрельнути сильніше
-04:03=Запусти вибухонебезпечну бджолу, яка полетить|до вибраної цілі. Не стріляйте на повну силу|щоб поліпшити її точність.|Курсор: Виберіть ціль|Атака: Утримуйте щоб стрельнути сильніше
-04:04=Атакуй ворогів використовуючи рушницю з двома|пострілами.Завдяки її розмаху вам не потрібні точні|попадання щоб зашходити супернику.|Атака: Стріляй (кілька разів)
-04:05=Прямуй під землю! Візьми відбійний молоток,|просвердли в землі дірку та досягни інших областей.|Атака: Почніть або завершіть рити
+04:00=Атакуй ворогів використовуючи просту гранату.|Вона вибухне як тільки її таймер доходить до нуля.|1-5: Вистав таймер гранати|Атака: Утримуй щоб метнути сильніше
+04:01=Атакуй ворогів використовуючи кластерну|бомбу. Вона розділиться на менші бомби|коли таймер досягає нуля.|1-5: Вистав таймер гранати|Атака: Утримуй щоб метнути сильніше
+04:02=Атакуй ворогів балістичним снарядом,|на політ якого впливає вітер.|Атака: Утримуй щоб стрельнути сильніше
+04:03=Запусти вибухонебезпечну бджолу, яка|полетить до вибраної цілі. Не стріляй на|повну силу щоб поліпшити її точність.|Курсор: Вибери ціль|Атака: Утримуй щоб стрельнути сильніше
+04:04=Атакуй ворогів використовуючи рушницю з двома|пострілами.Завдяки її розмаху тобі не потрібні точні|попадання щоб зашкодити супернику.|Атака: Стріляй (кілька разів)
+04:05=Прямуй під землю! Візьми відбійний молоток,|просвердли в землі дірку та досягни інших областей.|Атака: Почни або заверши рити
 04:06=Засмутився? Немає можливості атакувати? Хочеш зберегти|боєприпаси? Без проблем! Просто пропусти хід, боягузе!|Атака: Пропусти свою чергу без бою
-04:07=Переміщуйся на далекі відстані з допомогою мотузки.|Використайте момент хитання щоб штовхнути інших їжаків|чи киньте в них гранату або іншу зброю.|Атака: Зачепіть або звільніть мотузку|Довгий Стрибок: Киньте гранати чи подібну зброю
-04:08=Утриуйте ворогів на відстані, кинувши міну|у вузький прохід або прямо прямо їм під ноги.|Тікайте подалі поки вона не здетонувала!|Атака: Киньте міну собі під ноги
-04:09=Вагаєтесь відносно цілі? Візьміть Пустельного|Орла та стріляйте аж до чотирьох разів.|Атака: Стріляй (кілька разів)
-04:10=Груба сила - завжди варіант. Киньте цю класичну|вибухівку поруч з ворогом та відступайте.|Атака: Киньте динаміт собі під ноги
+04:07=Переміщуйся на далекі відстані з допомогою мотузки.|Використай момент хитання щоб штовхнути інших їжаків|чи кинь в них гранату або іншу зброю.|Атака: Зачепи або звільни мотузку|Довгий Стрибок: Кинь гранати чи подібну зброю
+04:08=Утримуй ворогів на відстані, кинувши міну|у вузький прохід або прямо їм під ноги.|Тікай подалі поки вона не здетонувала!|Атака: Кинь міну собі під ноги
+04:09=Вагаєшся відносно цілі? Візьми Пустельного|Орла та стріляй аж до чотирьох разів.|Атака: Стріляй (кілька разів)
+04:10=Груба сила - завжди варіант. Кинь цю класичну|вибухівку поруч з ворогом та відступай.|Атака: Кинь динаміт собі під ноги
 04:11=Позбудься ворога, відправивши його за межі|мапи чи у воду. А як щодо|пограти бейсбол мінами з друзями?|Атака: Дубась все, що бачиш перед собою
-04:12=Підійдіть близенько та розкрийте всю силу|цієї майже смертельної техніки бойових мистецтв.|Атака: Виконайте Вогняний Стусан
+04:12=Підійди близенько та розкрий всю силу|цієї майже смертельної техніки бойових мистецтв.|Атака: Виконай Вогняний Стусан
 04:13=UNUSED
-04:14=Боїшся висоти? Краще візьми парашут.|Він відкриється коли|ви будете падати та|вбереже вашого їжака від поранення.|Атака: Розкрийте парашут|Довгий Стрибок: Киньте гранати чи подібну зброю
-04:15=Покличте літак для атаки ваших ворогів|бомбардуванням.|Вліво/Вправо: Визначіть напрямок нападу|Курсор: Виберіть цільовий регіон
-04:16=Покличте літак для скидання кількох мін|в вибрану область.|Вліво/Вправо: Визначіть напрямок нападу|Курсор: Виберіть цільовий регіон
-04:17=Необхідне укриття? З допомогою паяльної лампи вирийте|тунель в землі і забезпечте себе|укриттям.|Атака: Почніть або завершіть рити
-04:18=Потрібний додатковий захист або хочеш пройти|непрохідну землю? Розмістіть кілька балок як|вам до вподоби.|Вліво/Вправо: Виберіть потрібну балку|Курсор: Встановіть балку в доступне місце
-04:19=Застосована в потрбний момент телепортація може|бути могутнішою більшості зброї, оскільки|дозволяє вберегти їжаків від небезпечних|ситуацій за лічені секунди.|Курсор: Виберіть цільовий регіон
-04:20=Дозволяє здійснити поточний хід|іншим їжаком.|Атака: Ввімкніть перемикання їжаків
-04:21=Стріляє гранато-подібним снарядом, який|при зіткненні розлетиться на декілька бомб.|Атака: Стріляйте з всієї сили
+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:23=Коли нічого втрачати, це може бути|доречним. Принеси їжака в жертву, запустивши|його в певному напрямку та шкодячи всьому|на його шляху.В кінці шляху він вибухне.|Атака: Почни спустошливу та смертоносну атаку
+04:24=З днем народження! Запусти цей торт, нехай він|йде прямо до твоїх ворогів і влаштує їм вибухову|вечірку. Торт може пройти майже всюди|але може вибухнути раніше, ніж треба.|Атака: Запусти торт або хай зупиниться і вибухне
+04:25=Використай це маскування, щоб ворог стрибнув|назустріч твоєму їжакові (і в яку-небудь щілину або яму).|Атака: Візьми костюм і спробуй спокусити іншого їжака
+04:26=Кинь цей соковитий кавун в ворогів. Коли вийде|час на таймері, він буде розбитий на кілька|вибухових кусків.|1-5: Встановити таймер кавуна|Атака: Утримуй щоб стрельнути сильніше
 04:27=Щоб на суперників випав пекельний дощ|візьміть цю диявольську вибухівку. Не підходьте близько|бо іскри можуть летіти ще довго.|Атака: Утримуйте щоб стрельнути сильніше
-04:28=Через короткий час після запуску цієї ракети вона|почне бурити землю і вибухне як тільки спрацює|детонатор чи вона знов зіштовхнеться з поверхнею.|Атака: Утримуйте щоб стрельнути сильніше
-04:29=Це вам не іграшка! Цей пістолет стріляє купою|маленьких кольорових кульок, начинених вибухівкою.|Атака: Стріляйте з всієї сили|Вверх/Вниз: Змінюйте ціль
-04:30=Покличте літак для атаки потужним напалмом.|При правильному виборі цілі ця атака може|викоренити величезні частини ландшафту та|їжаків, які там опинились.|Вліво/Вправо: Визначіть напрямок нападу|Курсор: Виберіть цільовий регіон
-04:31=Літак є чудовою зброєю для збору ящиків чи|атаки на віддалених їжаків. Скеруйте його на ворога або|скиньте перед цим пару бомб.|Атака: Запустіть літак або скиньте бомби|Довгий Стрибок: Нехай валькірії вступають в бій|Вверх/Вниз: Керуйте літаком
+04:28=Через короткий час після запуску цієї ракети вона|почне бурити землю і вибухне як тільки спрацює|детонатор чи вона знов зіштовхнеться з поверхнею.|Атака: Утримуй щоб стрельнути сильніше
+04:29=Це тобі не іграшка! Цей пістолет стріляє купою|маленьких кольорових кульок, начинених вибухівкою.|Атака: Стріляй з всієї сили|Вверх/Вниз: Змінюй ціль
+04:30=Поклич літак для атаки потужним напалмом.|При правильному виборі цілі ця атака може|викоренити величезні частини ландшафту та|їжаків, які там опинились.|Вліво/Вправо: Визнач напрямок нападу|Курсор: Вибери цільовий регіон
+04:31=Літак є чудовою зброєю для збору ящиків чи|атаки на віддалених їжаків. Скеруй його на|ворога або скинь перед цим пару бомб.|Атака: Запусти літак або скинь бомби|Довгий Стрибок: Нехай валькірії вступають в бій|Вверх/Вниз: Керуй літаком
 04:32=Слабка гравітація ефективніша за будь-яку дієту! Стрибай|вище і на більші відстані або дозволь ворогам|літати ще краще.|Атака: Активувати
 04:33=Інколи просто нобхідний цей бонус, щоб нанести|більше шкоди.|Атака: Активувати
 04:34=Не чіпайте мене!|Атака: Активувати
 04:35=Інколи час минає занадто швидко. Візьми додаткові|секунди, щоб завершити атаку.|Атака: Активувати
 04:36=Так, інколи просто немає цілі. На|допомогу прийдуть сучасні технології.|Атака: Активувати
 04:37=Не бійся денного світла. Вампіризм буде діяти|лише протягом одного ходу, але передась тобі|життя, яке ти забрав в інших їжаків.|Атака: Активувати
-04:38=Снайперська гвинтівка може бути найбільш руйнівною|зброєю у вашому арсеналі, але вона не є ефективною|на близьких відстанях. Шкода зростає зі збільшенням|відстані до цілі.|Атака: Стріляй (двічі)
-04:39=Лети до іншої частини карти на літаючій|тарілці. Цей важко керований пристрій здатний|перенести вас на практично будь-яку позицію поля бою.|Атака: Активувати|Вверх/Вліво/Вправо: Прикладіть зусилля в одному напрямку|Довгий Стрибок: Киньте гранати чи подібну зброю
-04:40=Покрийте землю вогнем, використавши цю плашечку|наповнену горючою (незабаром) рідиною.|Атака: Утримуйте щоб стрельнути сильніше
-04:41=Природа може переплюнути навіть літаючу|тарілку. Пташка може поносити їжака навколо та|скинути яйця на ворогів!|Атака: Активуйте та скиньте яйця|Вверх/Вліво/Вправо: Лети в одному напрямку
+04:38=Снайперська гвинтівка може бути найбільш руйнівною|зброєю у твоєму арсеналі, але вона не є ефективною|на близьких відстанях. Шкода зростає зі збільшенням|відстані до цілі.|Атака: Стріляй (двічі)
+04:39=Лети до іншої частини карти на літаючій тарілці.|Цей важко керований пристрій здатний перенести|тебе на практично будь-яку позицію поля бою.|Атака: Активувати|Вверх/Вліво/Вправо: Приклади зусилля в одному напрямку|Довгий Стрибок: Кинь гранати чи подібну зброю
+04:40=Покрий землю вогнем, використавши цю плашечку|наповнену горючою (незабаром) рідиною.|Атака: Утримуй щоб стрельнути сильніше
+04:41=Природа може переплюнути навіть літаючу|тарілку. Пташка може поносити їжака|навколо та скинути яйця на ворогів!|Атака: Активуй та скинь яйця|Вверх/Вліво/Вправо: Лети в одному напрямку
 04:42=ВЕЛИЧЕЗНИЙ УСПІХ| | |(але текст відсутній!)
 04:43=(текст відсутній)