aboutsummaryrefslogtreecommitdiffstats
path: root/src/jake2/game/M_Flyer.java
diff options
context:
space:
mode:
authorHolger Zickner <[email protected]>2004-07-07 19:59:59 +0000
committerHolger Zickner <[email protected]>2004-07-07 19:59:59 +0000
commit6e23fc1074d1f0c2c2812f4c2e663f5a21a43c20 (patch)
tree46ecc6d0255c874ba4cd26dc3d0733f785019896 /src/jake2/game/M_Flyer.java
import of Jake2 version sunrisesunrise
Diffstat (limited to 'src/jake2/game/M_Flyer.java')
-rw-r--r--src/jake2/game/M_Flyer.java808
1 files changed, 808 insertions, 0 deletions
diff --git a/src/jake2/game/M_Flyer.java b/src/jake2/game/M_Flyer.java
new file mode 100644
index 0000000..acdeefc
--- /dev/null
+++ b/src/jake2/game/M_Flyer.java
@@ -0,0 +1,808 @@
+/*
+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.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+*/
+
+// Created on 13.11.2003 by RST.
+// $Id: M_Flyer.java,v 1.1 2004-07-07 19:59:14 hzi Exp $
+
+package jake2.game;
+
+import jake2.util.*;
+import jake2.util.*;
+
+public class M_Flyer extends GamePWeapon {
+ // This file generated by ModelGen - Do NOT Modify
+
+ public final static int ACTION_nothing= 0;
+ public final static int ACTION_attack1= 1;
+ public final static int ACTION_attack2= 2;
+ public final static int ACTION_run= 3;
+ public final static int ACTION_walk= 4;
+
+ public final static int FRAME_start01= 0;
+ public final static int FRAME_start02= 1;
+ public final static int FRAME_start03= 2;
+ public final static int FRAME_start04= 3;
+ public final static int FRAME_start05= 4;
+ public final static int FRAME_start06= 5;
+ public final static int FRAME_stop01= 6;
+ public final static int FRAME_stop02= 7;
+ public final static int FRAME_stop03= 8;
+ public final static int FRAME_stop04= 9;
+ public final static int FRAME_stop05= 10;
+ public final static int FRAME_stop06= 11;
+ public final static int FRAME_stop07= 12;
+ public final static int FRAME_stand01= 13;
+ public final static int FRAME_stand02= 14;
+ public final static int FRAME_stand03= 15;
+ public final static int FRAME_stand04= 16;
+ public final static int FRAME_stand05= 17;
+ public final static int FRAME_stand06= 18;
+ public final static int FRAME_stand07= 19;
+ public final static int FRAME_stand08= 20;
+ public final static int FRAME_stand09= 21;
+ public final static int FRAME_stand10= 22;
+ public final static int FRAME_stand11= 23;
+ public final static int FRAME_stand12= 24;
+ public final static int FRAME_stand13= 25;
+ public final static int FRAME_stand14= 26;
+ public final static int FRAME_stand15= 27;
+ public final static int FRAME_stand16= 28;
+ public final static int FRAME_stand17= 29;
+ public final static int FRAME_stand18= 30;
+ public final static int FRAME_stand19= 31;
+ public final static int FRAME_stand20= 32;
+ public final static int FRAME_stand21= 33;
+ public final static int FRAME_stand22= 34;
+ public final static int FRAME_stand23= 35;
+ public final static int FRAME_stand24= 36;
+ public final static int FRAME_stand25= 37;
+ public final static int FRAME_stand26= 38;
+ public final static int FRAME_stand27= 39;
+ public final static int FRAME_stand28= 40;
+ public final static int FRAME_stand29= 41;
+ public final static int FRAME_stand30= 42;
+ public final static int FRAME_stand31= 43;
+ public final static int FRAME_stand32= 44;
+ public final static int FRAME_stand33= 45;
+ public final static int FRAME_stand34= 46;
+ public final static int FRAME_stand35= 47;
+ public final static int FRAME_stand36= 48;
+ public final static int FRAME_stand37= 49;
+ public final static int FRAME_stand38= 50;
+ public final static int FRAME_stand39= 51;
+ public final static int FRAME_stand40= 52;
+ public final static int FRAME_stand41= 53;
+ public final static int FRAME_stand42= 54;
+ public final static int FRAME_stand43= 55;
+ public final static int FRAME_stand44= 56;
+ public final static int FRAME_stand45= 57;
+ public final static int FRAME_attak101= 58;
+ public final static int FRAME_attak102= 59;
+ public final static int FRAME_attak103= 60;
+ public final static int FRAME_attak104= 61;
+ public final static int FRAME_attak105= 62;
+ public final static int FRAME_attak106= 63;
+ public final static int FRAME_attak107= 64;
+ public final static int FRAME_attak108= 65;
+ public final static int FRAME_attak109= 66;
+ public final static int FRAME_attak110= 67;
+ public final static int FRAME_attak111= 68;
+ public final static int FRAME_attak112= 69;
+ public final static int FRAME_attak113= 70;
+ public final static int FRAME_attak114= 71;
+ public final static int FRAME_attak115= 72;
+ public final static int FRAME_attak116= 73;
+ public final static int FRAME_attak117= 74;
+ public final static int FRAME_attak118= 75;
+ public final static int FRAME_attak119= 76;
+ public final static int FRAME_attak120= 77;
+ public final static int FRAME_attak121= 78;
+ public final static int FRAME_attak201= 79;
+ public final static int FRAME_attak202= 80;
+ public final static int FRAME_attak203= 81;
+ public final static int FRAME_attak204= 82;
+ public final static int FRAME_attak205= 83;
+ public final static int FRAME_attak206= 84;
+ public final static int FRAME_attak207= 85;
+ public final static int FRAME_attak208= 86;
+ public final static int FRAME_attak209= 87;
+ public final static int FRAME_attak210= 88;
+ public final static int FRAME_attak211= 89;
+ public final static int FRAME_attak212= 90;
+ public final static int FRAME_attak213= 91;
+ public final static int FRAME_attak214= 92;
+ public final static int FRAME_attak215= 93;
+ public final static int FRAME_attak216= 94;
+ public final static int FRAME_attak217= 95;
+ public final static int FRAME_bankl01= 96;
+ public final static int FRAME_bankl02= 97;
+ public final static int FRAME_bankl03= 98;
+ public final static int FRAME_bankl04= 99;
+ public final static int FRAME_bankl05= 100;
+ public final static int FRAME_bankl06= 101;
+ public final static int FRAME_bankl07= 102;
+ public final static int FRAME_bankr01= 103;
+ public final static int FRAME_bankr02= 104;
+ public final static int FRAME_bankr03= 105;
+ public final static int FRAME_bankr04= 106;
+ public final static int FRAME_bankr05= 107;
+ public final static int FRAME_bankr06= 108;
+ public final static int FRAME_bankr07= 109;
+ public final static int FRAME_rollf01= 110;
+ public final static int FRAME_rollf02= 111;
+ public final static int FRAME_rollf03= 112;
+ public final static int FRAME_rollf04= 113;
+ public final static int FRAME_rollf05= 114;
+ public final static int FRAME_rollf06= 115;
+ public final static int FRAME_rollf07= 116;
+ public final static int FRAME_rollf08= 117;
+ public final static int FRAME_rollf09= 118;
+ public final static int FRAME_rollr01= 119;
+ public final static int FRAME_rollr02= 120;
+ public final static int FRAME_rollr03= 121;
+ public final static int FRAME_rollr04= 122;
+ public final static int FRAME_rollr05= 123;
+ public final static int FRAME_rollr06= 124;
+ public final static int FRAME_rollr07= 125;
+ public final static int FRAME_rollr08= 126;
+ public final static int FRAME_rollr09= 127;
+ public final static int FRAME_defens01= 128;
+ public final static int FRAME_defens02= 129;
+ public final static int FRAME_defens03= 130;
+ public final static int FRAME_defens04= 131;
+ public final static int FRAME_defens05= 132;
+ public final static int FRAME_defens06= 133;
+ public final static int FRAME_pain101= 134;
+ public final static int FRAME_pain102= 135;
+ public final static int FRAME_pain103= 136;
+ public final static int FRAME_pain104= 137;
+ public final static int FRAME_pain105= 138;
+ public final static int FRAME_pain106= 139;
+ public final static int FRAME_pain107= 140;
+ public final static int FRAME_pain108= 141;
+ public final static int FRAME_pain109= 142;
+ public final static int FRAME_pain201= 143;
+ public final static int FRAME_pain202= 144;
+ public final static int FRAME_pain203= 145;
+ public final static int FRAME_pain204= 146;
+ public final static int FRAME_pain301= 147;
+ public final static int FRAME_pain302= 148;
+ public final static int FRAME_pain303= 149;
+ public final static int FRAME_pain304= 150;
+
+ public final static float MODEL_SCALE= 1.000000f;
+
+ static int nextmove; // Used for start/stop frames
+
+ static int sound_sight;
+ static int sound_idle;
+ static int sound_pain1;
+ static int sound_pain2;
+ static int sound_slash;
+ static int sound_sproing;
+ static int sound_die;
+
+ public static EntInteractAdapter flyer_sight= new EntInteractAdapter() {
+ public boolean interact(edict_t self, edict_t other) {
+ gi.sound(self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
+ return true;
+ }
+ };
+
+ static EntThinkAdapter flyer_idle= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ gi.sound(self, CHAN_VOICE, sound_idle, 1, ATTN_IDLE, 0);
+ return true;
+ }
+ };
+
+ static EntThinkAdapter flyer_pop_blades= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ gi.sound(self, CHAN_VOICE, sound_sproing, 1, ATTN_NORM, 0);
+ return true;
+ }
+ };
+
+ static mframe_t flyer_frames_stand[]=
+ new mframe_t[] {
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null),
+ new mframe_t(ai_stand, 0, null)};
+ static mmove_t flyer_move_stand=
+ new mmove_t(FRAME_stand01, FRAME_stand45, flyer_frames_stand, null);
+
+ static mframe_t flyer_frames_walk[]=
+ new mframe_t[] {
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null),
+ new mframe_t(ai_walk, 5, null)};
+
+ static mmove_t flyer_move_walk=
+ new mmove_t(FRAME_stand01, FRAME_stand45, flyer_frames_walk, null);
+
+ static mframe_t flyer_frames_run[]=
+ new mframe_t[] {
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null),
+ new mframe_t(ai_run, 10, null)};
+ static mmove_t flyer_move_run=
+ new mmove_t(FRAME_stand01, FRAME_stand45, flyer_frames_run, null);
+
+ static EntThinkAdapter flyer_run= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ if ((self.monsterinfo.aiflags & AI_STAND_GROUND)!=0)
+ self.monsterinfo.currentmove= flyer_move_stand;
+ else
+ self.monsterinfo.currentmove= flyer_move_run;
+ return true;
+ }
+ };
+
+ static EntThinkAdapter flyer_walk= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ self.monsterinfo.currentmove= flyer_move_walk;
+ return true;
+ }
+ };
+
+ static EntThinkAdapter flyer_stand= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ self.monsterinfo.currentmove= flyer_move_stand;
+ return true;
+ }
+ };
+ static EntThinkAdapter flyer_nextmove= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ if (nextmove == ACTION_attack1)
+ self.monsterinfo.currentmove= flyer_move_start_melee;
+ else if (nextmove == ACTION_attack2)
+ self.monsterinfo.currentmove= flyer_move_attack2;
+ else if (nextmove == ACTION_run)
+ self.monsterinfo.currentmove= flyer_move_run;
+ return true;
+ }
+ };
+ static mframe_t flyer_frames_start[]=
+ new mframe_t[] {
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, flyer_nextmove)};
+ static mmove_t flyer_move_start=
+ new mmove_t(FRAME_start01, FRAME_start06, flyer_frames_start, null);
+
+ static mframe_t flyer_frames_stop[]=
+ new mframe_t[] {
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, flyer_nextmove)};
+ static mmove_t flyer_move_stop=
+ new mmove_t(FRAME_stop01, FRAME_stop07, flyer_frames_stop, null);
+ static EntThinkAdapter flyer_stop= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ self.monsterinfo.currentmove= flyer_move_stop;
+ return true;
+ }
+ };
+
+ static EntThinkAdapter flyer_start= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ self.monsterinfo.currentmove= flyer_move_start;
+ return true;
+ }
+ };
+
+ static mframe_t flyer_frames_rollright[]=
+ new mframe_t[] {
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null)};
+ static mmove_t flyer_move_rollright=
+ new mmove_t(FRAME_rollr01, FRAME_rollr09, flyer_frames_rollright, null);
+
+ static mframe_t flyer_frames_rollleft[]=
+ new mframe_t[] {
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null)};
+ static mmove_t flyer_move_rollleft=
+ new mmove_t(FRAME_rollf01, FRAME_rollf09, flyer_frames_rollleft, null);
+
+ static mframe_t flyer_frames_pain3[]=
+ new mframe_t[] {
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null)};
+ static mmove_t flyer_move_pain3=
+ new mmove_t(FRAME_pain301, FRAME_pain304, flyer_frames_pain3, flyer_run);
+
+ static mframe_t flyer_frames_pain2[]=
+ new mframe_t[] {
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null)};
+ static mmove_t flyer_move_pain2=
+ new mmove_t(FRAME_pain201, FRAME_pain204, flyer_frames_pain2, flyer_run);
+
+ static mframe_t flyer_frames_pain1[]=
+ new mframe_t[] {
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null)};
+ static mmove_t flyer_move_pain1=
+ new mmove_t(FRAME_pain101, FRAME_pain109, flyer_frames_pain1, flyer_run);
+
+ static mframe_t flyer_frames_defense[]=
+ new mframe_t[] {
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ // Hold this frame
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null)};
+ static mmove_t flyer_move_defense=
+ new mmove_t(FRAME_defens01, FRAME_defens06, flyer_frames_defense, null);
+
+ static mframe_t flyer_frames_bankright[]=
+ new mframe_t[] {
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null)};
+ static mmove_t flyer_move_bankright=
+ new mmove_t(FRAME_bankr01, FRAME_bankr07, flyer_frames_bankright, null);
+
+ static mframe_t flyer_frames_bankleft[]=
+ new mframe_t[] {
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null)};
+ static mmove_t flyer_move_bankleft=
+ new mmove_t(FRAME_bankl01, FRAME_bankl07, flyer_frames_bankleft, null);
+
+ static void flyer_fire(edict_t self, int flash_number) {
+ float[] start={0,0,0};
+
+ float[] forward={0,0,0}, right={0,0,0};
+ float[] end={0,0,0};
+ float[] dir={0,0,0};
+ int effect;
+
+ if ((self.s.frame == FRAME_attak204)
+ || (self.s.frame == FRAME_attak207)
+ || (self.s.frame == FRAME_attak210))
+ effect= EF_HYPERBLASTER;
+ else
+ effect= 0;
+ Math3D.AngleVectors(self.s.angles, forward, right, null);
+ Math3D.G_ProjectSource(self.s.origin, monster_flash_offset[flash_number], forward, right, start);
+
+ Math3D.VectorCopy(self.enemy.s.origin, end);
+ end[2] += self.enemy.viewheight;
+ Math3D.VectorSubtract(end, start, dir);
+
+ Monster.monster_fire_blaster(self, start, dir, 1, 1000, flash_number, effect);
+ }
+ static EntThinkAdapter flyer_fireleft= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ flyer_fire(self, MZ2_FLYER_BLASTER_1);
+ return true;
+ }
+ };
+
+ static EntThinkAdapter flyer_fireright= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ flyer_fire(self, MZ2_FLYER_BLASTER_2);
+ return true;
+ }
+ };
+
+ static mframe_t flyer_frames_attack2[]=
+ new mframe_t[] {
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, -10, flyer_fireleft),
+ // left gun
+ new mframe_t(ai_charge, -10, flyer_fireright), // right gun
+ new mframe_t(ai_charge, -10, flyer_fireleft), // left gun
+ new mframe_t(ai_charge, -10, flyer_fireright), // right gun
+ new mframe_t(ai_charge, -10, flyer_fireleft), // left gun
+ new mframe_t(ai_charge, -10, flyer_fireright), // right gun
+ new mframe_t(ai_charge, -10, flyer_fireleft), // left gun
+ new mframe_t(ai_charge, -10, flyer_fireright), // right gun
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null)};
+ static mmove_t flyer_move_attack2=
+ new mmove_t(FRAME_attak201, FRAME_attak217, flyer_frames_attack2, flyer_run);
+
+ static EntThinkAdapter flyer_slash_left= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ float[] aim={0,0,0};
+
+ Math3D.VectorSet(aim, MELEE_DISTANCE, self.mins[0], 0);
+ Fire.fire_hit(self, aim, 5, 0);
+ gi.sound(self, CHAN_WEAPON, sound_slash, 1, ATTN_NORM, 0);
+ return true;
+ }
+ };
+
+ static EntThinkAdapter flyer_slash_right= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ float[] aim={0,0,0};
+
+ Math3D.VectorSet(aim, MELEE_DISTANCE, self.maxs[0], 0);
+ Fire.fire_hit(self, aim, 5, 0);
+ gi.sound(self, CHAN_WEAPON, sound_slash, 1, ATTN_NORM, 0);
+ return true;
+ }
+ };
+ static EntThinkAdapter flyer_loop_melee= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ /* if (random() <= 0.5)
+ self.monsterinfo.currentmove = flyer_move_attack1;
+ else */
+ self.monsterinfo.currentmove= flyer_move_loop_melee;
+ return true;
+ }
+ };
+
+ static mframe_t flyer_frames_start_melee[]=
+ new mframe_t[] {
+ new mframe_t(ai_charge, 0, flyer_pop_blades),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null)};
+ static mmove_t flyer_move_start_melee=
+ new mmove_t(FRAME_attak101, FRAME_attak106, flyer_frames_start_melee, flyer_loop_melee);
+
+ static mframe_t flyer_frames_end_melee[]=
+ new mframe_t[] {
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null)};
+ static mmove_t flyer_move_end_melee=
+ new mmove_t(FRAME_attak119, FRAME_attak121, flyer_frames_end_melee, flyer_run);
+
+ static mframe_t flyer_frames_loop_melee[]=
+ new mframe_t[] { new mframe_t(ai_charge, 0, null), // Loop Start
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, flyer_slash_left), // Left Wing Strike
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, flyer_slash_right), // Right Wing Strike
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null),
+ new mframe_t(ai_charge, 0, null) // Loop Ends
+
+ };
+
+ static EntThinkAdapter flyer_check_melee= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ if (range(self, self.enemy) == RANGE_MELEE)
+ if (Lib.random() <= 0.8)
+ self.monsterinfo.currentmove= flyer_move_loop_melee;
+ else
+ self.monsterinfo.currentmove= flyer_move_end_melee;
+ else
+ self.monsterinfo.currentmove= flyer_move_end_melee;
+ return true;
+ }
+ };
+
+ static mmove_t flyer_move_loop_melee=
+ new mmove_t(FRAME_attak107, FRAME_attak118, flyer_frames_loop_melee, flyer_check_melee);
+
+
+ static EntThinkAdapter flyer_attack= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ /* if (random() <= 0.5)
+ self.monsterinfo.currentmove = flyer_move_attack1;
+ else */
+ self.monsterinfo.currentmove= flyer_move_attack2;
+
+ return true;
+ }
+ };
+
+ static EntThinkAdapter flyer_setstart= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ nextmove= ACTION_run;
+ self.monsterinfo.currentmove= flyer_move_start;
+ return true;
+ }
+ };
+
+
+
+ static EntThinkAdapter flyer_melee= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ // flyer.nextmove = ACTION_attack1;
+ // self.monsterinfo.currentmove = flyer_move_stop;
+ self.monsterinfo.currentmove= flyer_move_start_melee;
+ return true;
+ }
+ };
+
+
+ static EntPainAdapter flyer_pain= new EntPainAdapter() {
+ public void pain(edict_t self, edict_t other, float kick, int damage) {
+ int n;
+
+ if (self.health < (self.max_health / 2))
+ self.s.skinnum= 1;
+
+ if (level.time < self.pain_debounce_time)
+ return;
+
+ self.pain_debounce_time= level.time + 3;
+ if (skill.value == 3)
+ return; // no pain anims in nightmare
+
+ n= Lib.rand() % 3;
+ if (n == 0) {
+ gi.sound(self, CHAN_VOICE, sound_pain1, 1, ATTN_NORM, 0);
+ self.monsterinfo.currentmove= flyer_move_pain1;
+ } else if (n == 1) {
+ gi.sound(self, CHAN_VOICE, sound_pain2, 1, ATTN_NORM, 0);
+ self.monsterinfo.currentmove= flyer_move_pain2;
+ } else {
+ gi.sound(self, CHAN_VOICE, sound_pain1, 1, ATTN_NORM, 0);
+ self.monsterinfo.currentmove= flyer_move_pain3;
+ }
+
+ }
+ };
+ static EntDieAdapter flyer_die= new EntDieAdapter() {
+ public void die(
+ edict_t self,
+ edict_t inflictor,
+ edict_t attacker,
+ int damage,
+ float[] point) {
+ gi.sound(self, CHAN_VOICE, sound_die, 1, ATTN_NORM, 0);
+ BecomeExplosion1(self);
+ }
+ };
+
+ /*QUAKED monster_flyer (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight
+ */
+ public static void SP_monster_flyer(edict_t self) {
+ if (deathmatch.value != 0) {
+ G_FreeEdict(self);
+ return;
+ }
+
+ // fix a map bug in jail5.bsp
+ if (0 == Lib.stricmp(level.mapname, "jail5") && (self.s.origin[2] == -104)) {
+ self.targetname= self.target;
+ self.target= null;
+ }
+
+ sound_sight= gi.soundindex("flyer/flysght1.wav");
+ sound_idle= gi.soundindex("flyer/flysrch1.wav");
+ sound_pain1= gi.soundindex("flyer/flypain1.wav");
+ sound_pain2= gi.soundindex("flyer/flypain2.wav");
+ sound_slash= gi.soundindex("flyer/flyatck2.wav");
+ sound_sproing= gi.soundindex("flyer/flyatck1.wav");
+ sound_die= gi.soundindex("flyer/flydeth1.wav");
+
+ gi.soundindex("flyer/flyatck3.wav");
+
+ self.s.modelindex= gi.modelindex("models/monsters/flyer/tris.md2");
+ Math3D.VectorSet(self.mins, -16, -16, -24);
+ Math3D.VectorSet(self.maxs, 16, 16, 32);
+ self.movetype= MOVETYPE_STEP;
+ self.solid= SOLID_BBOX;
+
+ self.s.sound= gi.soundindex("flyer/flyidle1.wav");
+
+ self.health= 50;
+ self.mass= 50;
+
+ self.pain= flyer_pain;
+ self.die= flyer_die;
+
+ self.monsterinfo.stand= flyer_stand;
+ self.monsterinfo.walk= flyer_walk;
+ self.monsterinfo.run= flyer_run;
+ self.monsterinfo.attack= flyer_attack;
+ self.monsterinfo.melee= flyer_melee;
+ self.monsterinfo.sight= flyer_sight;
+ self.monsterinfo.idle= flyer_idle;
+
+ gi.linkentity(self);
+
+ self.monsterinfo.currentmove= flyer_move_stand;
+ self.monsterinfo.scale= MODEL_SCALE;
+
+ flymonster_start.think(self);
+ }
+
+}