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

📄 m_supertank.java

📁 JAKE2用JAVA写的queck2的3D游戏开发引擎
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            new mframe_t(GameAI.ai_move, 0, TreadSound),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null) };    static mmove_t supertank_move_turn_right = new mmove_t(FRAME_right_1,            FRAME_right_18, supertank_frames_turn_right, supertank_run);    static mframe_t supertank_frames_turn_left[] = new mframe_t[] {            new mframe_t(GameAI.ai_move, 0, TreadSound),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null) };    static mmove_t supertank_move_turn_left = new mmove_t(FRAME_left_1,            FRAME_left_18, supertank_frames_turn_left, supertank_run);    static mframe_t supertank_frames_pain3[] = new mframe_t[] {            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null) };    static mmove_t supertank_move_pain3 = new mmove_t(FRAME_pain3_9,            FRAME_pain3_12, supertank_frames_pain3, supertank_run);    static mframe_t supertank_frames_pain2[] = new mframe_t[] {            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null) };    static mmove_t supertank_move_pain2 = new mmove_t(FRAME_pain2_5,            FRAME_pain2_8, supertank_frames_pain2, supertank_run);    static mframe_t supertank_frames_pain1[] = new mframe_t[] {            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null) };    static mmove_t supertank_move_pain1 = new mmove_t(FRAME_pain1_1,            FRAME_pain1_4, supertank_frames_pain1, supertank_run);    static mframe_t supertank_frames_death1[] = new mframe_t[] {            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, M_Supertank.BossExplode) };    static mmove_t supertank_move_death = new mmove_t(FRAME_death_1,            FRAME_death_24, supertank_frames_death1, supertank_dead);    static mframe_t supertank_frames_backward[] = new mframe_t[] {            new mframe_t(GameAI.ai_walk, 0, TreadSound),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null),            new mframe_t(GameAI.ai_walk, 0, null) };    static mmove_t supertank_move_backward = new mmove_t(FRAME_backwd_1,            FRAME_backwd_18, supertank_frames_backward, null);    static mframe_t supertank_frames_attack4[] = new mframe_t[] {            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null) };    static mmove_t supertank_move_attack4 = new mmove_t(FRAME_attak4_1,            FRAME_attak4_6, supertank_frames_attack4, supertank_run);    static mframe_t supertank_frames_attack3[] = new mframe_t[] {            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null) };    static mmove_t supertank_move_attack3 = new mmove_t(FRAME_attak3_1,            FRAME_attak3_27, supertank_frames_attack3, supertank_run);    static mframe_t supertank_frames_attack2[] = new mframe_t[] {            new mframe_t(GameAI.ai_charge, 0, null),            new mframe_t(GameAI.ai_charge, 0, null),            new mframe_t(GameAI.ai_charge, 0, null),            new mframe_t(GameAI.ai_charge, 0, null),            new mframe_t(GameAI.ai_charge, 0, null),            new mframe_t(GameAI.ai_charge, 0, null),            new mframe_t(GameAI.ai_charge, 0, null),            new mframe_t(GameAI.ai_charge, 0, supertankRocket),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, supertankRocket),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, supertankRocket),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null) };    static mmove_t supertank_move_attack2 = new mmove_t(FRAME_attak2_1,            FRAME_attak2_27, supertank_frames_attack2, supertank_run);    static EntThinkAdapter supertank_reattack1 = new EntThinkAdapter() {    	public String getID(){ return "supertank_reattack1"; }        public boolean think(edict_t self) {            if (GameUtil.visible(self, self.enemy))                if (Lib.random() < 0.9)                    self.monsterinfo.currentmove = supertank_move_attack1;                else                    self.monsterinfo.currentmove = supertank_move_end_attack1;            else                self.monsterinfo.currentmove = supertank_move_end_attack1;            return true;        }    };    static mframe_t supertank_frames_attack1[] = new mframe_t[] {            new mframe_t(GameAI.ai_charge, 0, supertankMachineGun),            new mframe_t(GameAI.ai_charge, 0, supertankMachineGun),            new mframe_t(GameAI.ai_charge, 0, supertankMachineGun),            new mframe_t(GameAI.ai_charge, 0, supertankMachineGun),            new mframe_t(GameAI.ai_charge, 0, supertankMachineGun),            new mframe_t(GameAI.ai_charge, 0, supertankMachineGun), };    static mmove_t supertank_move_attack1 = new mmove_t(FRAME_attak1_1,            FRAME_attak1_6, supertank_frames_attack1, supertank_reattack1);    static mframe_t supertank_frames_end_attack1[] = new mframe_t[] {            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null),            new mframe_t(GameAI.ai_move, 0, null) };    static mmove_t supertank_move_end_attack1 = new mmove_t(FRAME_attak1_7,            FRAME_attak1_20, supertank_frames_end_attack1, supertank_run);    static EntPainAdapter supertank_pain = new EntPainAdapter() {    	public String getID(){ return "supertank_pain"; }        public void pain(edict_t self, edict_t other, float kick, int damage) {            if (self.health < (self.max_health / 2))                self.s.skinnum = 1;            if (GameBase.level.time < self.pain_debounce_time)                return;            // Lessen the chance of him going into his pain frames            if (damage <= 25)                if (Lib.random() < 0.2)                    return;            // Don't go into pain if he's firing his rockets            if (GameBase.skill.value >= 2)                if ((self.s.frame >= FRAME_attak2_1)                        && (self.s.frame <= FRAME_attak2_14))                    return;            self.pain_debounce_time = GameBase.level.time + 3;            if (GameBase.skill.value == 3)                return; // no pain anims in nightmare            if (damage <= 10) {                GameBase.gi.sound(self, Defines.CHAN_VOICE, sound_pain1, 1,                        Defines.ATTN_NORM, 0);                self.monsterinfo.currentmove = supertank_move_pain1;            } else if (damage <= 25) {                GameBase.gi.sound(self, Defines.CHAN_VOICE, sound_pain3, 1,                        Defines.ATTN_NORM, 0);                self.monsterinfo.currentmove = supertank_move_pain2;            } else {                GameBase.gi.sound(self, Defines.CHAN_VOICE, sound_pain2, 1,                        Defines.ATTN_NORM, 0);                self.monsterinfo.currentmove = supertank_move_pain3;            }        }    };    static EntDieAdapter supertank_die = new EntDieAdapter() {    	public String getID(){ return "supertank_die"; }        public void die(edict_t self, edict_t inflictor, edict_t attacker,                int damage, float[] point) {            GameBase.gi.sound(self, Defines.CHAN_VOICE, sound_death, 1,                    Defines.ATTN_NORM, 0);            self.deadflag = Defines.DEAD_DEAD;            self.takedamage = Defines.DAMAGE_NO;            self.count = 0;            self.monsterinfo.currentmove = supertank_move_death;        }    };    //    // monster_supertank    //    /*     * QUAKED monster_supertank (1 .5 0) (-64 -64 0) (64 64 72) Ambush     * Trigger_Spawn Sight     */    public static EntThinkAdapter SP_monster_supertank = new EntThinkAdapter() {    	public String getID(){ return "SP_monster_supertank"; }        public boolean think(edict_t self) {            if (GameBase.deathmatch.value != 0) {                GameUtil.G_FreeEdict(self);                return true;            }            sound_pain1 = GameBase.gi.soundindex("bosstank/btkpain1.wav");            sound_pain2 = GameBase.gi.soundindex("bosstank/btkpain2.wav");            sound_pain3 = GameBase.gi.soundindex("bosstank/btkpain3.wav");            sound_death = GameBase.gi.soundindex("bosstank/btkdeth1.wav");            sound_search1 = GameBase.gi.soundindex("bosstank/btkunqv1.wav");            sound_search2 = GameBase.gi.soundindex("bosstank/btkunqv2.wav");            //	self.s.sound = gi.soundindex ("bosstank/btkengn1.wav");            tread_sound = GameBase.gi.soundindex("bosstank/btkengn1.wav");            self.movetype = Defines.MOVETYPE_STEP;            self.solid = Defines.SOLID_BBOX;            self.s.modelindex = GameBase.gi                    .modelindex("models/monsters/boss1/tris.md2");            Math3D.VectorSet(self.mins, -64, -64, 0);            Math3D.VectorSet(self.maxs, 64, 64, 112);            self.health = 1500;            self.gib_health = -500;            self.mass = 800;            self.pain = supertank_pain;            self.die = supertank_die;            self.monsterinfo.stand = supertank_stand;            self.monsterinfo.walk = supertank_walk;            self.monsterinfo.run = supertank_run;            self.monsterinfo.dodge = null;            self.monsterinfo.attack = supertank_attack;            self.monsterinfo.search = supertank_search;            self.monsterinfo.melee = null;            self.monsterinfo.sight = null;            GameBase.gi.linkentity(self);            self.monsterinfo.currentmove = supertank_move_stand;            self.monsterinfo.scale = MODEL_SCALE;            GameAI.walkmonster_start.think(self);            return true;        }    };    /** Common Boss explode animation. */        public static EntThinkAdapter BossExplode = new EntThinkAdapter() {    	public String getID(){ return "BossExplode"; }        public boolean think(edict_t self) {            float[] org = { 0, 0, 0 };                int n;                self.think = BossExplode;            Math3D.VectorCopy(self.s.origin, org);            org[2] += 24 + (Lib.rand() & 15);            switch (self.count++) {            case 0:                org[0] -= 24;                org[1] -= 24;                break;            case 1:                org[0] += 24;                org[1] += 24;                break;            case 2:                org[0] += 24;                org[1] -= 24;                break;            case 3:                org[0] -= 24;                org[1] += 24;                break;            case 4:                org[0] -= 48;                org[1] -= 48;                break;            case 5:                org[0] += 48;                org[1] += 48;                break;            case 6:                org[0] -= 48;                org[1] += 48;                break;            case 7:                org[0] += 48;                org[1] -= 48;                break;            case 8:                self.s.sound = 0;                for (n = 0; n < 4; n++)                    GameMisc.ThrowGib(self, "models/objects/gibs/sm_meat/tris.md2", 500,                            Defines.GIB_ORGANIC);                for (n = 0; n < 8; n++)                    GameMisc.ThrowGib(self, "models/objects/gibs/sm_metal/tris.md2",                            500, Defines.GIB_METALLIC);                GameMisc.ThrowGib(self, "models/objects/gibs/chest/tris.md2", 500,                        Defines.GIB_ORGANIC);                GameMisc.ThrowHead(self, "models/objects/gibs/gear/tris.md2", 500,                        Defines.GIB_METALLIC);                self.deadflag = Defines.DEAD_DEAD;                return true;            }                GameBase.gi.WriteByte(Defines.svc_temp_entity);            GameBase.gi.WriteByte(Defines.TE_EXPLOSION1);            GameBase.gi.WritePosition(org);            GameBase.gi.multicast(self.s.origin, Defines.MULTICAST_PVS);                self.nextthink = GameBase.level.time + 0.1f;            return true;        }    };}

⌨️ 快捷键说明

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