|
| 1 | + |
| 2 | +enum // monster states |
| 3 | +{ |
| 4 | + MS_NONE = 0, |
| 5 | + MS_SEARCH, |
| 6 | + MS_HOME, |
| 7 | + MS_ATTACKING, |
| 8 | + MS_PAIN, |
| 9 | + MS_SLEEP, |
| 10 | + MS_AIMING |
| 11 | +}; |
| 12 | + |
| 13 | +enum |
| 14 | +{ |
| 15 | + MTYPE_PLAYER = 0, |
| 16 | + MTYPE_BRUTE, |
| 17 | + MTYPE_GRAY, |
| 18 | + MTYPE_GUARD, |
| 19 | + MTYPE_MECH, |
| 20 | + MTYPE_SPIDER, |
| 21 | + NUMMONSTERS |
| 22 | +}; |
| 23 | +inline bool validmonster(int monster) { return monster >= 0 && monster < NUMMONSTERS; } |
| 24 | + |
| 25 | +static const int MONSTER_EXPLODE_DELAY = 8000; |
| 26 | +static const int MONSTER_DETONATION_DELAY = 350; |
| 27 | + |
| 28 | +static const int TOTMFREQ = 14; |
| 29 | + |
| 30 | +struct monstertype // see docs for how these values modify behaviour |
| 31 | +{ |
| 32 | + int type, atk, speed, speedbonus, health, healthbonus, burstshots, freq, lag, rate, pain, loyalty, bscale, weight, bloodcolor; |
| 33 | + int painsound, diesound, haltsound, attacksound; |
| 34 | + const char *name, *mdlname, *worldgunmodel; |
| 35 | + bool isexplosive, isneutral, hasragdoll; |
| 36 | +}; |
| 37 | + |
| 38 | +static const monstertype monstertypes[NUMMONSTERS] = |
| 39 | +{ |
| 40 | + { MTYPE_PLAYER, ATK_PULSE1, 30, 0, 100, 25, 0, 0, 200, 100, 100, 1, 12, 100, 0x60FFFF, S_PAIN_MALE, S_DIE_MALE, NULL, NULL, "clone", "player/bones", "weapon/pulserifle/world", false, false, true }, |
| 41 | + { MTYPE_BRUTE, ATK_PISTOL2, 12, 0, 100, 25, 0, 3, 0, 100, 800, 1, 12, 100, 0x60FFFF, S_OGRO_PAIN, S_OGRO_DEATH, S_OGRO_HALT, NULL, "brute", "monster/ogro", "monster/ogro/weapon", false, false, true }, |
| 42 | + { MTYPE_GRAY, ATK_SCATTER1, 14, 0, 120, 30, 0, 1, 100, 400, 400, 4, 15, 60, 0xFFFF90, S_RATA_PAIN, S_RATA_DEATH, S_RATA_HALT, NULL, "gray", "monster/gray", "weapon/scattergun/world", false, false, false }, |
| 43 | + { MTYPE_GUARD, ATK_PULSE1, 15, 0, 200, 50, 8, 1, 80, 300, 300, 4, 14, 140, 0x60FFFF, S_GUARD_PAIN, S_GUARD_DEATH, S_GUARD_HALT, S_GUARD_ATTACK, "guard", "monster/guard", "monster/guard/weapon", false, false, true }, |
| 44 | + { MTYPE_MECH, ATK_ROCKET1, 12, 14, 500, 80, 0, 1, 0, 200, 200, 6, 22, 220, -1, S_BAUUL_PAIN, S_BAUUL_DEATH, S_BAUUL_HALT, NULL, "mech", "monster/mech", NULL, true, false, true }, |
| 45 | + { MTYPE_SPIDER, ATK_MELEE, 19, 0, 30, 30, 0, 1, 0, 200, 400, 1, 7, 20, 0xFF90FF, S_SPIDER_PAIN, S_SPIDER_DEATH, S_SPIDER_HALT, S_SPIDER_ATTACK, "cybercrab", "monster/spider", NULL, false, false, false } |
| 46 | +}; |
0 commit comments