📄 m_boss31.java
字号:
// missile attack ? if (self.monsterinfo.attack == null) return false; if (GameBase.level.time < self.monsterinfo.attack_finished) return false; if (enemy_range == Defines.RANGE_FAR) return false; if ((self.monsterinfo.aiflags & Defines.AI_STAND_GROUND) != 0) { chance = 0.4f; } else if (enemy_range == Defines.RANGE_MELEE) { chance = 0.8f; } else if (enemy_range == Defines.RANGE_NEAR) { chance = 0.4f; } else if (enemy_range == Defines.RANGE_MID) { chance = 0.2f; } else { return false; } if (Lib.random() < chance) { self.monsterinfo.attack_state = Defines.AS_MISSILE; self.monsterinfo.attack_finished = GameBase.level.time + 2 * Lib.random(); return true; } if ((self.flags & Defines.FL_FLY) != 0) { if (Lib.random() < 0.3) self.monsterinfo.attack_state = Defines.AS_SLIDING; else self.monsterinfo.attack_state = Defines.AS_STRAIGHT; } return false; } }; // // stand // static mframe_t jorg_frames_stand[] = new mframe_t[] { new mframe_t(GameAI.ai_stand, 0, jorg_idle), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), // 10 new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), // 20 new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), // 30 new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 19, null), new mframe_t(GameAI.ai_stand, 11, jorg_step_left), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 6, null), new mframe_t(GameAI.ai_stand, 9, jorg_step_right), new mframe_t(GameAI.ai_stand, 0, null), // 40 new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, -2, null), new mframe_t(GameAI.ai_stand, -17, jorg_step_left), new mframe_t(GameAI.ai_stand, 0, null), new mframe_t(GameAI.ai_stand, -12, null), // 50 new mframe_t(GameAI.ai_stand, -14, jorg_step_right) // 51 }; static mmove_t jorg_move_stand = new mmove_t(FRAME_stand01, FRAME_stand51, jorg_frames_stand, null); static mframe_t jorg_frames_run[] = new mframe_t[] { new mframe_t(GameAI.ai_run, 17, jorg_step_left), new mframe_t(GameAI.ai_run, 0, null), new mframe_t(GameAI.ai_run, 0, null), new mframe_t(GameAI.ai_run, 0, null), new mframe_t(GameAI.ai_run, 12, null), new mframe_t(GameAI.ai_run, 8, null), new mframe_t(GameAI.ai_run, 10, null), new mframe_t(GameAI.ai_run, 33, jorg_step_right), new mframe_t(GameAI.ai_run, 0, null), new mframe_t(GameAI.ai_run, 0, null), new mframe_t(GameAI.ai_run, 0, null), new mframe_t(GameAI.ai_run, 9, null), new mframe_t(GameAI.ai_run, 9, null), new mframe_t(GameAI.ai_run, 9, null) }; static mmove_t jorg_move_run = new mmove_t(FRAME_walk06, FRAME_walk19, jorg_frames_run, null); // // walk // static mframe_t jorg_frames_start_walk[] = new mframe_t[] { new mframe_t(GameAI.ai_walk, 5, null), new mframe_t(GameAI.ai_walk, 6, null), new mframe_t(GameAI.ai_walk, 7, null), new mframe_t(GameAI.ai_walk, 9, null), new mframe_t(GameAI.ai_walk, 15, null) }; static mmove_t jorg_move_start_walk = new mmove_t(FRAME_walk01, FRAME_walk05, jorg_frames_start_walk, null); static mframe_t jorg_frames_walk[] = new mframe_t[] { new mframe_t(GameAI.ai_walk, 17, 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, 12, null), new mframe_t(GameAI.ai_walk, 8, null), new mframe_t(GameAI.ai_walk, 10, null), new mframe_t(GameAI.ai_walk, 33, 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, 9, null), new mframe_t(GameAI.ai_walk, 9, null), new mframe_t(GameAI.ai_walk, 9, null) }; static mmove_t jorg_move_walk = new mmove_t(FRAME_walk06, FRAME_walk19, jorg_frames_walk, null); static mframe_t jorg_frames_end_walk[] = new mframe_t[] { new mframe_t(GameAI.ai_walk, 11, 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, 8, null), new mframe_t(GameAI.ai_walk, -8, null) }; static mmove_t jorg_move_end_walk = new mmove_t(FRAME_walk20, FRAME_walk25, jorg_frames_end_walk, null); static EntThinkAdapter jorg_walk = new EntThinkAdapter() { public String getID() { return "jorg_walk"; } public boolean think(edict_t self) { self.monsterinfo.currentmove = jorg_move_walk; return true; } }; static EntThinkAdapter jorg_run = new EntThinkAdapter() { public String getID() { return "jorg_run"; } public boolean think(edict_t self) { if ((self.monsterinfo.aiflags & Defines.AI_STAND_GROUND) != 0) self.monsterinfo.currentmove = jorg_move_stand; else self.monsterinfo.currentmove = jorg_move_run; return true; } }; static mframe_t jorg_frames_pain3[] = new mframe_t[] { new mframe_t(GameAI.ai_move, -28, null), new mframe_t(GameAI.ai_move, -6, null), new mframe_t(GameAI.ai_move, -3, jorg_step_left), new mframe_t(GameAI.ai_move, -9, null), new mframe_t(GameAI.ai_move, 0, jorg_step_right), 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, -7, null), new mframe_t(GameAI.ai_move, 1, null), new mframe_t(GameAI.ai_move, -11, null), new mframe_t(GameAI.ai_move, -4, null), new mframe_t(GameAI.ai_move, 0, null), new mframe_t(GameAI.ai_move, 0, null), new mframe_t(GameAI.ai_move, 10, null), new mframe_t(GameAI.ai_move, 11, null), new mframe_t(GameAI.ai_move, 0, null), new mframe_t(GameAI.ai_move, 10, null), new mframe_t(GameAI.ai_move, 3, null), new mframe_t(GameAI.ai_move, 10, null), new mframe_t(GameAI.ai_move, 7, jorg_step_left), new mframe_t(GameAI.ai_move, 17, null), new mframe_t(GameAI.ai_move, 0, null), new mframe_t(GameAI.ai_move, 0, null), new mframe_t(GameAI.ai_move, 0, jorg_step_right) }; static mmove_t jorg_move_pain3 = new mmove_t(FRAME_pain301, FRAME_pain325, jorg_frames_pain3, jorg_run); static mframe_t jorg_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) }; static mmove_t jorg_move_pain2 = new mmove_t(FRAME_pain201, FRAME_pain203, jorg_frames_pain2, jorg_run); static mframe_t jorg_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) }; static mmove_t jorg_move_pain1 = new mmove_t(FRAME_pain101, FRAME_pain103, jorg_frames_pain1, jorg_run); static mframe_t jorg_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), // 10 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), // 20 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), // 30 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), // 40 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_Boss32.MakronToss), new mframe_t(GameAI.ai_move, 0, M_Supertank.BossExplode) // 50 }; static mmove_t jorg_move_death = new mmove_t(FRAME_death01, FRAME_death50, jorg_frames_death1, jorg_dead); static mframe_t jorg_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, jorgBFG), 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 jorg_move_attack2 = new mmove_t(FRAME_attak201, FRAME_attak213, jorg_frames_attack2, jorg_run); static mframe_t jorg_frames_start_attack1[] = 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, null) }; static mmove_t jorg_move_start_attack1 = new mmove_t(FRAME_attak101, FRAME_attak108, jorg_frames_start_attack1, jorg_attack1); static mframe_t jorg_frames_attack1[] = new mframe_t[] { new mframe_t(GameAI.ai_charge, 0, jorg_firebullet), new mframe_t(GameAI.ai_charge, 0, jorg_firebullet), new mframe_t(GameAI.ai_charge, 0, jorg_firebullet), new mframe_t(GameAI.ai_charge, 0, jorg_firebullet), new mframe_t(GameAI.ai_charge, 0, jorg_firebullet), new mframe_t(GameAI.ai_charge, 0, jorg_firebullet) }; static mmove_t jorg_move_attack1 = new mmove_t(FRAME_attak109, FRAME_attak114, jorg_frames_attack1, jorg_reattack1); static mframe_t jorg_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) }; static mmove_t jorg_move_end_attack1 = new mmove_t(FRAME_attak115, FRAME_attak118, jorg_frames_end_attack1, jorg_run); /* * QUAKED monster_jorg (1 .5 0) (-80 -80 0) (90 90 140) Ambush Trigger_Spawn * Sight */ public static void SP_monster_jorg(edict_t self) { if (GameBase.deathmatch.value != 0) { GameUtil.G_FreeEdict(self); return; } sound_pain1 = GameBase.gi.soundindex("boss3/bs3pain1.wav"); sound_pain2 = GameBase.gi.soundindex("boss3/bs3pain2.wav"); sound_pain3 = GameBase.gi.soundindex("boss3/bs3pain3.wav"); sound_death = GameBase.gi.soundindex("boss3/bs3deth1.wav"); sound_attack1 = GameBase.gi.soundindex("boss3/bs3atck1.wav"); sound_attack2 = GameBase.gi.soundindex("boss3/bs3atck2.wav"); sound_search1 = GameBase.gi.soundindex("boss3/bs3srch1.wav"); sound_search2 = GameBase.gi.soundindex("boss3/bs3srch2.wav"); sound_search3 = GameBase.gi.soundindex("boss3/bs3srch3.wav"); sound_idle = GameBase.gi.soundindex("boss3/bs3idle1.wav"); sound_step_left = GameBase.gi.soundindex("boss3/step1.wav"); sound_step_right = GameBase.gi.soundindex("boss3/step2.wav"); sound_firegun = GameBase.gi.soundindex("boss3/xfire.wav"); sound_death_hit = GameBase.gi.soundindex("boss3/d_hit.wav"); M_Boss32.MakronPrecache(); self.movetype = Defines.MOVETYPE_STEP; self.solid = Defines.SOLID_BBOX; self.s.modelindex = GameBase.gi .modelindex("models/monsters/boss3/rider/tris.md2"); self.s.modelindex2 = GameBase.gi .modelindex("models/monsters/boss3/jorg/tris.md2"); Math3D.VectorSet(self.mins, -80, -80, 0); Math3D.VectorSet(self.maxs, 80, 80, 140); self.health = 3000; self.gib_health = -2000; self.mass = 1000; self.pain = jorg_pain; self.die = jorg_die; self.monsterinfo.stand = jorg_stand; self.monsterinfo.walk = jorg_walk; self.monsterinfo.run = jorg_run; self.monsterinfo.dodge = null; self.monsterinfo.attack = jorg_attack; self.monsterinfo.search = jorg_search; self.monsterinfo.melee = null; self.monsterinfo.sight = null; self.monsterinfo.checkattack = Jorg_CheckAttack; GameBase.gi.linkentity(self); self.monsterinfo.currentmove = jorg_move_stand; self.monsterinfo.scale = MODEL_SCALE; GameAI.walkmonster_start.think(self); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -