⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m_gunner.pas

📁 雷神之锤2(Quake2)Delphi源码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{----------------------------------------------------------------------------}
{                                                                            }
{ File(s): game\m_gunner.c                                                   }
{                                                                            }
{ Content: actor animation methods                                           }
{                                                                            }
{ Initial conversion by : Slavisa Milojkovic [keeper@milnet.co.yu]           }
{ Initial conversion on : 08-Apr-2002                                        }
{                                                                            }
{ This File contains part of convertion of Quake2 source to ObjectPascal.    }
{ More information about this project can be found at:                       }
{ http://www.sulaco.co.za/quake2/                                            }
{                                                                            }
{ Copyright (C) 1997-2001 Id Software, Inc.                                  }
{                                                                            }
{ This program is free software; you can redistribute it and/or              }
{ modify it under the terms of the GNU General Public License                }
{ as published by the Free Software Foundation; either version 2             }
{ of the License, or (at your option) any later version.                     }
{                                                                            }
{ This program is distributed in the hope that it will be useful,            }
{ but WITHOUT ANY WARRANTY; without even the implied warranty of             }
{ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                       }
{                                                                            }
{ See the GNU General Public License for more details.                       }
{                                                                            }
{----------------------------------------------------------------------------}
{ Updated on : 3-Mar-2002                                                    }
{----------------------------------------------------------------------------}
{ * Still dependent (to compile correctly) on:                               }
{ - g_local.pas                                                              }
{----------------------------------------------------------------------------}
{ * TODO:                                                                    }
{----------------------------------------------------------------------------}


{
==============================================================================

GUNNER

==============================================================================
}
unit m_gunner;


interface

uses g_local.pas;

// Taken from m_gunner.h
// This file generated by ModelGen - Do NOT Modify

const
  FRAME_stand01           0;
  FRAME_stand02           1;
  FRAME_stand03           2;
  FRAME_stand04           3;
  FRAME_stand05           4;
  FRAME_stand06           5;
  FRAME_stand07           6;
  FRAME_stand08           7;
  FRAME_stand09           8;
  FRAME_stand10           9;
  FRAME_stand11           10;
  FRAME_stand12           11;
  FRAME_stand13           12;
  FRAME_stand14           13;
  FRAME_stand15           14;
  FRAME_stand16           15;
  FRAME_stand17           16;
  FRAME_stand18           17;
  FRAME_stand19           18;
  FRAME_stand20           19;
  FRAME_stand21           20;
  FRAME_stand22           21;
  FRAME_stand23           22;
  FRAME_stand24           23;
  FRAME_stand25           24;
  FRAME_stand26           25;
  FRAME_stand27           26;
  FRAME_stand28           27;
  FRAME_stand29           28;
  FRAME_stand30           29;
  FRAME_stand31           30;
  FRAME_stand32           31;
  FRAME_stand33           32;
  FRAME_stand34           33;
  FRAME_stand35           34;
  FRAME_stand36           35;
  FRAME_stand37           36;
  FRAME_stand38           37;
  FRAME_stand39           38;
  FRAME_stand40           39;
  FRAME_stand41           40;
  FRAME_stand42           41;
  FRAME_stand43           42;
  FRAME_stand44           43;
  FRAME_stand45           44;
  FRAME_stand46           45;
  FRAME_stand47           46;
  FRAME_stand48           47;
  FRAME_stand49           48;
  FRAME_stand50           49;
  FRAME_stand51           50;
  FRAME_stand52           51;
  FRAME_stand53           52;
  FRAME_stand54           53;
  FRAME_stand55           54;
  FRAME_stand56           55;
  FRAME_stand57           56;
  FRAME_stand58           57;
  FRAME_stand59           58;
  FRAME_stand60           59;
  FRAME_stand61           60;
  FRAME_stand62           61;
  FRAME_stand63           62;
  FRAME_stand64           63;
  FRAME_stand65           64;
  FRAME_stand66           65;
  FRAME_stand67           66;
  FRAME_stand68           67;
  FRAME_stand69           68;
  FRAME_stand70           69;
  FRAME_walk01            70;
  FRAME_walk02            71;
  FRAME_walk03            72;
  FRAME_walk04            73;
  FRAME_walk05            74;
  FRAME_walk06            75;
  FRAME_walk07            76;
  FRAME_walk08            77;
  FRAME_walk09            78;
  FRAME_walk10            79;
  FRAME_walk11            80;
  FRAME_walk12            81;
  FRAME_walk13            82;
  FRAME_walk14            83;
  FRAME_walk15            84;
  FRAME_walk16            85;
  FRAME_walk17            86;
  FRAME_walk18            87;
  FRAME_walk19            88;
  FRAME_walk20            89;
  FRAME_walk21            90;
  FRAME_walk22            91;
  FRAME_walk23            92;
  FRAME_walk24            93;
  FRAME_run01             94;
  FRAME_run02             95;
  FRAME_run03             96;
  FRAME_run04             97;
  FRAME_run05             98;
  FRAME_run06             99;
  FRAME_run07             100;
  FRAME_run08             101;
  FRAME_runs01            102;
  FRAME_runs02            103;
  FRAME_runs03            104;
  FRAME_runs04            105;
  FRAME_runs05            106;
  FRAME_runs06            107;
  FRAME_attak101          108;
  FRAME_attak102          109;
  FRAME_attak103          110;
#define FRAME_attak104          111
#define FRAME_attak105          112
#define FRAME_attak106          113
#define FRAME_attak107          114
#define FRAME_attak108          115
#define FRAME_attak109          116
#define FRAME_attak110          117
#define FRAME_attak111          118
#define FRAME_attak112          119
#define FRAME_attak113          120
#define FRAME_attak114          121
#define FRAME_attak115          122
#define FRAME_attak116          123
#define FRAME_attak117          124
#define FRAME_attak118          125
#define FRAME_attak119          126
#define FRAME_attak120          127
#define FRAME_attak121          128
#define FRAME_attak201          129
#define FRAME_attak202          130
#define FRAME_attak203          131
#define FRAME_attak204          132
#define FRAME_attak205          133
#define FRAME_attak206          134
#define FRAME_attak207          135
#define FRAME_attak208          136
#define FRAME_attak209          137
#define FRAME_attak210          138
#define FRAME_attak211          139
#define FRAME_attak212          140
#define FRAME_attak213          141
#define FRAME_attak214          142
#define FRAME_attak215          143
#define FRAME_attak216          144
#define FRAME_attak217          145
#define FRAME_attak218          146
#define FRAME_attak219          147
#define FRAME_attak220          148
#define FRAME_attak221          149
#define FRAME_attak222          150
#define FRAME_attak223          151
#define FRAME_attak224          152
#define FRAME_attak225          153
#define FRAME_attak226          154
#define FRAME_attak227          155
#define FRAME_attak228          156
#define FRAME_attak229          157
#define FRAME_attak230          158
#define FRAME_pain101           159
#define FRAME_pain102           160
#define FRAME_pain103           161
#define FRAME_pain104           162
#define FRAME_pain105           163
#define FRAME_pain106           164
#define FRAME_pain107           165
#define FRAME_pain108           166
#define FRAME_pain109           167
#define FRAME_pain110           168
#define FRAME_pain111           169
#define FRAME_pain112           170
#define FRAME_pain113           171
#define FRAME_pain114           172
#define FRAME_pain115           173
#define FRAME_pain116           174
#define FRAME_pain117           175
#define FRAME_pain118           176
#define FRAME_pain201           177
#define FRAME_pain202           178
#define FRAME_pain203           179
#define FRAME_pain204           180
#define FRAME_pain205           181
#define FRAME_pain206           182
#define FRAME_pain207           183
#define FRAME_pain208           184
#define FRAME_pain301           185
#define FRAME_pain302           186
#define FRAME_pain303           187
#define FRAME_pain304           188
#define FRAME_pain305           189
#define FRAME_death01           190
#define FRAME_death02           191
#define FRAME_death03           192
#define FRAME_death04           193
#define FRAME_death05           194
#define FRAME_death06           195
#define FRAME_death07           196
#define FRAME_death08           197
#define FRAME_death09           198
#define FRAME_death10           199
#define FRAME_death11           200
#define FRAME_duck01            201
#define FRAME_duck02            202
#define FRAME_duck03            203
#define FRAME_duck04            204
#define FRAME_duck05            205
#define FRAME_duck06            206
#define FRAME_duck07            207
#define FRAME_duck08            208

#define MODEL_SCALE    1.150000

var
  sound_pain,
  sound_pain2,
  sound_death,
  sound_idle,
  sound_open,
  sound_search,
  sound_sight: integer;


procedure gunner_idlesound (self: edict_t);
begin
  gi.sound (self, CHAN_VOICE, sound_idle, 1, ATTN_IDLE, 0);
end;

procedure gunner_sight (self, other: edict_t);
begin
  gi.sound (self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
end;

procedure gunner_search (self: edict_t);
begin
  gi.sound (self, CHAN_VOICE, sound_search, 1, ATTN_NORM, 0);
end;


visible := function(self, other: edict_t): qboolean; cdecl;
GunnerGrenade := procedure(self: edict_t); cdecl;
GunnerFire := procedure(self: edict_t); cdecl;
gunner_fire_chain := procedure(self: edict_t); cdecl;
gunner_refire_chain := procedure(self: edict_t); cdecl;


gunner_stand := procedure(self: edict_t); cdecl;

gunner_frames_fidget: mframe_t =
(
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, gunner_idlesound,
  ai_stand, 0, NULL,

  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,

  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,

  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,

  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL
);

const
  gunner_move_fidget: mmove_t = (FRAME_stand31, FRAME_stand70, gunner_frames_fidget, gunner_stand);

procedure gunner_fidget (self: edict_t);
begin
  if (self.monsterinfo.aiflags & AI_STAND_GROUND) then
    exit;
  if (random() <= 0.05)
    self.monsterinfo.currentmove := gunner_move_fidget;
end;

const
  gunner_frames_stand: mframe_t =
[
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, gunner_fidget,

  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, gunner_fidget,

  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, NULL,
  ai_stand, 0, gunner_fidget
];

const
  gunner_move_stand: mmove_t = (FRAME_stand01, FRAME_stand30, gunner_frames_stand, NULL);

procedure gunner_stand (self: edict_t);
begin
    self.monsterinfo.currentmove := gunner_move_stand;
end;

const
  gunner_frames_walk: mframe_t =
[
  ai_walk, 0, NULL,
  ai_walk, 3, NULL,
  ai_walk, 4, NULL,
  ai_walk, 5, NULL,
  ai_walk, 7, NULL,
  ai_walk, 2, NULL,
  ai_walk, 6, NULL,
  ai_walk, 4, NULL,
  ai_walk, 2, NULL,
  ai_walk, 7, NULL,
  ai_walk, 5, NULL,
  ai_walk, 7, NULL,
  ai_walk, 4, NULL
];

const
  gunner_move_walk: mmove_t = (FRAME_walk07, FRAME_walk19, gunner_frames_walk, NULL);

procedure gunner_walk (self: edict_t);
begin
  self.monsterinfo.currentmove := gunner_move_walk;
end;

const
  gunner_frames_run: mframe_t =

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -