aboutsummaryrefslogtreecommitdiffstats
path: root/src/jake2/game/M_Flipper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jake2/game/M_Flipper.java')
-rw-r--r--src/jake2/game/M_Flipper.java627
1 files changed, 627 insertions, 0 deletions
diff --git a/src/jake2/game/M_Flipper.java b/src/jake2/game/M_Flipper.java
new file mode 100644
index 0000000..a1e019d
--- /dev/null
+++ b/src/jake2/game/M_Flipper.java
@@ -0,0 +1,627 @@
+/*
+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_Flipper.java,v 1.1 2004-07-07 19:59:12 hzi Exp $
+
+package jake2.game;
+
+import jake2.util.*;
+import jake2.util.*;
+
+public class M_Flipper extends Game {
+
+ // This file generated by ModelGen - Do NOT Modify
+
+ public final static int FRAME_flpbit01= 0;
+ public final static int FRAME_flpbit02= 1;
+ public final static int FRAME_flpbit03= 2;
+ public final static int FRAME_flpbit04= 3;
+ public final static int FRAME_flpbit05= 4;
+ public final static int FRAME_flpbit06= 5;
+ public final static int FRAME_flpbit07= 6;
+ public final static int FRAME_flpbit08= 7;
+ public final static int FRAME_flpbit09= 8;
+ public final static int FRAME_flpbit10= 9;
+ public final static int FRAME_flpbit11= 10;
+ public final static int FRAME_flpbit12= 11;
+ public final static int FRAME_flpbit13= 12;
+ public final static int FRAME_flpbit14= 13;
+ public final static int FRAME_flpbit15= 14;
+ public final static int FRAME_flpbit16= 15;
+ public final static int FRAME_flpbit17= 16;
+ public final static int FRAME_flpbit18= 17;
+ public final static int FRAME_flpbit19= 18;
+ public final static int FRAME_flpbit20= 19;
+ public final static int FRAME_flptal01= 20;
+ public final static int FRAME_flptal02= 21;
+ public final static int FRAME_flptal03= 22;
+ public final static int FRAME_flptal04= 23;
+ public final static int FRAME_flptal05= 24;
+ public final static int FRAME_flptal06= 25;
+ public final static int FRAME_flptal07= 26;
+ public final static int FRAME_flptal08= 27;
+ public final static int FRAME_flptal09= 28;
+ public final static int FRAME_flptal10= 29;
+ public final static int FRAME_flptal11= 30;
+ public final static int FRAME_flptal12= 31;
+ public final static int FRAME_flptal13= 32;
+ public final static int FRAME_flptal14= 33;
+ public final static int FRAME_flptal15= 34;
+ public final static int FRAME_flptal16= 35;
+ public final static int FRAME_flptal17= 36;
+ public final static int FRAME_flptal18= 37;
+ public final static int FRAME_flptal19= 38;
+ public final static int FRAME_flptal20= 39;
+ public final static int FRAME_flptal21= 40;
+ public final static int FRAME_flphor01= 41;
+ public final static int FRAME_flphor02= 42;
+ public final static int FRAME_flphor03= 43;
+ public final static int FRAME_flphor04= 44;
+ public final static int FRAME_flphor05= 45;
+ public final static int FRAME_flphor06= 46;
+ public final static int FRAME_flphor07= 47;
+ public final static int FRAME_flphor08= 48;
+ public final static int FRAME_flphor09= 49;
+ public final static int FRAME_flphor10= 50;
+ public final static int FRAME_flphor11= 51;
+ public final static int FRAME_flphor12= 52;
+ public final static int FRAME_flphor13= 53;
+ public final static int FRAME_flphor14= 54;
+ public final static int FRAME_flphor15= 55;
+ public final static int FRAME_flphor16= 56;
+ public final static int FRAME_flphor17= 57;
+ public final static int FRAME_flphor18= 58;
+ public final static int FRAME_flphor19= 59;
+ public final static int FRAME_flphor20= 60;
+ public final static int FRAME_flphor21= 61;
+ public final static int FRAME_flphor22= 62;
+ public final static int FRAME_flphor23= 63;
+ public final static int FRAME_flphor24= 64;
+ public final static int FRAME_flpver01= 65;
+ public final static int FRAME_flpver02= 66;
+ public final static int FRAME_flpver03= 67;
+ public final static int FRAME_flpver04= 68;
+ public final static int FRAME_flpver05= 69;
+ public final static int FRAME_flpver06= 70;
+ public final static int FRAME_flpver07= 71;
+ public final static int FRAME_flpver08= 72;
+ public final static int FRAME_flpver09= 73;
+ public final static int FRAME_flpver10= 74;
+ public final static int FRAME_flpver11= 75;
+ public final static int FRAME_flpver12= 76;
+ public final static int FRAME_flpver13= 77;
+ public final static int FRAME_flpver14= 78;
+ public final static int FRAME_flpver15= 79;
+ public final static int FRAME_flpver16= 80;
+ public final static int FRAME_flpver17= 81;
+ public final static int FRAME_flpver18= 82;
+ public final static int FRAME_flpver19= 83;
+ public final static int FRAME_flpver20= 84;
+ public final static int FRAME_flpver21= 85;
+ public final static int FRAME_flpver22= 86;
+ public final static int FRAME_flpver23= 87;
+ public final static int FRAME_flpver24= 88;
+ public final static int FRAME_flpver25= 89;
+ public final static int FRAME_flpver26= 90;
+ public final static int FRAME_flpver27= 91;
+ public final static int FRAME_flpver28= 92;
+ public final static int FRAME_flpver29= 93;
+ public final static int FRAME_flppn101= 94;
+ public final static int FRAME_flppn102= 95;
+ public final static int FRAME_flppn103= 96;
+ public final static int FRAME_flppn104= 97;
+ public final static int FRAME_flppn105= 98;
+ public final static int FRAME_flppn201= 99;
+ public final static int FRAME_flppn202= 100;
+ public final static int FRAME_flppn203= 101;
+ public final static int FRAME_flppn204= 102;
+ public final static int FRAME_flppn205= 103;
+ public final static int FRAME_flpdth01= 104;
+ public final static int FRAME_flpdth02= 105;
+ public final static int FRAME_flpdth03= 106;
+ public final static int FRAME_flpdth04= 107;
+ public final static int FRAME_flpdth05= 108;
+ public final static int FRAME_flpdth06= 109;
+ public final static int FRAME_flpdth07= 110;
+ public final static int FRAME_flpdth08= 111;
+ public final static int FRAME_flpdth09= 112;
+ public final static int FRAME_flpdth10= 113;
+ public final static int FRAME_flpdth11= 114;
+ public final static int FRAME_flpdth12= 115;
+ public final static int FRAME_flpdth13= 116;
+ public final static int FRAME_flpdth14= 117;
+ public final static int FRAME_flpdth15= 118;
+ public final static int FRAME_flpdth16= 119;
+ public final static int FRAME_flpdth17= 120;
+ public final static int FRAME_flpdth18= 121;
+ public final static int FRAME_flpdth19= 122;
+ public final static int FRAME_flpdth20= 123;
+ public final static int FRAME_flpdth21= 124;
+ public final static int FRAME_flpdth22= 125;
+ public final static int FRAME_flpdth23= 126;
+ public final static int FRAME_flpdth24= 127;
+ public final static int FRAME_flpdth25= 128;
+ public final static int FRAME_flpdth26= 129;
+ public final static int FRAME_flpdth27= 130;
+ public final static int FRAME_flpdth28= 131;
+ public final static int FRAME_flpdth29= 132;
+ public final static int FRAME_flpdth30= 133;
+ public final static int FRAME_flpdth31= 134;
+ public final static int FRAME_flpdth32= 135;
+ public final static int FRAME_flpdth33= 136;
+ public final static int FRAME_flpdth34= 137;
+ public final static int FRAME_flpdth35= 138;
+ public final static int FRAME_flpdth36= 139;
+ public final static int FRAME_flpdth37= 140;
+ public final static int FRAME_flpdth38= 141;
+ public final static int FRAME_flpdth39= 142;
+ public final static int FRAME_flpdth40= 143;
+ public final static int FRAME_flpdth41= 144;
+ public final static int FRAME_flpdth42= 145;
+ public final static int FRAME_flpdth43= 146;
+ public final static int FRAME_flpdth44= 147;
+ public final static int FRAME_flpdth45= 148;
+ public final static int FRAME_flpdth46= 149;
+ public final static int FRAME_flpdth47= 150;
+ public final static int FRAME_flpdth48= 151;
+ public final static int FRAME_flpdth49= 152;
+ public final static int FRAME_flpdth50= 153;
+ public final static int FRAME_flpdth51= 154;
+ public final static int FRAME_flpdth52= 155;
+ public final static int FRAME_flpdth53= 156;
+ public final static int FRAME_flpdth54= 157;
+ public final static int FRAME_flpdth55= 158;
+ public final static int FRAME_flpdth56= 159;
+
+ public final static float MODEL_SCALE= 1.000000f;
+
+ static int sound_chomp;
+ static int sound_attack;
+ static int sound_pain1;
+ static int sound_pain2;
+ static int sound_death;
+ static int sound_idle;
+ static int sound_search;
+ static int sound_sight;
+
+ static mframe_t flipper_frames_stand[]=
+ new mframe_t[] { new mframe_t(ai_stand, 0, null)};
+
+ static mmove_t flipper_move_stand=
+ new mmove_t(FRAME_flphor01, FRAME_flphor01, flipper_frames_stand, null);
+
+ static EntThinkAdapter flipper_stand= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ self.monsterinfo.currentmove= flipper_move_stand;
+ return true;
+ }
+ };
+
+ public final static int FLIPPER_RUN_SPEED= 24;
+
+ static mframe_t flipper_frames_run[]=
+ new mframe_t[] { new mframe_t(ai_run, FLIPPER_RUN_SPEED, null), // 6
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ // 10
+
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ // 20
+
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null),
+ new mframe_t(ai_run, FLIPPER_RUN_SPEED, null) // 29
+ };
+ static mmove_t flipper_move_run_loop=
+ new mmove_t(FRAME_flpver06, FRAME_flpver29, flipper_frames_run, null);
+
+ static EntThinkAdapter flipper_run_loop= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ self.monsterinfo.currentmove= flipper_move_run_loop;
+ return true;
+ }
+ };
+
+ static mframe_t flipper_frames_run_start[]=
+ new mframe_t[] {
+ new mframe_t(ai_run, 8, null),
+ new mframe_t(ai_run, 8, null),
+ new mframe_t(ai_run, 8, null),
+ new mframe_t(ai_run, 8, null),
+ new mframe_t(ai_run, 8, null),
+ new mframe_t(ai_run, 8, null)};
+ static mmove_t flipper_move_run_start=
+ new mmove_t(
+ FRAME_flpver01,
+ FRAME_flpver06,
+ flipper_frames_run_start,
+ flipper_run_loop);
+
+ static EntThinkAdapter flipper_run= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ self.monsterinfo.currentmove= flipper_move_run_start;
+ return true;
+ }
+ };
+
+ /* Standard Swimming */
+ static mframe_t flipper_frames_walk[]=
+ new mframe_t[] {
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null),
+ new mframe_t(ai_walk, 4, null)};
+ static mmove_t flipper_move_walk=
+ new mmove_t(FRAME_flphor01, FRAME_flphor24, flipper_frames_walk, null);
+
+ static EntThinkAdapter flipper_walk= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ self.monsterinfo.currentmove= flipper_move_walk;
+ return true;
+ }
+ };
+
+ static mframe_t flipper_frames_start_run[]=
+ new mframe_t[] {
+ new mframe_t(ai_run, 8, null),
+ new mframe_t(ai_run, 8, null),
+ new mframe_t(ai_run, 8, null),
+ new mframe_t(ai_run, 8, null),
+ new mframe_t(ai_run, 8, flipper_run)};
+ static mmove_t flipper_move_start_run=
+ new mmove_t(
+ FRAME_flphor01,
+ FRAME_flphor05,
+ flipper_frames_start_run,
+ null);
+
+ static EntThinkAdapter flipper_start_run= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ self.monsterinfo.currentmove= flipper_move_start_run;
+ return true;
+ }
+ };
+
+ static mframe_t flipper_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),
+ new mframe_t(ai_move, 0, null)};
+ static mmove_t flipper_move_pain2=
+ new mmove_t(
+ FRAME_flppn101,
+ FRAME_flppn105,
+ flipper_frames_pain2,
+ flipper_run);
+
+ static mframe_t flipper_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)};
+ static mmove_t flipper_move_pain1=
+ new mmove_t(
+ FRAME_flppn201,
+ FRAME_flppn205,
+ flipper_frames_pain1,
+ flipper_run);
+ static EntThinkAdapter flipper_bite= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ float[] aim= { 0, 0, 0 };
+
+ Math3D.VectorSet(aim, MELEE_DISTANCE, 0, 0);
+ Fire.fire_hit(self, aim, 5, 0);
+ return true;
+ }
+ };
+
+ static EntThinkAdapter flipper_preattack= new EntThinkAdapter() {
+
+ public boolean think(edict_t self) {
+ gi.sound(self, CHAN_WEAPON, sound_chomp, 1, ATTN_NORM, 0);
+ return true;
+ }
+ };
+
+ static mframe_t flipper_frames_attack[]=
+ new mframe_t[] {
+ new mframe_t(ai_charge, 0, flipper_preattack),
+ 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),
+ 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),
+ new mframe_t(ai_charge, 0, flipper_bite),
+ 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, flipper_bite),
+ new mframe_t(ai_charge, 0, null)};
+ static mmove_t flipper_move_attack=
+ new mmove_t(
+ FRAME_flpbit01,
+ FRAME_flpbit20,
+ flipper_frames_attack,
+ flipper_run);
+
+ static EntThinkAdapter flipper_melee= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ self.monsterinfo.currentmove= flipper_move_attack;
+ return true;
+ }
+ };
+
+ static EntPainAdapter flipper_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() + 1) % 2;
+ if (n == 0) {
+ gi.sound(self, CHAN_VOICE, sound_pain1, 1, ATTN_NORM, 0);
+ self.monsterinfo.currentmove= flipper_move_pain1;
+ } else {
+ gi.sound(self, CHAN_VOICE, sound_pain2, 1, ATTN_NORM, 0);
+ self.monsterinfo.currentmove= flipper_move_pain2;
+ }
+ return;
+ }
+ };
+
+ static EntThinkAdapter flipper_dead= new EntThinkAdapter() {
+ public boolean think(edict_t self) {
+ Math3D.VectorSet(self.mins, -16, -16, -24);
+ Math3D.VectorSet(self.maxs, 16, 16, -8);
+ self.movetype= MOVETYPE_TOSS;
+ self.svflags |= SVF_DEADMONSTER;
+ self.nextthink= 0;
+ gi.linkentity(self);
+ return true;
+ }
+ };
+
+ static mframe_t flipper_frames_death[]=
+ 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),
+ 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),
+ 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),
+ 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),
+ 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),
+ 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),
+ new mframe_t(ai_move, 0, null),
+ new mframe_t(ai_move, 0, null)};
+ static mmove_t flipper_move_death=
+ new mmove_t(
+ FRAME_flpdth01,
+ FRAME_flpdth56,
+ flipper_frames_death,
+ flipper_dead);
+
+ static EntInteractAdapter flipper_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 EntDieAdapter flipper_die= new EntDieAdapter() {
+
+ public void flipper_die(
+ edict_t self,
+ edict_t inflictor,
+ edict_t attacker,
+ int damage,
+ float[] point) {
+ int n;
+
+ // check for gib
+ if (self.health <= self.gib_health) {
+ gi.sound(
+ self,
+ CHAN_VOICE,
+ gi.soundindex("misc/udeath.wav"),
+ 1,
+ ATTN_NORM,
+ 0);
+ for (n= 0; n < 2; n++)
+ ThrowGib(
+ self,
+ "models/objects/gibs/bone/tris.md2",
+ damage,
+ GIB_ORGANIC);
+ for (n= 0; n < 2; n++)
+ ThrowGib(
+ self,
+ "models/objects/gibs/sm_meat/tris.md2",
+ damage,
+ GIB_ORGANIC);
+ ThrowHead(
+ self,
+ "models/objects/gibs/sm_meat/tris.md2",
+ damage,
+ GIB_ORGANIC);
+ self.deadflag= DEAD_DEAD;
+ return;
+ }
+
+ if (self.deadflag == DEAD_DEAD)
+ return;
+
+ // regular death
+ gi.sound(self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0);
+ self.deadflag= DEAD_DEAD;
+ self.takedamage= DAMAGE_YES;
+ self.monsterinfo.currentmove= flipper_move_death;
+ }
+ };
+
+ /*QUAKED monster_flipper (1 .5 0) (-16 -16 -24) (16 16 32) Ambush Trigger_Spawn Sight
+ */
+ public static void SP_monster_flipper(edict_t self) {
+ if (deathmatch.value != 0) {
+ G_FreeEdict(self);
+ return;
+ }
+
+ sound_pain1= gi.soundindex("flipper/flppain1.wav");
+ sound_pain2= gi.soundindex("flipper/flppain2.wav");
+ sound_death= gi.soundindex("flipper/flpdeth1.wav");
+ sound_chomp= gi.soundindex("flipper/flpatck1.wav");
+ sound_attack= gi.soundindex("flipper/flpatck2.wav");
+ sound_idle= gi.soundindex("flipper/flpidle1.wav");
+ sound_search= gi.soundindex("flipper/flpsrch1.wav");
+ sound_sight= gi.soundindex("flipper/flpsght1.wav");
+
+ self.movetype= MOVETYPE_STEP;
+ self.solid= SOLID_BBOX;
+ self.s.modelindex= gi.modelindex("models/monsters/flipper/tris.md2");
+ Math3D.VectorSet(self.mins, -16, -16, 0);
+ Math3D.VectorSet(self.maxs, 16, 16, 32);
+
+ self.health= 50;
+ self.gib_health= -30;
+ self.mass= 100;
+
+ self.pain= flipper_pain;
+ self.die= flipper_die;
+
+ self.monsterinfo.stand= flipper_stand;
+ self.monsterinfo.walk= flipper_walk;
+ self.monsterinfo.run= flipper_start_run;
+ self.monsterinfo.melee= flipper_melee;
+ self.monsterinfo.sight= flipper_sight;
+
+ gi.linkentity(self);
+
+ self.monsterinfo.currentmove= flipper_move_stand;
+ self.monsterinfo.scale= MODEL_SCALE;
+
+ swimmonster_start.think(self);
+ }
+
+}