void Cmd_ChainLightning_f (edict_t *ent, float skill_mult, float cost_mult) { int damage=CLIGHTNING_INITIAL_DMG+CLIGHTNING_ADDON_DMG*ent->myskills.abilities[LIGHTNING].current_level; int attack_range=CLIGHTNING_INITIAL_AR+CLIGHTNING_ADDON_AR*ent->myskills.abilities[LIGHTNING].current_level; int hop_range=CLIGHTNING_INITIAL_HR+CLIGHTNING_ADDON_HR*ent->myskills.abilities[LIGHTNING].current_level; int cost=CLIGHTNING_COST*cost_mult; vec3_t start, forward, right, offset; if (!G_CanUseAbilities(ent, ent->myskills.abilities[LIGHTNING].current_level, cost)) return; if (ent->myskills.abilities[LIGHTNING].disable) return; damage *= skill_mult; // get starting position and forward vector AngleVectors (ent->client->v_angle, forward, right, NULL); VectorSet(offset, 0, 8, ent->viewheight-8); P_ProjectSource(ent->client, ent->s.origin, offset, forward, right, start); ChainLightning(ent, start, forward, damage, attack_range, hop_range); ent->client->ability_delay = level.time + CLIGHTNING_DELAY/* * cost_mult*/; ent->client->pers.inventory[power_cube_index] -= cost; }
void GladiatorChainLightning (edict_t *self) { int slvl, damage; vec3_t forward, start; if (!G_EntExists(self->enemy)) return; slvl = self->monsterinfo.level; if (slvl > 15) slvl = 15; damage = 50 + 15 * slvl; MonsterAim(self, 0.5, 0, false, MZ2_GLADIATOR_RAILGUN_1, forward, start); ChainLightning(self, start, forward, damage, 1024, 256); }