// // Standing melee attacks // //================================================================================= int warriorHitDamage[5] = { 16, 16, 16, 12, 20 }; #define NUM_WARRIOR_ANIMS 5 int warriorHitTimes[NUM_WARRIOR_ANIMS][3] = { // up to three hits per attack {ANIMLENGTH( 10,20 ),-1}, {ANIMLENGTH( 15,20 ),-1}, {ANIMLENGTH( 18,20 ),-1}, {ANIMLENGTH( 15,20 ),-1}, {ANIMLENGTH( 14,20 ),-1}, }; /* ================ AIFunc_WarriorZombieMelee ================ */ char *AIFunc_WarriorZombieMelee( cast_state_t *cs ) { gentity_t *ent = &g_entities[cs->entityNum]; int hitDelay = -1, anim; trace_t *tr;
BG_AnimScriptEvent( &ent->client->ps, ANIM_ET_FIREWEAPON, qfalse, qtrue ); // cs->aifunc = AIFunc_Helga_SpiritAttack; return "AIFunc_Helga_SpiritAttack"; } //================================================================================= // // Standing melee attacks // //================================================================================= #define NUM_HELGA_ANIMS 3 #define MAX_HELGA_IMPACTS 3 int helgaHitTimes[NUM_HELGA_ANIMS][MAX_HELGA_IMPACTS] = { // up to three hits per attack {ANIMLENGTH( 16,20 ),-1}, {ANIMLENGTH( 11,20 ),ANIMLENGTH( 19,20 ),-1}, {ANIMLENGTH( 10,20 ),ANIMLENGTH( 17,20 ),ANIMLENGTH( 26,20 )}, }; int helgaHitDamage[NUM_HELGA_ANIMS] = { 20, 14, 12 }; /* ================ AIFunc_Helga_Melee ================ */ const char *AIFunc_Helga_Melee( cast_state_t *cs ) {
================ AIFunc_ZombieMelee ================ */ int zombieHitDamage[5] = { 16, 16, 16, 12, 20 }; #define NUM_ZOMBIE_ANIMS 5 int zombieHitTimes[NUM_ZOMBIE_ANIMS][3] = { // up to three hits per attack {ANIMLENGTH( 11,20 ),-1}, {ANIMLENGTH( 9,20 ),-1}, {ANIMLENGTH( 9,20 ),-1}, {ANIMLENGTH( 8,20 ),ANIMLENGTH( 16,20 ),-1}, {ANIMLENGTH( 8,20 ),ANIMLENGTH( 15,20 ),ANIMLENGTH( 24,20 )}, }; char *AIFunc_ZombieMelee( cast_state_t *cs ) { gentity_t *ent = &g_entities[cs->entityNum]; int hitDelay = -1, anim; trace_t *tr; cast_state_t *ecs = AICast_GetCastState( cs->enemyNum ); aicast_predictmove_t move; float enemyDist; if ( !ent->client->ps.torsoTimer ) {