📄 m_supertank.pas
字号:
(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 + -