hedgewars/uAIActions.pas
author koda
Fri, 06 Jan 2012 01:51:04 +0100
changeset 6551 a2f39cb9af62
parent 6535 51a7e71ad317
child 6580 6155187bf599
permissions -rw-r--r--
fix a couple of loose ends: sdl_mixer is informed of that OGG is provided by Tremor with its own macro, there is no more a segfault on Tremor cleanup, added new event type and timestamp entry for SDL, removed spurious characters from the japanese translation, uSound errors now are output with SDLTry, uSound doesn't need sound preloading any more
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
71
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
     1
(*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 883
diff changeset
     2
 * Hedgewars, a free turn based strategy game
4976
088d40d8aba2 Happy 2011 :)
koda
parents: 4414
diff changeset
     3
 * Copyright (c) 2004-2011 Andrey Korotaev <unC0Rr@gmail.com>
71
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
     4
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
71
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
     8
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
    12
 * GNU General Public License for more details.
71
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
    13
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
    14
 * You should have received a copy of the GNU General Public License
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
    15
 * along with this program; if not, write to the Free Software
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
71
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
    17
 *)
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
    18
2630
079ef82eac75 revamped file access and debug display
koda
parents: 2599
diff changeset
    19
{$INCLUDE "options.inc"}
079ef82eac75 revamped file access and debug display
koda
parents: 2599
diff changeset
    20
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    21
unit uAIActions;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    22
interface
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 3407
diff changeset
    23
uses uFloat, uTypes;
2630
079ef82eac75 revamped file access and debug display
koda
parents: 2599
diff changeset
    24
3165
3ec07a7d8456 just some very sane stuff for the iphone port (plus some macro on pascal files)
koda
parents: 2630
diff changeset
    25
const MAXACTIONS     = 96;
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
    26
      aia_none       = 0;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    27
      aia_Left       = 1;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    28
      aia_Right      = 2;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    29
      aia_Timer      = 3;
70
82d93eeecebe - Many AI improvements
unc0rr
parents: 66
diff changeset
    30
      aia_attack     = 4;
82d93eeecebe - Many AI improvements
unc0rr
parents: 66
diff changeset
    31
      aia_Up         = 5;
82d93eeecebe - Many AI improvements
unc0rr
parents: 66
diff changeset
    32
      aia_Down       = 6;
6393
701eb3f3556a Make AI use switcher when:
unc0rr
parents: 5419
diff changeset
    33
      aia_Switch     = 7;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    34
195
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    35
      aia_Weapon     = $8000;
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    36
      aia_WaitXL     = $8001;
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    37
      aia_WaitXR     = $8002;
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    38
      aia_LookLeft   = $8003;
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    39
      aia_LookRight  = $8004;
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    40
      aia_AwareExpl  = $8005;
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    41
      aia_HJump      = $8006;
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    42
      aia_LJump      = $8007;
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    43
      aia_Skip       = $8008;
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    44
      aia_Wait       = $8009;
543
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 433
diff changeset
    45
      aia_Put        = $800A;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    46
195
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    47
      aim_push       = $8000;
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    48
      aim_release    = $8001;
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    49
      ai_specmask    = $8000;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    50
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
    51
type TAction = record
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 369
diff changeset
    52
               Action: Longword;
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 369
diff changeset
    53
               X, Y, Param: LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    54
               Time: Longword;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    55
               end;
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
    56
     TActions = record
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
    57
                Count, Pos: Longword;
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
    58
                actions: array[0..Pred(MAXACTIONS)] of TAction;
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 369
diff changeset
    59
                Score: LongInt;
6395
bb04d7a9f7e2 Make AI be less scared by crates. Actually, now it starts using switcher just to pick a crate up.
unc0rr
parents: 6393
diff changeset
    60
                isWalkingToABetterPlace: boolean;
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
    61
                end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    62
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 369
diff changeset
    63
procedure AddAction(var Actions: TActions; Action: Longword; Param: LongInt; TimeDelta: Longword; X, Y: LongInt);
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
    64
procedure ProcessAction(var Actions: TActions; Me: PGear);
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
    65
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    66
implementation
6535
51a7e71ad317 It seems there's no need to copy gear's msg. Fixes bots getting stuck after hog switch.
unc0rr
parents: 6474
diff changeset
    67
uses uAIMisc, uAI, uAmmos, uVariables, uCommands, uUtils, uDebug, uIO{$IFDEF TRACEAIACTIONS}, uConsole{$ENDIF};
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    68
6393
701eb3f3556a Make AI use switcher when:
unc0rr
parents: 5419
diff changeset
    69
const ActionIdToStr: array[0..7] of string[16] = (
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    70
{aia_none}           '',
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    71
{aia_Left}           'left',
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    72
{aia_Right}          'right',
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    73
{aia_Timer}          'timer',
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    74
{aia_attack}         'attack',
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    75
{aia_Up}             'up',
6393
701eb3f3556a Make AI use switcher when:
unc0rr
parents: 5419
diff changeset
    76
{aia_Down}           'down',
701eb3f3556a Make AI use switcher when:
unc0rr
parents: 5419
diff changeset
    77
{aia_Switch}         'switch'
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
    78
                     );
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    79
80
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    80
{$IFDEF TRACEAIACTIONS}
195
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    81
const SpecActionIdToStr: array[$8000..$8009] of string[16] = (
80
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    82
{aia_Weapon}             'aia_Weapon',
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    83
{aia_WaitX}              'aia_WaitX',
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    84
{aia_WaitY}              'aia_WaitY',
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    85
{aia_LookLeft}           'aia_LookLeft',
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    86
{aia_LookRight}          'aia_LookRight',
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    87
{aia_AwareExpl}          'aia_AwareExpl',
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    88
{aia_HJump}              'aia_HJump',
144
e6084b0c9316 - Fix 'new team' regression
unc0rr
parents: 143
diff changeset
    89
{aia_LJump}              'aia_LJump',
193
56885ea29202 Fix bots regressions
unc0rr
parents: 183
diff changeset
    90
{aia_Skip}               'aia_Skip',
56885ea29202 Fix bots regressions
unc0rr
parents: 183
diff changeset
    91
{aia_Wait}               'aia_Wait'
80
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    92
);
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    93
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    94
procedure DumpAction(Action: TAction; Me: PGear);
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    95
begin
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    96
if (Action.Action and ai_specmask) = 0 then
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    97
   WriteLnToConsole('AI action: '+ActionIdToStr[Action.Action])
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    98
else begin
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    99
   WriteLnToConsole('AI action: '+SpecActionIdToStr[Action.Action]);
193
56885ea29202 Fix bots regressions
unc0rr
parents: 183
diff changeset
   100
   if (Action.Action = aia_WaitXL) or (Action.Action = aia_WaitXR) then
4374
bcefeeabaa33 Move some stuff from uMisc to uUtils
unC0Rr
parents: 4373
diff changeset
   101
      WriteLnToConsole('AI action Wait X = '+IntToStr(Action.Param)+', current X = '+IntToStr(hwRound(Me^.X)))
bcefeeabaa33 Move some stuff from uMisc to uUtils
unC0Rr
parents: 4373
diff changeset
   102
   else if (Action.Action = aia_AwareExpl) then WriteLnToConsole('Aware X = ' + IntToStr(Action.X) + ', Y = ' + IntToStr(Action.Y));
80
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
   103
   end
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
   104
end;
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
   105
{$ENDIF}
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
   106
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 369
diff changeset
   107
procedure AddAction(var Actions: TActions; Action: Longword; Param: LongInt; TimeDelta: Longword; X, Y: LongInt);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   108
begin
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   109
with Actions do
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   110
     begin
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   111
     actions[Count].Action:= Action;
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   112
     actions[Count].Param:= Param;
71
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
   113
     actions[Count].X:= X;
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
   114
     actions[Count].Y:= Y;
66
9643d75baf1e Many AI improvements, bots do think in separate thread
unc0rr
parents: 64
diff changeset
   115
     if Count > 0 then actions[Count].Time:= TimeDelta
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   116
                  else actions[Count].Time:= GameTicks + TimeDelta;
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   117
     inc(Count);
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   118
     TryDo(Count < MAXACTIONS, 'AI: actions overflow', true);
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   119
     end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   120
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   121
6474
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   122
procedure CheckHang(Me: PGear);
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   123
const PrevX: LongInt = 0;
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   124
      timedelta: Longword = 0;
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   125
begin
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   126
if hwRound(Me^.X) <> PrevX then
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   127
   begin
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   128
   PrevX:= hwRound(Me^.X);
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   129
   timedelta:= 0
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   130
   end else
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   131
   begin
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   132
   inc(timedelta);
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   133
   if timedelta > 1700 then
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   134
      begin
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   135
      timedelta:= 0;
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   136
      FreeActionsList
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   137
      end
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   138
   end
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   139
end;
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   140
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   141
procedure ProcessAction(var Actions: TActions; Me: PGear);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   142
var s: shortstring;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   143
begin
194
88652abdce9a Fixed weird bots behavior
unc0rr
parents: 193
diff changeset
   144
repeat
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   145
if Actions.Pos >= Actions.Count then exit;
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   146
with Actions.actions[Actions.Pos] do
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   147
     begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   148
     if Time > GameTicks then exit;
80
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
   149
     {$IFDEF TRACEAIACTIONS}
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
   150
     DumpAction(Actions.actions[Actions.Pos], Me);
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
   151
     {$ENDIF}
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   152
     if (Action and ai_specmask) <> 0 then
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   153
        case Action of
165
9b9144948668 Many small fixes
unc0rr
parents: 144
diff changeset
   154
           aia_Weapon: SetWeapon(TAmmoType(Param));
544
9e068d2398ca Fix AI jumping to wrong direction on the turn start
unc0rr
parents: 543
diff changeset
   155
           aia_WaitXL: if hwRound(Me^.X) = Param then
9e068d2398ca Fix AI jumping to wrong direction on the turn start
unc0rr
parents: 543
diff changeset
   156
                          begin
9e068d2398ca Fix AI jumping to wrong direction on the turn start
unc0rr
parents: 543
diff changeset
   157
                          Action:= aia_LookLeft;
9e068d2398ca Fix AI jumping to wrong direction on the turn start
unc0rr
parents: 543
diff changeset
   158
                          Time:= GameTicks;
9e068d2398ca Fix AI jumping to wrong direction on the turn start
unc0rr
parents: 543
diff changeset
   159
                          exit
9e068d2398ca Fix AI jumping to wrong direction on the turn start
unc0rr
parents: 543
diff changeset
   160
                          end
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   161
                          else if hwRound(Me^.X) < Param then
193
56885ea29202 Fix bots regressions
unc0rr
parents: 183
diff changeset
   162
                               begin
5419
2fed5e26ff7d Comment out unsynced logging
unc0rr
parents: 4976
diff changeset
   163
                               //OutError('AI: WaitXL assert (' + IntToStr(hwRound(Me^.X)) + ' < ' + IntToStr(Param) + ')', false);
433
9f8f22094c0e AI thinks in separate thread
unc0rr
parents: 393
diff changeset
   164
                               FreeActionsList;
9f8f22094c0e AI thinks in separate thread
unc0rr
parents: 393
diff changeset
   165
                               exit
193
56885ea29202 Fix bots regressions
unc0rr
parents: 183
diff changeset
   166
                               end
6474
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   167
                          else begin CheckHang(Me); exit end;
544
9e068d2398ca Fix AI jumping to wrong direction on the turn start
unc0rr
parents: 543
diff changeset
   168
           aia_WaitXR: if hwRound(Me^.X) = Param then
9e068d2398ca Fix AI jumping to wrong direction on the turn start
unc0rr
parents: 543
diff changeset
   169
                          begin
9e068d2398ca Fix AI jumping to wrong direction on the turn start
unc0rr
parents: 543
diff changeset
   170
                          Action:= aia_LookRight;
9e068d2398ca Fix AI jumping to wrong direction on the turn start
unc0rr
parents: 543
diff changeset
   171
                          Time:= GameTicks;
9e068d2398ca Fix AI jumping to wrong direction on the turn start
unc0rr
parents: 543
diff changeset
   172
                          exit
9e068d2398ca Fix AI jumping to wrong direction on the turn start
unc0rr
parents: 543
diff changeset
   173
                          end
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   174
                          else if hwRound(Me^.X) > Param then
193
56885ea29202 Fix bots regressions
unc0rr
parents: 183
diff changeset
   175
                               begin
5419
2fed5e26ff7d Comment out unsynced logging
unc0rr
parents: 4976
diff changeset
   176
                               //OutError('AI: WaitXR assert (' + IntToStr(hwRound(Me^.X)) + ' > ' + IntToStr(Param) + ')', false);
433
9f8f22094c0e AI thinks in separate thread
unc0rr
parents: 393
diff changeset
   177
                               FreeActionsList;
9f8f22094c0e AI thinks in separate thread
unc0rr
parents: 393
diff changeset
   178
                               exit
193
56885ea29202 Fix bots regressions
unc0rr
parents: 183
diff changeset
   179
                               end
6474
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   180
                          else begin CheckHang(Me); exit end;
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   181
         aia_LookLeft: if not Me^.dX.isNegative then
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   182
                          begin
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   183
                          ParseCommand('+left', true);
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   184
                          exit
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   185
                          end else ParseCommand('-left', true);
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   186
        aia_LookRight: if Me^.dX.isNegative then
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   187
                          begin
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   188
                          ParseCommand('+right', true);
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   189
                          exit
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   190
                          end else ParseCommand('-right', true);
71
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
   191
        aia_AwareExpl: AwareOfExplosion(X, Y, Param);
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   192
            aia_HJump: ParseCommand('hjump', true);
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   193
            aia_LJump: ParseCommand('ljump', true);
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   194
             aia_Skip: ParseCommand('skip', true);
543
465e2ec8f05f - Better randomness of placing hedgehogs on the land
unc0rr
parents: 433
diff changeset
   195
              aia_Put: doPut(X, Y, true);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   196
             end else
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   197
        begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   198
        s:= ActionIdToStr[Action];
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   199
        if (Param and ai_specmask) <> 0 then
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   200
           case Param of
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   201
             aim_push: s:= '+' + s;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   202
          aim_release: s:= '-' + s;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   203
             end
4374
bcefeeabaa33 Move some stuff from uMisc to uUtils
unC0Rr
parents: 4373
diff changeset
   204
          else if Param <> 0 then s:= s + ' ' + IntToStr(Param);
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   205
        ParseCommand(s, true)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   206
        end
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   207
     end;
66
9643d75baf1e Many AI improvements, bots do think in separate thread
unc0rr
parents: 64
diff changeset
   208
inc(Actions.Pos);
9643d75baf1e Many AI improvements, bots do think in separate thread
unc0rr
parents: 64
diff changeset
   209
if Actions.Pos <= Actions.Count then
194
88652abdce9a Fixed weird bots behavior
unc0rr
parents: 193
diff changeset
   210
   inc(Actions.actions[Actions.Pos].Time, GameTicks);
88652abdce9a Fixed weird bots behavior
unc0rr
parents: 193
diff changeset
   211
until false
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   212
end;
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   213
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   214
end.