X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmutators%2Fmutator%2Fvampire%2Fsv_vampire.qc;h=12e4bdea43531a6fb1c8cbfc5154257f25fa9687;hb=d44927502027bfa3ccd6ccc98d9b7d6285c182c3;hp=199b4e202a7351a9b2d25bfb4364ec02119a259d;hpb=678127044857fb9b89f06faf7a3313bdeb43205c;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/mutators/mutator/vampire/sv_vampire.qc b/qcsrc/common/mutators/mutator/vampire/sv_vampire.qc index 199b4e202..12e4bdea4 100644 --- a/qcsrc/common/mutators/mutator/vampire/sv_vampire.qc +++ b/qcsrc/common/mutators/mutator/vampire/sv_vampire.qc @@ -1,20 +1,26 @@ #include "sv_vampire.qh" string autocvar_g_vampire; -REGISTER_MUTATOR(vampire, expr_evaluate(autocvar_g_vampire) && !cvar("g_instagib")); +float autocvar_g_vampire_factor = 1.0; +bool autocvar_g_vampire_use_total_damage = false; + +REGISTER_MUTATOR(vampire, expr_evaluate(autocvar_g_vampire) && !MUTATOR_IS_ENABLED(mutator_instagib)); MUTATOR_HOOKFUNCTION(vampire, PlayerDamage_SplitHealthArmor) { entity frag_attacker = M_ARGV(1, entity); entity frag_target = M_ARGV(2, entity); - float damage_take = M_ARGV(4, float); + float health_take = bound(0, M_ARGV(4, float), GetResource(frag_target, RES_HEALTH)); + float armor_take = bound(0, M_ARGV(5, float), GetResource(frag_target, RES_ARMOR)); + float damage_take = (autocvar_g_vampire_use_total_damage) ? health_take + armor_take : health_take; - if(time >= frag_target.spawnshieldtime) - if(frag_target != frag_attacker) - if(!IS_DEAD(frag_target)) + if(time >= frag_target.spawnshieldtime && + frag_target != frag_attacker && + IS_PLAYER(frag_attacker) && + !IS_DEAD(frag_target)) { - GiveResource(frag_attacker, RESOURCE_HEALTH, - bound(0, damage_take, frag_target.health)); + GiveResource(frag_attacker, RES_HEALTH, + autocvar_g_vampire_factor * damage_take); } }