/* * 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 11.11.2003 by RST. // $Id: M_Actor.java,v 1.4 2005-11-20 22:18:33 salomo Exp $ package jake2.game.monsters; import jake2.Defines; import jake2.game.*; import jake2.game.EntDieAdapter; import jake2.game.EntPainAdapter; import jake2.game.EntThinkAdapter; import jake2.game.EntTouchAdapter; import jake2.game.EntUseAdapter; import jake2.game.GameAI; import jake2.game.GameBase; import jake2.game.GameUtil; import jake2.game.Monster; import jake2.game.cplane_t; import jake2.game.csurface_t; import jake2.game.edict_t; import jake2.game.mframe_t; import jake2.game.mmove_t; import jake2.util.Lib; import jake2.util.Math3D; public class M_Actor { // This file generated by ModelGen - Do NOT Modify public final static int FRAME_attak01 = 0; public final static int FRAME_attak02 = 1; public final static int FRAME_attak03 = 2; public final static int FRAME_attak04 = 3; public final static int FRAME_death101 = 4; public final static int FRAME_death102 = 5; public final static int FRAME_death103 = 6; public final static int FRAME_death104 = 7; public final static int FRAME_death105 = 8; public final static int FRAME_death106 = 9; public final static int FRAME_death107 = 10; public final static int FRAME_death201 = 11; public final static int FRAME_death202 = 12; public final static int FRAME_death203 = 13; public final static int FRAME_death204 = 14; public final static int FRAME_death205 = 15; public final static int FRAME_death206 = 16; public final static int FRAME_death207 = 17; public final static int FRAME_death208 = 18; public final static int FRAME_death209 = 19; public final static int FRAME_death210 = 20; public final static int FRAME_death211 = 21; public final static int FRAME_death212 = 22; public final static int FRAME_death213 = 23; public final static int FRAME_death301 = 24; public final static int FRAME_death302 = 25; public final static int FRAME_death303 = 26; public final static int FRAME_death304 = 27; public final static int FRAME_death305 = 28; public final static int FRAME_death306 = 29; public final static int FRAME_death307 = 30; public final static int FRAME_death308 = 31; public final static int FRAME_death309 = 32; public final static int FRAME_death310 = 33; public final static int FRAME_death311 = 34; public final static int FRAME_death312 = 35; public final static int FRAME_death313 = 36; public final static int FRAME_death314 = 37; public final static int FRAME_death315 = 38; public final static int FRAME_flip01 = 39; public final static int FRAME_flip02 = 40; public final static int FRAME_flip03 = 41; public final static int FRAME_flip04 = 42; public final static int FRAME_flip05 = 43; public final static int FRAME_flip06 = 44; public final static int FRAME_flip07 = 45; public final static int FRAME_flip08 = 46; public final static int FRAME_flip09 = 47; public final static int FRAME_flip10 = 48; public final static int FRAME_flip11 = 49; public final static int FRAME_flip12 = 50; public final static int FRAME_flip13 = 51; public final static int FRAME_flip14 = 52; public final static int FRAME_grenad01 = 53; public final static int FRAME_grenad02 = 54; public final static int FRAME_grenad03 = 55; public final static int FRAME_grenad04 = 56; public final static int FRAME_grenad05 = 57; public final static int FRAME_grenad06 = 58; public final static int FRAME_grenad07 = 59; public final static int FRAME_grenad08 = 60; public final static int FRAME_grenad09 = 61; public final static int FRAME_grenad10 = 62; public final static int FRAME_grenad11 = 63; public final static int FRAME_grenad12 = 64; public final static int FRAME_grenad13 = 65; public final static int FRAME_grenad14 = 66; public final static int FRAME_grenad15 = 67; public final static int FRAME_jump01 = 68; public final static int FRAME_jump02 = 69; public final static int FRAME_jump03 = 70; public final static int FRAME_jump04 = 71; public final static int FRAME_jump05 = 72; public final static int FRAME_jump06 = 73; public final static int FRAME_pain101 = 74; public final static int FRAME_pain102 = 75; public final static int FRAME_pain103 = 76; public final static int FRAME_pain201 = 77; public final static int FRAME_pain202 = 78; public final static int FRAME_pain203 = 79; public final static int FRAME_pain301 = 80; public final static int FRAME_pain302 = 81; public final static int FRAME_pain303 = 82; public final static int FRAME_push01 = 83; public final static int FRAME_push02 = 84; public final static int FRAME_push03 = 85; public final static int FRAME_push04 = 86; public final static int FRAME_push05 = 87; public final static int FRAME_push06 = 88; public final static int FRAME_push07 = 89; public final static int FRAME_push08 = 90; public final static int FRAME_push09 = 91; public final static int FRAME_run01 = 92; public final static int FRAME_run02 = 93; public final static int FRAME_run03 = 94; public final static int FRAME_run04 = 95; public final static int FRAME_run05 = 96; public final static int FRAME_run06 = 97; public final static int FRAME_run07 = 98; public final static int FRAME_run08 = 99; public final static int FRAME_run09 = 100; public final static int FRAME_run10 = 101; public final static int FRAME_run11 = 102; public final static int FRAME_run12 = 103; public final static int FRAME_runs01 = 104; public final static int FRAME_runs02 = 105; public final static int FRAME_runs03 = 106; public final static int FRAME_runs04 = 107; public final static int FRAME_runs05 = 108; public final static int FRAME_runs06 = 109; public final static int FRAME_runs07 = 110; public final static int FRAME_runs08 = 111; public final static int FRAME_runs09 = 112; public final static int FRAME_runs10 = 113; public final static int FRAME_runs11 = 114; public final static int FRAME_runs12 = 115; public final static int FRAME_salute01 = 116; public final static int FRAME_salute02 = 117; public final static int FRAME_salute03 = 118; public final static int FRAME_salute04 = 119; public final static int FRAME_salute05 = 120; public final static int FRAME_salute06 = 121; public final static int FRAME_salute07 = 122; public final static int FRAME_salute08 = 123; public final static int FRAME_salute09 = 124; public final static int FRAME_salute10 = 125; public final static int FRAME_salute11 = 126; public final static int FRAME_salute12 = 127; public final static int FRAME_stand101 = 128; public final static int FRAME_stand102 = 129; public final static int FRAME_stand103 = 130; public final static int FRAME_stand104 = 131; public final static int FRAME_stand105 = 132; public final static int FRAME_stand106 = 133; public final static int FRAME_stand107 = 134; public final static int FRAME_stand108 = 135; public final static int FRAME_stand109 = 136; public final static int FRAME_stand110 = 137; public final static int FRAME_stand111 = 138; public final static int FRAME_stand112 = 139; public final static int FRAME_stand113 = 140; public final static int FRAME_stand114 = 141; public final static int FRAME_stand115 = 142; public final static int FRAME_stand116 = 143; public final static int FRAME_stand117 = 144; public final static int FRAME_stand118 = 145; public final static int FRAME_stand119 = 146; public final static int FRAME_stand120 = 147; public final static int FRAME_stand121 = 148; public final static int FRAME_stand122 = 149; public final static int FRAME_stand123 = 150; public final static int FRAME_stand124 = 151; public final static int FRAME_stand125 = 152; public final static int FRAME_stand126 = 153; public final static int FRAME_stand127 = 154; public final static int FRAME_stand128 = 155; public final static int FRAME_stand129 = 156; public final static int FRAME_stand130 = 157; public final static int FRAME_stand131 = 158; public final static int FRAME_stand132 = 159; public final static int FRAME_stand133 = 160; public final static int FRAME_stand134 = 161; public final static int FRAME_stand135 = 162; public final static int FRAME_stand136 = 163; public final static int FRAME_stand137 = 164; public final static int FRAME_stand138 = 165; public final static int FRAME_stand139 = 166; public final static int FRAME_stand140 = 167; public final static int FRAME_stand201 = 168; public final static int FRAME_stand202 = 169; public final static int FRAME_stand203 = 170; public final static int FRAME_stand204 = 171; public final static int FRAME_stand205 = 172; public final static int FRAME_stand206 = 173; public final static int FRAME_stand207 = 174; public final static int FRAME_stand208 = 175; public final static int FRAME_stand209 = 176; public final static int FRAME_stand210 = 177; public final static int FRAME_stand211 = 178; public final static int FRAME_stand212 = 179; public final static int FRAME_stand213 = 180; public final static int FRAME_stand214 = 181; public final static int FRAME_stand215 = 182; public final static int FRAME_stand216 = 183; public final static int FRAME_stand217 = 184; public final static int FRAME_stand218 = 185; public final static int FRAME_stand219 = 186; public final static int FRAME_stand220 = 187; public final static int FRAME_stand221 = 188; public final static int FRAME_stand222 = 189; public final static int FRAME_stand223 = 190; public final static int FRAME_swim01 = 191; public final static int FRAME_swim02 = 192; public final static int FRAME_swim03 = 193; public final static int FRAME_swim04 = 194; public final static int FRAME_swim05 = 195; public final static int FRAME_swim06 = 196; public final static int FRAME_swim07 = 197; public final static int FRAME_swim08 = 198; public final static int FRAME_swim09 = 199; public final static int FRAME_swim10 = 200; public final static int FRAME_swim11 = 201; public final static int FRAME_swim12 = 202; public final static int FRAME_sw_atk01 = 203; public final static int FRAME_sw_atk02 = 204; public final static int FRAME_sw_atk03 = 205; public final static int FRAME_sw_atk04 = 206; public final static int FRAME_sw_atk05 = 207; public final static int FRAME_sw_atk06 = 208; public final static int FRAME_sw_pan01 = 209; public final static int FRAME_sw_pan02 = 210; public final static int FRAME_sw_pan03 = 211; public final static int FRAME_sw_pan04 = 212; public final static int FRAME_sw_pan05 = 213; public final static int FRAME_sw_std01 = 214; public final static int FRAME_sw_std02 = 215; public final static int FRAME_sw_std03 = 216; public final static int FRAME_sw_std04 = 217; public final static int FRAME_sw_std05 = 218; public final static int FRAME_sw_std06 = 219; public final static int FRAME_sw_std07 = 220; public final static int FRAME_sw_std08 = 221; public final static int FRAME_sw_std09 = 222; public final static int FRAME_sw_std10 = 223; public final static int FRAME_sw_std11 = 224; public final static int FRAME_sw_std12 = 225; public final static int FRAME_sw_std13 = 226; public final static int FRAME_sw_std14 = 227; public final static int FRAME_sw_std15 = 228; public final static int FRAME_sw_std16 = 229; public final static int FRAME_sw_std17 = 230; public final static int FRAME_sw_std18 = 231; public final static int FRAME_sw_std19 = 232; public final static int FRAME_sw_std20 = 233; public final static int FRAME_taunt01 = 234; public final static int FRAME_taunt02 = 235; public final static int FRAME_taunt03 = 236; public final static int FRAME_taunt04 = 237; public final static int FRAME_taunt05 = 238; public final static int FRAME_taunt06 = 239; public final static int FRAME_taunt07 = 240; public final static int FRAME_taunt08 = 241; public final static int FRAME_taunt09 = 242; public final static int FRAME_taunt10 = 243; public final static int FRAME_taunt11 = 244; public final static int FRAME_taunt12 = 245; public final static int FRAME_taunt13 = 246; public final static int FRAME_taunt14 = 247; public final static int FRAME_taunt15 = 248; public final static int FRAME_taunt16 = 249; public final static int FRAME_taunt17 = 250; public final static int FRAME_walk01 = 251; public final static int FRAME_walk02 = 252; public final static int FRAME_walk03 = 253; public final static int FRAME_walk04 = 254; public final static int FRAME_walk05 = 255; public final static int FRAME_walk06 = 256; public final static int FRAME_walk07 = 257; public final static int FRAME_walk08 = 258; public final static int FRAME_walk09 = 259; public final static int FRAME_walk10 = 260; public final static int FRAME_walk11 = 261; public final static int FRAME_wave01 = 262; public final static int FRAME_wave02 = 263; public final static int FRAME_wave03 = 264; public final static int FRAME_wave04 = 265; public final static int FRAME_wave05 = 266; public final static int FRAME_wave06 = 267; public final static int FRAME_wave07 = 268; public final static int FRAME_wave08 = 269; public final static int FRAME_wave09 = 270; public final static int FRAME_wave10 = 271; public final static int FRAME_wave11 = 272; public final static int FRAME_wave12 = 273; public final static int FRAME_wave13 = 274; public final static int FRAME_wave14 = 275; public final static int FRAME_wave15 = 276; public final static int FRAME_wave16 = 277; public final static int FRAME_wave17 = 278; public final static int FRAME_wave18 = 279; public final static int FRAME_wave19 = 280; public final static int FRAME_wave20 = 281; public final static int FRAME_wave21 = 282; public final static int FRAME_bl_atk01 = 283; public final static int FRAME_bl_atk02 = 284; public final static int FRAME_bl_atk03 = 285; public final static int FRAME_bl_atk04 = 286; public final static int FRAME_bl_atk05 = 287; public final static int FRAME_bl_atk06 = 288; public final static int FRAME_bl_flp01 = 289; public final static int FRAME_bl_flp02 = 290; public final static int FRAME_bl_flp13 = 291; public final static int FRAME_bl_flp14 = 292; public final static int FRAME_bl_flp15 = 293; public final static int FRAME_bl_jmp01 = 294; public final static int FRAME_bl_jmp02 = 295; public final static int FRAME_bl_jmp03 = 296; public final static int FRAME_bl_jmp04 = 297; public final static int FRAME_bl_jmp05 = 298; public final static int FRAME_bl_jmp06 = 299; public final static int FRAME_bl_pn101 = 300; public final static int FRAME_bl_pn102 = 301; public final static int FRAME_bl_pn103 = 302; public final static int FRAME_bl_pn201 = 303; public final static int FRAME_bl_pn202 = 304; public final static int FRAME_bl_pn203 = 305; public final static int FRAME_bl_pn301 = 306; public final static int FRAME_bl_pn302 = 307; public final static int FRAME_bl_pn303 = 308; public final static int FRAME_bl_psh08 = 309; public final static int FRAME_bl_psh09 = 310; public final static int FRAME_bl_run01 = 311; public final static int FRAME_bl_run02 = 312; public final static int FRAME_bl_run03 = 313; public final static int FRAME_bl_run04 = 314; public final static int FRAME_bl_run05 = 315; public final static int FRAME_bl_run06 = 316; public final static int FRAME_bl_run07 = 317; public final static int FRAME_bl_run08 = 318; public final static int FRAME_bl_run09 = 319; public final static int FRAME_bl_run10 = 320; public final static int FRAME_bl_run11 = 321; public final static int FRAME_bl_run12 = 322; public final static int FRAME_bl_rns03 = 323; public final static int FRAME_bl_rns04 = 324; public final static int FRAME_bl_rns05 = 325; public final static int FRAME_bl_rns06 = 326; public final static int FRAME_bl_rns07 = 327; public final static int FRAME_bl_rns08 = 328; public final static int FRAME_bl_rns09 = 329; public final static int FRAME_bl_sal10 = 330; public final static int FRAME_bl_sal11 = 331; public final static int FRAME_bl_sal12 = 332; public final static int FRAME_bl_std01 = 333; public final static int FRAME_bl_std02 = 334; public final static int FRAME_bl_std03 = 335; public final static int FRAME_bl_std04 = 336; public final static int FRAME_bl_std05 = 337; public final static int FRAME_bl_std06 = 338; public final static int FRAME_bl_std07 = 339; public final static int FRAME_bl_std08 = 340; public final static int FRAME_bl_std09 = 341; public final static int FRAME_bl_std10 = 342; public final static int FRAME_bl_std11 = 343; public final static int FRAME_bl_std12 = 344; public final static int FRAME_bl_std13 = 345; public final static int FRAME_bl_std14 = 346; public final static int FRAME_bl_std15 = 347; public final static int FRAME_bl_std16 = 348; public final static int FRAME_bl_std17 = 349; public final static int FRAME_bl_std18 = 350; public final static int FRAME_bl_std19 = 351; public final static int FRAME_bl_std20 = 352; public final static int FRAME_bl_std21 = 353; public final static int FRAME_bl_std22 = 354; public final static int FRAME_bl_std23 = 355; public final static int FRAME_bl_std24 = 356; public final static int FRAME_bl_std25 = 357; public final static int FRAME_bl_std26 = 358; public final static int FRAME_bl_std27 = 359; public final static int FRAME_bl_std28 = 360; public final static int FRAME_bl_std29 = 361; public final static int FRAME_bl_std30 = 362; public final static int FRAME_bl_std31 = 363; public final static int FRAME_bl_std32 = 364; public final static int FRAME_bl_std33 = 365; public final static int FRAME_bl_std34 = 366; public final static int FRAME_bl_std35 = 367; public final static int FRAME_bl_std36 = 368; public final static int FRAME_bl_std37 = 369; public final static int FRAME_bl_std38 = 370; public final static int FRAME_bl_std39 = 371; public final static int FRAME_bl_std40 = 372; public final static int FRAME_bl_swm01 = 373; public final static int FRAME_bl_swm02 = 374; public final static int FRAME_bl_swm03 = 375; public final static int FRAME_bl_swm04 = 376; public final static int FRAME_bl_swm05 = 377; public final static int FRAME_bl_swm06 = 378; public final static int FRAME_bl_swm07 = 379; public final static int FRAME_bl_swm08 = 380; public final static int FRAME_bl_swm09 = 381; public final static int FRAME_bl_swm10 = 382; public final static int FRAME_bl_swm11 = 383; public final static int FRAME_bl_swm12 = 384; public final static int FRAME_bl_swk01 = 385; public final static int FRAME_bl_swk02 = 386; public final static int FRAME_bl_swk03 = 387; public final static int FRAME_bl_swk04 = 388; public final static int FRAME_bl_swk05 = 389; public final static int FRAME_bl_swk06 = 390; public final static int FRAME_bl_swp01 = 391; public final static int FRAME_bl_swp02 = 392; public final static int FRAME_bl_swp03 = 393; public final static int FRAME_bl_swp04 = 394; public final static int FRAME_bl_swp05 = 395; public final static int FRAME_bl_sws01 = 396; public final static int FRAME_bl_sws02 = 397; public final static int FRAME_bl_sws03 = 398; public final static int FRAME_bl_sws04 = 399; public final static int FRAME_bl_sws05 = 400; public final static int FRAME_bl_sws06 = 401; public final static int FRAME_bl_sws07 = 402; public final static int FRAME_bl_sws08 = 403; public final static int FRAME_bl_sws09 = 404; public final static int FRAME_bl_sws10 = 405; public final static int FRAME_bl_sws11 = 406; public final static int FRAME_bl_sws12 = 407; public final static int FRAME_bl_sws13 = 408; public final static int FRAME_bl_sws14 = 409; public final static int FRAME_bl_tau14 = 410; public final static int FRAME_bl_tau15 = 411; public final static int FRAME_bl_tau16 = 412; public final static int FRAME_bl_tau17 = 413; public final static int FRAME_bl_wlk01 = 414; public final static int FRAME_bl_wlk02 = 415; public final static int FRAME_bl_wlk03 = 416; public final static int FRAME_bl_wlk04 = 417; public final static int FRAME_bl_wlk05 = 418; public final static int FRAME_bl_wlk06 = 419; public final static int FRAME_bl_wlk07 = 420; public final static int FRAME_bl_wlk08 = 421; public final static int FRAME_bl_wlk09 = 422; public final static int FRAME_bl_wlk10 = 423; public final static int FRAME_bl_wlk11 = 424; public final static int FRAME_bl_wav19 = 425; public final static int FRAME_bl_wav20 = 426; public final static int FRAME_bl_wav21 = 427; public final static int FRAME_cr_atk01 = 428; public final static int FRAME_cr_atk02 = 429; public final static int FRAME_cr_atk03 = 430; public final static int FRAME_cr_atk04 = 431; public final static int FRAME_cr_atk05 = 432; public final static int FRAME_cr_atk06 = 433; public final static int FRAME_cr_atk07 = 434; public final static int FRAME_cr_atk08 = 435; public final static int FRAME_cr_pan01 = 436; public final static int FRAME_cr_pan02 = 437; public final static int FRAME_cr_pan03 = 438; public final static int FRAME_cr_pan04 = 439; public final static int FRAME_cr_std01 = 440; public final static int FRAME_cr_std02 = 441; public final static int FRAME_cr_std03 = 442; public final static int FRAME_cr_std04 = 443; public final static int FRAME_cr_std05 = 444; public final static int FRAME_cr_std06 = 445; public final static int FRAME_cr_std07 = 446; public final static int FRAME_cr_std08 = 447; public final static int FRAME_cr_wlk01 = 448; public final static int FRAME_cr_wlk02 = 449; public final static int FRAME_cr_wlk03 = 450; public final static int FRAME_cr_wlk04 = 451; public final static int FRAME_cr_wlk05 = 452; public final static int FRAME_cr_wlk06 = 453; public final static int FRAME_cr_wlk07 = 454; public final static int FRAME_crbl_a01 = 455; public final static int FRAME_crbl_a02 = 456; public final static int FRAME_crbl_a03 = 457; public final static int FRAME_crbl_a04 = 458; public final static int FRAME_crbl_a05 = 459; public final static int FRAME_crbl_a06 = 460; public final static int FRAME_crbl_a07 = 461; public final static int FRAME_crbl_p01 = 462; public final static int FRAME_crbl_p02 = 463; public final static int FRAME_crbl_p03 = 464; public final static int FRAME_crbl_p04 = 465; public final static int FRAME_crbl_s01 = 466; public final static int FRAME_crbl_s02 = 467; public final static int FRAME_crbl_s03 = 468; public final static int FRAME_crbl_s04 = 469; public final static int FRAME_crbl_s05 = 470; public final static int FRAME_crbl_s06 = 471; public final static int FRAME_crbl_s07 = 472; public final static int FRAME_crbl_s08 = 473; public final static int FRAME_crbl_w01 = 474; public final static int FRAME_crbl_w02 = 475; public final static int FRAME_crbl_w03 = 476; public final static int FRAME_crbl_w04 = 477; public final static int FRAME_crbl_w05 = 478; public final static int FRAME_crbl_w06 = 479; public final static int FRAME_crbl_w07 = 480; public final static float MODEL_SCALE = 1.000000f; public final static int MAX_ACTOR_NAMES = 8; static String actor_names[] = { "Hellrot", "Tokay", "Killme", "Disruptor", "Adrianator", "Rambear", "Titus", "Bitterman" }; static EntThinkAdapter actor_stand = new EntThinkAdapter() { public String getID() { return "actor_stand";} public boolean think(edict_t self) { self.monsterinfo.currentmove = actor_move_stand; // randomize on startup if (GameBase.level.time < 1.0) self.s.frame = self.monsterinfo.currentmove.firstframe + (Lib.rand() % (self.monsterinfo.currentmove.lastframe - self.monsterinfo.currentmove.firstframe + 1)); return true; } }; static mframe_t actor_frames_stand[] = new mframe_t[] { new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null), new mframe_t(GameAI.ai_stand, 0f, null) }; static mmove_t actor_move_stand = new mmove_t(FRAME_stand101, FRAME_stand140, actor_frames_stand, null); static mframe_t actor_frames_walk[] = { new mframe_t(GameAI.ai_walk, 0, null), new mframe_t(GameAI.ai_walk, 6, null), new mframe_t(GameAI.ai_walk, 10, null), new mframe_t(GameAI.ai_walk, 3, null), new mframe_t(GameAI.ai_walk, 2, null), new mframe_t(GameAI.ai_walk, 7, null), new mframe_t(GameAI.ai_walk, 10, null), new mframe_t(GameAI.ai_walk, 1, null), new mframe_t(GameAI.ai_walk, 4, null), new mframe_t(GameAI.ai_walk, 0, null), new mframe_t(GameAI.ai_walk, 0, null) }; static mmove_t actor_move_walk = new mmove_t(FRAME_walk01, FRAME_walk08, actor_frames_walk, null); static EntThinkAdapter actor_walk = new EntThinkAdapter() { public String getID() { return "actor_walk";} public boolean think(edict_t self) { self.monsterinfo.currentmove = actor_move_walk; return true; } }; static mframe_t actor_frames_run[] = new mframe_t[] { new mframe_t(GameAI.ai_run, 4, null), new mframe_t(GameAI.ai_run, 15, null), new mframe_t(GameAI.ai_run, 15, null), new mframe_t(GameAI.ai_run, 8, null), new mframe_t(GameAI.ai_run, 20, null), new mframe_t(GameAI.ai_run, 15, null), new mframe_t(GameAI.ai_run, 8, null), new mframe_t(GameAI.ai_run, 17, null), new mframe_t(GameAI.ai_run, 12, null), new mframe_t(GameAI.ai_run, -2, null), new mframe_t(GameAI.ai_run, -2, null), new mframe_t(GameAI.ai_run, -1, null) }; static mmove_t actor_move_run = new mmove_t(FRAME_run02, FRAME_run07, actor_frames_run, null); static EntThinkAdapter actor_run = new EntThinkAdapter() { public String getID() { return "actor_run";} public boolean think(edict_t self) { if ((GameBase.level.time < self.pain_debounce_time) && (self.enemy == null)) { if (self.movetarget != null) actor_walk.think(self); else actor_stand.think(self); return true; } if ((self.monsterinfo.aiflags & Defines.AI_STAND_GROUND) != 0) { actor_stand.think(self); return true; } self.monsterinfo.currentmove = actor_move_run; return true; } }; static mframe_t actor_frames_pain1[] = new mframe_t[] { new mframe_t(GameAI.ai_move, -5, null), new mframe_t(GameAI.ai_move, 4, null), new mframe_t(GameAI.ai_move, 1, null) }; static mmove_t actor_move_pain1 = new mmove_t(FRAME_pain101, FRAME_pain103, actor_frames_pain1, actor_run); static mframe_t actor_frames_pain2[] = new mframe_t[] { new mframe_t(GameAI.ai_move, -4, null), new mframe_t(GameAI.ai_move, 4, null), new mframe_t(GameAI.ai_move, 0, null) }; static mmove_t actor_move_pain2 = new mmove_t(FRAME_pain201, FRAME_pain203, actor_frames_pain2, actor_run); static mframe_t actor_frames_pain3[] = new mframe_t[] { new mframe_t(GameAI.ai_move, -1, null), new mframe_t(GameAI.ai_move, 1, null), new mframe_t(GameAI.ai_move, 0, null) }; static mmove_t actor_move_pain3 = new mmove_t(FRAME_pain301, FRAME_pain303, actor_frames_pain3, actor_run); static mframe_t actor_frames_flipoff[] = new mframe_t[] { new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null) }; static mmove_t actor_move_flipoff = new mmove_t(FRAME_flip01, FRAME_flip14, actor_frames_flipoff, actor_run); static mframe_t actor_frames_taunt[] = new mframe_t[] { new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null), new mframe_t(GameAI.ai_turn, 0, null) }; static mmove_t actor_move_taunt = new mmove_t(FRAME_taunt01, FRAME_taunt17, actor_frames_taunt, actor_run); static String messages[] = { "Watch it", "#$@*&", "Idiot", "Check your targets" }; static EntPainAdapter actor_pain = new EntPainAdapter() { public String getID() { return "actor_pain";} 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 (GameBase.level.time < self.pain_debounce_time) return; self.pain_debounce_time = GameBase.level.time + 3; //GameBase.gi.sound (self, CHAN_VOICE, actor.sound_pain, 1, // ATTN_NORM, 0); if ((other.client != null) && (Lib.random() < 0.4)) { float v[] = { 0, 0, 0 }; String name; Math3D.VectorSubtract(other.s.origin, self.s.origin, v); self.ideal_yaw = Math3D.vectoyaw(v); if (Lib.random() < 0.5f) self.monsterinfo.currentmove = actor_move_flipoff; else self.monsterinfo.currentmove = actor_move_taunt; // FIXME: does the ent-id work out ? name = actor_names[(self.index) % MAX_ACTOR_NAMES]; GameBase.gi.cprintf(other, Defines.PRINT_CHAT, name + ": " + messages[Lib.rand() % 3] + "!\n"); return; } n = Lib.rand() % 3; if (n == 0) self.monsterinfo.currentmove = actor_move_pain1; else if (n == 1) self.monsterinfo.currentmove = actor_move_pain2; else self.monsterinfo.currentmove = actor_move_pain3; } }; static EntThinkAdapter actor_dead = new EntThinkAdapter() { public String getID() { return "actor_dead";} public boolean think(edict_t self) { Math3D.VectorSet(self.mins, -16, -16, -24); Math3D.VectorSet(self.maxs, 16, 16, -8); self.movetype = Defines.MOVETYPE_TOSS; self.svflags |= Defines.SVF_DEADMONSTER; self.nextthink = 0; GameBase.gi.linkentity(self); return true; } }; static mframe_t actor_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, -13, null), new mframe_t(GameAI.ai_move, 14, null), new mframe_t(GameAI.ai_move, 3, null), new mframe_t(GameAI.ai_move, -2, null), new mframe_t(GameAI.ai_move, 1, null) }; static mmove_t actor_move_death1 = new mmove_t(FRAME_death101, FRAME_death107, actor_frames_death1, actor_dead); static mframe_t actor_frames_death2[] = new mframe_t[] { new mframe_t(GameAI.ai_move, 0, null), new mframe_t(GameAI.ai_move, 7, null), new mframe_t(GameAI.ai_move, -6, null), new mframe_t(GameAI.ai_move, -5, null), new mframe_t(GameAI.ai_move, 1, null), new mframe_t(GameAI.ai_move, 0, null), new mframe_t(GameAI.ai_move, -1, null), new mframe_t(GameAI.ai_move, -2, null), new mframe_t(GameAI.ai_move, -1, null), new mframe_t(GameAI.ai_move, -9, null), new mframe_t(GameAI.ai_move, -13, null), new mframe_t(GameAI.ai_move, -13, null), new mframe_t(GameAI.ai_move, 0, null) }; static mmove_t actor_move_death2 = new mmove_t(FRAME_death201, FRAME_death213, actor_frames_death2, actor_dead); static EntDieAdapter actor_die = new EntDieAdapter() { public String getID() { return "actor_die";} public void die(edict_t self, edict_t inflictor, edict_t attacker, int damage, float[] point) { int n; // check for gib if (self.health <= -80) { // gi.sound (self, CHAN_VOICE, actor.sound_gib, 1, ATTN_NORM, // 0); for (n = 0; n < 2; n++) GameMisc.ThrowGib(self, "models/objects/gibs/bone/tris.md2", damage, Defines.GIB_ORGANIC); for (n = 0; n < 4; n++) GameMisc.ThrowGib(self, "models/objects/gibs/sm_meat/tris.md2", damage, Defines.GIB_ORGANIC); GameMisc.ThrowHead(self, "models/objects/gibs/head2/tris.md2", damage, Defines.GIB_ORGANIC); self.deadflag = Defines.DEAD_DEAD; return; } if (self.deadflag == Defines.DEAD_DEAD) return; // regular death // gi.sound (self, CHAN_VOICE, actor.sound_die, 1, ATTN_NORM, 0); self.deadflag = Defines.DEAD_DEAD; self.takedamage = Defines.DAMAGE_YES; n = Lib.rand() % 2; if (n == 0) self.monsterinfo.currentmove = actor_move_death1; else self.monsterinfo.currentmove = actor_move_death2; } }; static EntThinkAdapter actor_fire = new EntThinkAdapter() { public String getID() { return "actor_fire";} public boolean think(edict_t self) { actorMachineGun(self); if (GameBase.level.time >= self.monsterinfo.pausetime) self.monsterinfo.aiflags &= ~Defines.AI_HOLD_FRAME; else self.monsterinfo.aiflags |= Defines.AI_HOLD_FRAME; return true; } }; static mframe_t actor_frames_attack[] = new mframe_t[] { new mframe_t(GameAI.ai_charge, -2, actor_fire), new mframe_t(GameAI.ai_charge, -2, null), new mframe_t(GameAI.ai_charge, 3, null), new mframe_t(GameAI.ai_charge, 2, null) }; static mmove_t actor_move_attack = new mmove_t(FRAME_attak01, FRAME_attak04, actor_frames_attack, actor_run); static EntThinkAdapter actor_attack = new EntThinkAdapter() { public String getID() { return "actor_attack";} public boolean think(edict_t self) { int n; self.monsterinfo.currentmove = actor_move_attack; n = (Lib.rand() & 15) + 3 + 7; self.monsterinfo.pausetime = GameBase.level.time + n * Defines.FRAMETIME; return true; } }; static EntUseAdapter actor_use = new EntUseAdapter() { public String getID() { return "actor_use";} public void use(edict_t self, edict_t other, edict_t activator) { float v[] = { 0, 0, 0 }; self.goalentity = self.movetarget = GameBase .G_PickTarget(self.target); if ((null == self.movetarget) || (Lib.strcmp(self.movetarget.classname, "target_actor") != 0)) { GameBase.gi .dprintf(self.classname + " has bad target " + self.target + " at " + Lib.vtos(self.s.origin) + "\n"); self.target = null; self.monsterinfo.pausetime = 100000000; self.monsterinfo.stand.think(self); return; } Math3D.VectorSubtract(self.goalentity.s.origin, self.s.origin, v); self.ideal_yaw = self.s.angles[Defines.YAW] = Math3D.vectoyaw(v); self.monsterinfo.walk.think(self); self.target = null; } }; /* * QUAKED target_actor (.5 .3 0) (-8 -8 -8) (8 8 8) JUMP SHOOT ATTACK x HOLD * BRUTAL JUMP jump in set direction upon reaching this target SHOOT take a * single shot at the pathtarget ATTACK attack pathtarget until it or actor * is dead * * "target" next target_actor "pathtarget" target of any action to be taken * at this point "wait" amount of time actor should pause at this point * "message" actor will "say" this to the player * * for JUMP only: "speed" speed thrown forward (default 200) "height" speed * thrown upwards (default 200) */ static EntTouchAdapter target_actor_touch = new EntTouchAdapter() { public String getID() { return "target_actor_touch";} public void touch(edict_t self, edict_t other, cplane_t plane, csurface_t surf) { float v[] = { 0, 0, 0 }; if (other.movetarget != self) return; if (other.enemy != null) return; other.goalentity = other.movetarget = null; if (self.message != null) { int n; edict_t ent; for (n = 1; n <= GameBase.game.maxclients; n++) { ent = GameBase.g_edicts[n]; if (!ent.inuse) continue; GameBase.gi.cprintf(ent, Defines.PRINT_CHAT, actor_names[(other.index) % MAX_ACTOR_NAMES] + ": " + self.message + "\n"); } } if ((self.spawnflags & 1) != 0) //jump { other.velocity[0] = self.movedir[0] * self.speed; other.velocity[1] = self.movedir[1] * self.speed; if (other.groundentity != null) { other.groundentity = null; other.velocity[2] = self.movedir[2]; GameBase.gi.sound(other, Defines.CHAN_VOICE, GameBase.gi .soundindex("player/male/jump1.wav"), 1, Defines.ATTN_NORM, 0); } } if ((self.spawnflags & 2) != 0) //shoot { } else if ((self.spawnflags & 4) != 0) //attack { other.enemy = GameBase.G_PickTarget(self.pathtarget); if (other.enemy != null) { other.goalentity = other.enemy; if ((self.spawnflags & 32) != 0) other.monsterinfo.aiflags |= Defines.AI_BRUTAL; if ((self.spawnflags & 16) != 0) { other.monsterinfo.aiflags |= Defines.AI_STAND_GROUND; actor_stand.think(other); } else { actor_run.think(other); } } } if (0 != (self.spawnflags & 6) && (self.pathtarget != null)) { String savetarget; savetarget = self.target; self.target = self.pathtarget; GameUtil.G_UseTargets(self, other); self.target = savetarget; } other.movetarget = GameBase.G_PickTarget(self.target); if (other.goalentity == null) other.goalentity = other.movetarget; if (null == other.movetarget && null == other.enemy) { other.monsterinfo.pausetime = GameBase.level.time + 100000000; other.monsterinfo.stand.think(other); } else if (other.movetarget == other.goalentity) { Math3D.VectorSubtract(other.movetarget.s.origin, other.s.origin, v); other.ideal_yaw = Math3D.vectoyaw(v); } } }; static void actorMachineGun(edict_t self) { float start[] = { 0, 0, 0 }, target[] = { 0, 0, 0 }; float forward[] = { 0, 0, 0 }, right[] = { 0, 0, 0 }; Math3D.AngleVectors(self.s.angles, forward, right, null); Math3D.G_ProjectSource(self.s.origin, M_Flash.monster_flash_offset[Defines.MZ2_ACTOR_MACHINEGUN_1], forward, right, start); if (self.enemy != null) { if (self.enemy.health > 0) { Math3D.VectorMA(self.enemy.s.origin, -0.2f, self.enemy.velocity, target); target[2] += self.enemy.viewheight; } else { Math3D.VectorCopy(self.enemy.absmin, target); target[2] += (self.enemy.size[2] / 2); } Math3D.VectorSubtract(target, start, forward); Math3D.VectorNormalize(forward); } else { Math3D.AngleVectors(self.s.angles, forward, null, null); } Monster.monster_fire_bullet(self, start, forward, 3, 4, Defines.DEFAULT_BULLET_HSPREAD, Defines.DEFAULT_BULLET_VSPREAD, Defines.MZ2_ACTOR_MACHINEGUN_1); } /** * QUAKED misc_actor (1 .5 0) (-16 -16 -24) (16 16 32) */ public static void SP_misc_actor(edict_t self) { if (GameBase.deathmatch.value != 0) { GameUtil.G_FreeEdict(self); return; } if (self.targetname != null) { GameBase.gi.dprintf("untargeted " + self.classname + " at " + Lib.vtos(self.s.origin) + "\n"); GameUtil.G_FreeEdict(self); return; } if (self.target != null) { GameBase.gi.dprintf(self.classname + " with no target at " + Lib.vtos(self.s.origin) + "\n"); GameUtil.G_FreeEdict(self); return; } self.movetype = Defines.MOVETYPE_STEP; self.solid = Defines.SOLID_BBOX; self.s.modelindex = GameBase.gi.modelindex("players/male/tris.md2"); Math3D.VectorSet(self.mins, -16, -16, -24); Math3D.VectorSet(self.maxs, 16, 16, 32); if (0 == self.health) self.health = 100; self.mass = 200; self.pain = actor_pain; self.die = actor_die; self.monsterinfo.stand = actor_stand; self.monsterinfo.walk = actor_walk; self.monsterinfo.run = actor_run; self.monsterinfo.attack = actor_attack; self.monsterinfo.melee = null; self.monsterinfo.sight = null; self.monsterinfo.aiflags |= Defines.AI_GOOD_GUY; GameBase.gi.linkentity(self); self.monsterinfo.currentmove = actor_move_stand; self.monsterinfo.scale = MODEL_SCALE; GameAI.walkmonster_start.think(self); // actors always start in a dormant state, they *must* be used to get // going self.use = actor_use; } public static void SP_target_actor(edict_t self) { if (self.targetname != null) GameBase.gi.dprintf(self.classname + " with no targetname at " + Lib.vtos(self.s.origin) + " \n"); self.solid = Defines.SOLID_TRIGGER; self.touch = target_actor_touch; Math3D.VectorSet(self.mins, -8, -8, -8); Math3D.VectorSet(self.maxs, 8, 8, 8); self.svflags = Defines.SVF_NOCLIENT; if ((self.spawnflags & 1) != 0) { if (0 == self.speed) self.speed = 200; if (0 == GameBase.st.height) GameBase.st.height = 200; if (self.s.angles[Defines.YAW] == 0) self.s.angles[Defines.YAW] = 360; GameBase.G_SetMovedir(self.s.angles, self.movedir); self.movedir[2] = GameBase.st.height; } GameBase.gi.linkentity(self); } }