From: FruitieX Date: Mon, 20 Dec 2010 13:39:54 +0000 (+0200) Subject: Merge remote branch 'origin/divVerent/virtual-mirror-damage' into fruitiex/hud_damage... X-Git-Tag: xonotic-v0.1.0preview~2^2~2 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=cd69929f60e2df88000c2558629ce650204aca26;hp=6466744922d3260fd843212f818c7562abf7b43b Merge remote branch 'origin/divVerent/virtual-mirror-damage' into fruitiex/hud_damage-dmg_take --- diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 464de94ee..4af34caf7 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -638,7 +638,8 @@ seta timelimit_suddendeath 5 "number of minutes suddendeath mode lasts after all set g_tdm 0 "Team Deathmatch: the team who kills their opponents most often wins" seta teamplay_mode 4 "default teamplay setting in team games. 1 = no friendly fire, self damage. 2 = friendly fire and self damage enabled. 3 = no friendly fire, but self damage enabled. 4 = obey the following four cvars" -seta g_mirrordamage 0.300000 "for teamplay 4: mirror damage factor" +seta g_mirrordamage 0.500000 "for teamplay 4: mirror damage factor" +seta g_mirrordamage_virtual 1 "for teamplay 4: do not actually apply mirror damage, just show graphics effect for it" seta g_friendlyfire 0.100000 "for teamplay 4: fiendly fire factor" seta g_teamdamage_threshold 50 "for teamplay 4: threshold over which to apply mirror damage" seta g_teamdamage_resetspeed 30 "for teamplay 4: how fast player's teamdamage count decreases" diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c b/qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c index 417cfa610..841b2bf49 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create_advanced.c @@ -6,7 +6,7 @@ CLASS(XonoticAdvancedDialog) EXTENDS(XonoticDialog) ATTRIB(XonoticAdvancedDialog, title, string, "Advanced server settings") ATTRIB(XonoticAdvancedDialog, color, vector, SKINCOLOR_DIALOG_ADVANCED) ATTRIB(XonoticAdvancedDialog, intendedWidth, float, 0.5) - ATTRIB(XonoticAdvancedDialog, rows, float, 12) + ATTRIB(XonoticAdvancedDialog, rows, float, 13) ATTRIB(XonoticAdvancedDialog, columns, float, 3) ATTRIB(XonoticAdvancedDialog, refilterEntity, entity, NULL) ENDCLASS(XonoticAdvancedDialog) @@ -22,34 +22,37 @@ void XonoticAdvancedDialog_fill(entity me) { entity e; me.TR(me); - me.TD(me, 1, 1.2, makeXonoticTextLabel(0, "Game settings:")); + me.TD(me, 1, 3, makeXonoticTextLabel(0, "Game settings:")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "sv_spectate", "Allow spectating")); + me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "sv_spectate", "Allow spectating")); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Spawn shield:")); - me.TD(me, 1, 1.7, e = makeXonoticSlider(0, 15, 0.5, "g_spawnshieldtime")); + me.TD(me, 1, 1.6, e = makeXonoticSlider(0, 15, 0.5, "g_spawnshieldtime")); me.TR(me); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Game speed:")); - me.TD(me, 1, 1.7, e = makeXonoticSlider(0.5, 2.0, 0.1, "slowmo")); + me.TD(me, 1, 1.6, e = makeXonoticSlider(0.5, 2.0, 0.1, "slowmo")); me.TR(me); me.TR(me); - me.TD(me, 1, 1.2, makeXonoticTextLabel(0, "Teamplay settings:")); + me.TD(me, 1, 3, makeXonoticTextLabel(0, "Teamplay settings:")); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Friendly fire scale:")); - me.TD(me, 1, 1.7, e = makeXonoticSlider(0, 1.0, 0.05, "g_friendlyfire")); + me.TD(me, 1, 1.6, e = makeXonoticSlider(0, 1.0, 0.05, "g_friendlyfire")); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Friendly fire penalty:")); - me.TD(me, 1, 1.7, e = makeXonoticSlider(0, 1.0, 0.05, "g_mirrordamage")); + me.TD(me, 1, 1.6, e = makeXonoticSlider(0, 1.0, 0.05, "g_mirrordamage")); + me.TR(me); + me.TDempty(me, 0.4); + me.TD(me, 1, 2.6, e = makeXonoticCheckBox(0, "g_mirrordamage_virtual", "Virtual penalty (effect only)")); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, "Teams:")); - me.TD(me, 1, 1.7, e = makeXonoticTextSlider("g_tdm_teams_override g_domination_teams_override g_keyhunt_teams_override")); + me.TD(me, 1, 1.6, e = makeXonoticTextSlider("g_tdm_teams_override g_domination_teams_override g_keyhunt_teams_override")); e.addValue(e, "Default", "0"); e.addValue(e, "2 teams", "2"); e.addValue(e, "3 teams", "3"); diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index c5beab269..12731fd73 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -789,7 +789,9 @@ float autocvar_g_midair_shieldtime; float autocvar_g_minstagib_ammo_drop; float autocvar_g_minstagib_extralives; float autocvar_g_minstagib_speed_highspeed; +float autocvar_g_mirrordamage; #define autocvar_g_mirrordamage cvar("g_mirrordamage") +#define autocvar_g_mirrordamage_virtual cvar("g_mirrordamage_virtual") float autocvar_g_monster_zombie_attack_run_damage; float autocvar_g_monster_zombie_attack_run_delay; float autocvar_g_monster_zombie_attack_run_force; diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index 6ab29006d..9d7a49740 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -852,8 +852,20 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float } mirrordamage = 0; } - force = normalize(attacker.origin + attacker.view_ofs - hitloc) * mirrorforce; - Damage(attacker, inflictor, attacker, mirrordamage, DEATH_MIRRORDAMAGE, attacker.origin, force); + + if(autocvar_g_mirrordamage_virtual) + { + vector v; + v = healtharmor_applydamage(attacker.armorvalue, autocvar_g_balance_armor_blockpercent, mirrordamage); + attacker.dmg_take += v_x; + attacker.dmg_save += v_y; + attacker.dmg_inflictor = inflictor; + } + else + { + force = normalize(attacker.origin + attacker.view_ofs - hitloc) * mirrorforce; + Damage(attacker, inflictor, attacker, mirrordamage, DEATH_MIRRORDAMAGE, attacker.origin, force); + } } }