]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/mutators/mutator/vampire/sv_vampire.qc
Merge branch 't0uYK8Ne/set_slick_friction' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mutators / mutator / vampire / sv_vampire.qc
1 #include "sv_vampire.qh"
2
3 string autocvar_g_vampire;
4 float autocvar_g_vampire_factor = 1.0;
5 bool autocvar_g_vampire_use_total_damage = false;
6
7 REGISTER_MUTATOR(vampire, expr_evaluate(autocvar_g_vampire) && !MUTATOR_IS_ENABLED(mutator_instagib));
8
9 MUTATOR_HOOKFUNCTION(vampire, PlayerDamage_SplitHealthArmor)
10 {
11         entity frag_attacker = M_ARGV(1, entity);
12         entity frag_target = M_ARGV(2, entity);
13         float health_take = bound(0, M_ARGV(4, float), GetResource(frag_target, RES_HEALTH));
14         float armor_take = bound(0, M_ARGV(5, float), GetResource(frag_target, RES_ARMOR));
15         float damage_take = (autocvar_g_vampire_use_total_damage) ? health_take + armor_take : health_take;
16
17         if(time >= frag_target.spawnshieldtime &&
18            frag_target != frag_attacker &&
19            IS_PLAYER(frag_attacker) &&
20            !IS_DEAD(frag_target))
21         {
22                 GiveResource(frag_attacker, RES_HEALTH,
23                         autocvar_g_vampire_factor * damage_take);
24         }
25 }
26
27 MUTATOR_HOOKFUNCTION(vampire, BuildMutatorsString)
28 {
29         M_ARGV(0, string) = strcat(M_ARGV(0, string), ":Vampire");
30 }
31
32 MUTATOR_HOOKFUNCTION(vampire, BuildMutatorsPrettyString)
33 {
34         M_ARGV(0, string) = strcat(M_ARGV(0, string), ", Vampire");
35 }