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

📄 m_supertank.pas

📁 delphi编的不错的贪吃蛇
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil) );      
  supertank_move_turn_right : mmove_t =
    (firstframe: FRAME_right_1;  lastframe: FRAME_right_18;  frame: @supertank_frames_turn_right; endfunc: supertank_run);

  supertank_frames_turn_left : array [0..17] of mframe_t = (
    (aifunc: ai_move;  dist: 0;  thinkfunc: TreadSound),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil) );      
  supertank_move_turn_left : mmove_t =
    (firstframe: FRAME_left_1;  lastframe: FRAME_left_18;  frame: @supertank_frames_turn_left;  endfunc: supertank_run);

  supertank_frames_pain3 : array [0..3] of mframe_t = (
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil) );
  supertank_move_pain3 : mmove_t =
    (firstframe: FRAME_pain3_9;  lastframe: FRAME_pain3_12;  frame: @supertank_frames_pain3;  endfunc: supertank_run);

  supertank_frames_pain2 : array [0..3] of mframe_t = (
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil) );
  supertank_move_pain2 : mmove_t =
    (firstframe: FRAME_pain2_5;  lastframe: FRAME_pain2_8;  frame: @supertank_frames_pain2;  endfunc: supertank_run);

  supertank_frames_pain1 : array [0..3] of mframe_t = (
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil) );      
  supertank_move_pain1 : mmove_t =
    (firstframe: FRAME_pain1_1;  lastframe: FRAME_pain1_4;  frame: @supertank_frames_pain1;  endfunc: supertank_run);

  supertank_frames_death1 : array [0..23] of mframe_t = (
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: BossExplode) );
  supertank_move_death : mmove_t =
    (firstframe: FRAME_death_1;  lastframe: FRAME_death_24;  frame: @supertank_frames_death1;  endfunc: supertank_dead);

  supertank_frames_backward : array [0..17] of mframe_t = (
    (aifunc: ai_walk;  dist: 0;  thinkfunc: TreadSound),
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),      
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_walk;  dist: 0;  thinkfunc: Nil) );
  supertank_move_backward : mmove_t =
    (firstframe: FRAME_backwd_1;  lastframe: FRAME_backwd_18;  frame: @supertank_frames_backward;  endfunc: Nil);

  supertank_frames_attack4 : array [0..5] of mframe_t = (
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil) );
  supertank_move_attack4 : mmove_t =
    (firstframe: FRAME_attak4_1;  lastframe: FRAME_attak4_6;  frame: @supertank_frames_attack4;  endfunc: supertank_run);

  supertank_frames_attack3 : array [0..26] of mframe_t = (
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),     
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil), 
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil) );
  supertank_move_attack3 : mmove_t =
    (firstframe: FRAME_attak3_1;  lastframe: FRAME_attak3_27;  frame: @supertank_frames_attack3;  endfunc: supertank_run);

  supertank_frames_attack2 : array [0..26] of mframe_t = (
    (aifunc: ai_charge;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_charge;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_charge;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_charge;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_charge;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_charge;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_charge;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_charge;  dist: 0;  thinkfunc: supertankRocket),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: supertankRocket),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: supertankRocket),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;    dist: 0;  thinkfunc: Nil) );
  supertank_move_attack2 : mmove_t =
    (firstframe: FRAME_attak2_1;  lastframe: FRAME_attak2_27;  frame: @supertank_frames_attack2;  endfunc: supertank_run);

  supertank_frames_attack1 : array [0..5] of mframe_t = (
    (aifunc: ai_charge;  dist: 0;  thinkfunc: supertankMachineGun),
    (aifunc: ai_charge;  dist: 0;  thinkfunc: supertankMachineGun),
    (aifunc: ai_charge;  dist: 0;  thinkfunc: supertankMachineGun),
    (aifunc: ai_charge;  dist: 0;  thinkfunc: supertankMachineGun),
    (aifunc: ai_charge;  dist: 0;  thinkfunc: supertankMachineGun),
    (aifunc: ai_charge;  dist: 0;  thinkfunc: supertankMachineGun) );
  supertank_move_attack1 : mmove_t =
    (firstframe: FRAME_attak1_1;  lastframe: FRAME_attak1_6;  frame: @supertank_frames_attack1;  endfunc: supertank_reattack1);

  supertank_frames_end_attack1 : array [0..13] of mframe_t = (
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil),
    (aifunc: ai_move;  dist: 0;  thinkfunc: Nil) );
  supertank_move_end_attack1 : mmove_t =
    (firstframe: FRAME_attak1_7;  lastframe: FRAME_attak1_20;  frame: @supertank_frames_end_attack1;  endfunc: supertank_run);

procedure supertank_reattack1 (self : edict_p); cdecl;
begin
  if (visible(self, self^.enemy)) then
    if (_random() < 0.9) then
      self^.monsterinfo.currentmove := @supertank_move_attack1
    else
      self^.monsterinfo.currentmove := @supertank_move_end_attack1
  else
    self^.monsterinfo.currentmove := @supertank_move_end_attack1;
end;

procedure supertank_pain (self, other : edict_p; kick : single; damage : integer); cdecl;
begin
  if (self^.health < (self^.max_health / 2)) then
    self^.s.skinnum := 1;

  if (level.time < self^.pain_debounce_time) then
    Exit;

  // Lessen the chance of him going into his pain frames
  if (damage <= 25) then
    if (_random() < 0.2) then
      Exit;

  // Don't go into pain if he's firing his rockets
  if (skill^.value >= 2) then
    if (self^.s.frame >= FRAME_attak2_1) AND (self^.s.frame <= FRAME_attak2_14) then
      Exit;

  self^.pain_debounce_time := level.time + 3;

  if (skill^.value = 3) then
    Exit;   // no pain anims in nightmare

⌨️ 快捷键说明

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