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

📄 m_insane.pas

📁 雷神之锤2(Quake2)Delphi源码
💻 PAS
📖 第 1 页 / 共 3 页
字号:
insane

==============================================================================
*/}

uses g_local;

var sound_fist: integer;
var sound_shake: integer;
var sound_moan: integer;
var sound_scream[8]: integer;

procedure insane_fist(self: edict_p);
procedure insane_shake(self: edict_p)
procedure insane_moan(self: edict_p)
procedure insane_scream (self: edict_p)

// below declarations eliminates the need for the forward void proc's in the C source
procedure insane_cross(self: edict_p)
procedure insane_walk(self: edict_p)
procedure insane_run(self: edict_p)
procedure insane_pain(self: edict_p; other: edict_p; kick: singke; damage: integer)
procedure insane_onground(self: edict_p)
procedure insane_checkdown(self: edict_t)
procedure insane_checkup(self: edict_p)
procedure insane_stand(self: edict_p)
procedure insane_dead(self: edict_p)
procedure insane_die(self: edict_p, inflictor: edict_p, attacker: edict_p, damage: integer, point: vec3_t)
procedure SP_misc_insane(self: edict_p)

implementation

type
  mframe_t = record
    aifunc : procedure(self : integer; dist : single);
    dist   : Single;
    thinkfunc : procedure(self : edict_p);
    end; { mframe_t }

  mmove_t = record
   firstframe : Integer;
   lastframe  :Integer;
   frame   : ^mframe_t;
   endfunc : procedure(self : edict_p);
   end; { mmove_t }

const
  insane_frames_stand_normal : array [0..5] of mframe_t = (
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: insane_checkdown));

  insane_move_stand_normal : mmove_t = (firstframe: FRAME_stand60; lastframe:FRAME_stand65; frame:@insane_frames_stand_normal,
    endfunc: @insane_stand);

  insane_frames_stand_insane : array [0..29] of mframe_t = (
    (aifunc: aistand; dist: 0, thinkfunc: insane_shake),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),

    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),

    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: null),
    (aifunc: aistand; dist: 0, thinkfunc: insane_checkdown));

  insane_move_stand_insane : mmove_t = (firstframe: FRAME_stand65; lastframe:FRAME_stand94; frame:@insane_frames_stand_insane,
    endfunc: @insane_stand);

  insane_frames_uptodown : array [0..39] of mframe_t = (
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: insane_moan),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),

    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),

    (aifunc: aimove; dist: 2.7, thinkfunc: null),
    (aifunc: aimove; dist: 4.1, thinkfunc: null),
    (aifunc: aimove; dist: 6, thinkfunc: null),
    (aifunc: aimove; dist: 7.6, thinkfunc: null),
    (aifunc: aimove; dist: 3.6, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: insane_fist),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),

    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: insane_fist),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null));

  insane_move_uptodown : mmove_t = (firstframe: FRAME_stand1; lastframe:FRAME_stand40; frame:@insane_frames_uptodown,
    endfunc: @insane_onground);

  insane_frames_downtoup : array [0..18] of mframe_t = (
    (aifunc: aimove; dist: -0.7, thinkfunc: null), // 41
    (aifunc: aimove; dist: -1.2, thinkfunc: null), // 42
    (aifunc: aimove; dist: -1.5, thinkfunc: null), // 43
    (aifunc: aimove; dist: -4.5, thinkfunc: null), // 44
    (aifunc: aimove; dist: -3.5, thinkfunc: null), // 45
    (aifunc: aimove; dist: -0.2, thinkfunc: null), // 46
    (aifunc: aimove; dist: 0, thinkfunc: null), // 47
    (aifunc: aimove; dist: -1.3, thinkfunc: null), //48
    (aifunc: aimove; dist: -3, thinkfunc: null), // 49
    (aifunc: aimove; dist: -2, thinkfunc: null), // 50

    (aifunc: aimove; dist: 0, thinkfunc: null), // 51
    (aifunc: aimove; dist: 0, thinkfunc: null), // 52
    (aifunc: aimove; dist: 0, thinkfunc: null), // 53
    (aifunc: aimove; dist: -3.3, thinkfunc: null), // 54
    (aifunc: aimove; dist: 1.6, thinkfunc: null), // 55
    (aifunc: aimove; dist: -0.3, thinkfunc: null), // 56
    (aifunc: aimove; dist: 0, thinkfunc: null), //57
    (aifunc: aimove; dist: 0, thinkfunc: null), //58
    (aifunc: aimove; dist: 0, thinkfunc: null)); // 59

  insane_move_downtoup : mmove_t = (firstframe: FRAME_stand41; lastframe:FRAME_stand59; frame:@insane_frames_downtoup,
    endfunc: @insane_stand);

  insane_frames_jumpdown : array [0..4] of mframe_t = (
    (aifunc: aimove; dist: 0.2, thinkfunc: null),
    (aifunc: aimove; dist: 11.5, thinkfunc: null),
    (aifunc: aimove; dist: 5.1, thinkfunc: null),
    (aifunc: aimove; dist: 7.1, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null));

  insane_move_jumpdown: mmove_t = (firstframe: FRAME_stand96; lastframe:FRAME_stand100; frame:@insane_frames_jumpdown,
    endfunc: @insane_onground);

  insane_frames_down : array [0..60] of mframe_t = (
    (aifunc: aimove; dist: 0, thinkfunc: null), // 100
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),

    (aifunc: aimove; dist: 0, thinkfunc: null), // 110
    (aifunc: aimove; dist: -1.7, thinkfunc: null),
    (aifunc: aimove; dist: -1.6, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: insane_fist),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),

    (aifunc: aimove; dist: 0, thinkfunc: null), // 120
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),

    (aifunc: aimove; dist: 0, thinkfunc: null), // 130
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: insane_moan),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),

    (aifunc: aimove; dist: 0, thinkfunc: null), // 140
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),

    (aifunc: aimove; dist: 0, thinkfunc: null), // 150
    (aifunc: aimove; dist: 0.5, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: -0.2, thinkfunc: insane_scream),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0.2, thinkfunc: null),
    (aifunc: aimove; dist: 0.4, thinkfunc: null),
    (aifunc: aimove; dist: 0.6, thinkfunc: null),
    (aifunc: aimove; dist: 0.8, thinkfunc: null),
    (aifunc: aimove; dist: 0.7, thinkfunc: null),

    (aifunc: aimove; dist: 0, thinkfunc: insane_checkup)); // 160

  insane_move_down: mmove_t = (firstframe: FRAME_stand100; lastframe:FRAME_stand160; frame:@insane_frames_down,
    endfunc: @insane_onground);

  insane_frames_walk_normal: array [0..12] of mframe_t = (
    (aifunc: aiwalk; dist: 0, thinkfunc: insane_scream),
    (aifunc: aiwalk; dist: 2.5, thinkfunc: null),
    (aifunc: aiwalk; dist: 3.5, thinkfunc: null),
    (aifunc: aiwalk; dist: 1.7, thinkfunc: null),
    (aifunc: aiwalk; dist: 2.3, thinkfunc: null),
    (aifunc: aiwalk; dist: 2.4, thinkfunc: null),
    (aifunc: aiwalk; dist: 2.2, thinkfunc: null),
    (aifunc: aiwalk; dist: 4.2, thinkfunc: null),
    (aifunc: aiwalk; dist: 5.6, thinkfunc: null),
    (aifunc: aiwalk; dist: 3.3, thinkfunc: null),

    (aifunc: aiwalk; dist: 2.4, thinkfunc: null),
    (aifunc: aiwalk; dist: 0.9, thinkfunc: null),
    (aifunc: aiwalk; dist: 0, thinkfunc: null));

  insane_move_walk_normal: mmove_t = (firstframe: FRAME_walk27; lastframe:FRAME_walk39; frame:@insane_frames_walk_normal,
    endfunc: @insane_walk);

  insane_move_run_normal: mmove_t = (firstframe: FRAME_walk27; lastframe:FRAME_walk39; frame:@insane_frames_walk_normal,
    endfunc: @insane_run);

  insane_frames_walk_insane: array [0..25] of mframe_t = (
    (aifunc: aiwalk; dist: 0, thinkfunc: insane_scream), // walk 1
    (aifunc: aiwalk; dist: 3.4, thinkfunc: null), // walk 2
    (aifunc: aiwalk; dist: 3.6, thinkfunc: null), // walk 3
    (aifunc: aiwalk; dist: 2.9, thinkfunc: null), // walk 4
    (aifunc: aiwalk; dist: 2.2, thinkfunc: null), // walk 5
    (aifunc: aiwalk; dist: 2.6, thinkfunc: null), // walk 6
    (aifunc: aiwalk; dist: 0, thinkfunc: null), // walk 7
    (aifunc: aiwalk; dist: 0.7, thinkfunc: null), // walk 8
    (aifunc: aiwalk; dist: 4.8, thinkfunc: null), // walk 9
    (aifunc: aiwalk; dist: 5.3, thinkfunc: null), // walk 10

    (aifunc: aiwalk; dist: 1.1, thinkfunc: null), // walk 11
    (aifunc: aiwalk; dist: 2, thinkfunc: null), // walk 12
    (aifunc: aiwalk; dist: 0.5, thinkfunc: null), // walk 13
    (aifunc: aiwalk; dist: 0, thinkfunc: null), // walk 14
    (aifunc: aiwalk; dist: 0, thinkfunc: null), // walk 15
    (aifunc: aiwalk; dist: 4.9, thinkfunc: null), // walk 16
    (aifunc: aiwalk; dist: 6.7, thinkfunc: null), // walk 17
    (aifunc: aiwalk; dist: 3.8, thinkfunc: null), // walk 18
    (aifunc: aiwalk; dist: 2, thinkfunc: null), // walk 19
    (aifunc: aiwalk; dist: 0.2, thinkfunc: null), // walk 20

    (aifunc: aiwalk; dist: 0, thinkfunc: null), // walk 21
    (aifunc: aiwalk; dist: 3.4, thinkfunc: null), // walk 22
    (aifunc: aiwalk; dist: 6.4, thinkfunc: null), // walk 23
    (aifunc: aiwalk; dist: 5, thinkfunc: null), // walk 24
    (aifunc: aiwalk; dist: 1.8, thinkfunc: null), // walk 25
    (aifunc: aiwalk; dist: 0, thinkfunc: null)); // walk 26

  insane_move_walk_insane: mmove_t = (firstframe: FRAME_walk27; lastframe:FRAME_walk39; frame:@insane_frames_walk_insane,
    endfunc: @insane_walk);

  insane_move_run_insane: mmove_t = (firstframe: FRAME_walk27; lastframe:FRAME_walk39; frame:@insane_frames_walk_insane,
    endfunc: @insane_run);

  insane_frames_stand_pain: array [0..10] of mframe_t = (
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),

    (aifunc: aimove; dist: 0, thinkfunc: null));

  insane_move_stand_pain: mmove_t = (firstframe: FRAME_st_pain2; lastframe:FRAME_st_pain12; frame:@insane_frames_stand_pain,
    endfunc: @insane_run);

  insane_frames_stand_death: array [0..16] of mframe_t = (
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),

    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null),
    (aifunc: aimove; dist: 0, thinkfunc: null));

⌨️ 快捷键说明

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