-Wed Jul 3 07:24:35 CEST 2019
+Mon Jul 15 07:24:31 CEST 2019
"Project-Id-Version: Xonotic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-19 07:23+0200\n"
-"PO-Revision-Date: 2019-06-19 07:16+0000\n"
+"PO-Revision-Date: 2019-07-14 15:44+0000\n"
"Last-Translator: Yannick Le Guen <leguen.yannick@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/team-xonotic/xonotic/"
"language/fr/)\n"
#: qcsrc/common/minigames/minigame/bd.qc:1095
msgid "Well done! Click 'Next Level' to continue"
-msgstr "Bien joué ! Cliquez sur « Niveau suivant » pour continuer !"
+msgstr "Bien joué ! Cliquez sur « Niveau suivant » pour continuer"
#: qcsrc/common/minigames/minigame/bd.qc:1162
msgid "Better luck next time!"
#: qcsrc/common/notifications/all.qh:450
msgid "TRIPLE FRAG! "
-msgstr "TRIPLE FRAG !"
+msgstr "TRIPLE FRAG ! "
#: qcsrc/common/notifications/all.qh:451
#, c-format
#: qcsrc/common/notifications/all.qh:451
msgid "RAGE! "
-msgstr "RAGE !"
+msgstr "RAGE ! "
#: qcsrc/common/notifications/all.qh:452
#, c-format
#: qcsrc/common/notifications/all.qh:452
msgid "MASSACRE! "
-msgstr "MASSACRE !"
+msgstr "MASSACRE ! "
#: qcsrc/common/notifications/all.qh:453
#, c-format
#: qcsrc/common/notifications/all.qh:453
msgid "MAYHEM! "
-msgstr "GRABUGE !"
+msgstr "GRABUGE ! "
#: qcsrc/common/notifications/all.qh:454
#, c-format
#: qcsrc/common/notifications/all.qh:454
msgid "BERSERKER! "
-msgstr "FOU FURIEUX !"
+msgstr "FOU FURIEUX ! "
#: qcsrc/common/notifications/all.qh:455
#, c-format
#: qcsrc/common/notifications/all.qh:455
msgid "CARNAGE! "
-msgstr "CARNAGE !"
+msgstr "CARNAGE ! "
#: qcsrc/common/notifications/all.qh:456
#, c-format
#: qcsrc/common/notifications/all.qh:456
msgid "ARMAGEDDON! "
-msgstr "ARMAGEDDON !"
+msgstr "ARMAGEDDON ! "
#: qcsrc/common/notifications/all.qh:463
#, c-format
#: qcsrc/common/notifications/all.qh:507
#, c-format
msgid "%d frag spree! "
-msgstr "%d frags d'affilée !"
+msgstr "%d frags d'affilée ! "
#: qcsrc/common/notifications/all.qh:520
msgid "First blood! "
-msgstr "Premier sang !"
+msgstr "Premier sang ! "
#: qcsrc/common/notifications/all.qh:520
msgid "First score! "
-msgstr "Premier point !"
+msgstr "Premier point ! "
#: qcsrc/common/notifications/all.qh:524
msgid "First casualty! "
#: qcsrc/common/notifications/all.qh:524
msgid "First victim! "
-msgstr "Première victime !"
+msgstr "Première victime ! "
#: qcsrc/common/notifications/all.qh:565
#, c-format
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
+# 62197a8afd75a0a64478212fcb55f596, 2017
# Contijn Buijs <contijn.buijs@gmail.com>, 2017
-# Joeke de Graaf <mappack@null.net>, 2017
+# 62197a8afd75a0a64478212fcb55f596, 2017
# Jonathan van der Steege <jonakeys@hotmail.com>, 2016
# Jonathan van der Steege <jonakeys@hotmail.com>, 2016
msgid ""
"Project-Id-Version: Xonotic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-19 07:23+0200\n"
-"PO-Revision-Date: 2019-06-29 18:20+0000\n"
+"PO-Revision-Date: 2019-07-07 02:23+0000\n"
"Last-Translator: Jean Trindade Pereira <jean_trindade2@hotmail.com>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/team-xonotic/"
"xonotic/language/pt_BR/)\n"
#: qcsrc/common/minigames/cl_minigames_hud.qc:390
msgid "Current Game"
-msgstr "Jogo Atual"
+msgstr "Jogo atual"
#: qcsrc/common/minigames/cl_minigames_hud.qc:415
msgid "Exit Menu"
-msgstr "Sair do Menu"
+msgstr "Sair do menu"
#: qcsrc/common/minigames/cl_minigames_hud.qc:427
#: qcsrc/menu/xonotic/dialog_multiplayer.qc:16
#: qcsrc/common/minigames/minigame/bd.qc:2
msgid "Bulldozer"
-msgstr ""
+msgstr "Buldôzer"
#: qcsrc/common/minigames/minigame/bd.qc:1092
#: qcsrc/common/minigames/minigame/ps.qc:421
#: qcsrc/common/minigames/minigame/c4.qc:2
msgid "Connect Four"
-msgstr ""
+msgstr "Lig 4"
#: qcsrc/common/minigames/minigame/c4.qc:311
#: qcsrc/common/minigames/minigame/c4.qc:317
#: qcsrc/common/minigames/minigame/nmm.qc:7
msgid "Nine Men's Morris"
-msgstr ""
+msgstr "Trilha"
#: qcsrc/common/minigames/minigame/nmm.qc:615
msgid ""
#: qcsrc/common/minigames/minigame/pong.qc:606
msgid "Press ^1Start Match^7 to start the match with the current players"
msgstr ""
-"Aperte ^1Iniciar Partida^7 para iniciar a partida com os jogadores atuais"
+"Aperte ^1Iniciar partida^7 para iniciar a partida com os jogadores atuais"
#: qcsrc/common/minigames/minigame/pong.qc:674
msgid "Start Match"
-msgstr "Iniciar Partida"
+msgstr "Iniciar partida"
#: qcsrc/common/minigames/minigame/pong.qc:675
msgid "Add AI player"
#: qcsrc/common/minigames/minigame/pp.qc:2
msgid "Push-Pull"
-msgstr ""
+msgstr "Empurrar e Puxar"
#: qcsrc/common/minigames/minigame/pp.qc:443
#: qcsrc/common/minigames/minigame/ttt.qc:324
#: qcsrc/common/minigames/minigame/ps.qc:2
msgid "Peg Solitaire"
-msgstr ""
+msgstr "Resta Um"
#: qcsrc/common/minigames/minigame/ps.qc:414
msgid "All pieces cleared!"
-msgstr ""
+msgstr "Todas as peças removidas!"
#: qcsrc/common/minigames/minigame/ps.qc:416
msgid "Remaining pieces:"
#: qcsrc/common/minigames/minigame/ttt.qc:2
msgid "Tic Tac Toe"
-msgstr ""
+msgstr "Jogo-da-velha"
#: qcsrc/common/minigames/minigame/ttt.qc:665
msgid "Single Player"
-msgstr "Um Jogador"
+msgstr "Um jogador"
#: qcsrc/common/monsters/monster/mage.qh:17
#: qcsrc/menu/xonotic/dialog_monstertools.qc:18
#: qcsrc/common/monsters/monster/mage.qh:29
msgid "Mage spike"
-msgstr "Prego de mago"
+msgstr "Espinho de mago"
#: qcsrc/common/monsters/monster/shambler.qh:17
#: qcsrc/menu/xonotic/dialog_monstertools.qc:17
#: qcsrc/common/mutators/mutator/waypoints/all.inc:3
msgid "Waypoint"
-msgstr "Ponto de passagem"
+msgstr "Ponto de interesse"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:4
msgid "Help me!"
#: qcsrc/common/util.qc:1488
msgid "BACKQUOTE"
-msgstr ""
+msgstr "APÓSTROFO"
#: qcsrc/common/util.qc:1489
msgid "QUOTE"
#: qcsrc/common/util.qc:1490
msgid "APOSTROPHE"
-msgstr "APÓSTROFO"
+msgstr "~"
#: qcsrc/common/util.qc:1491
msgid "BACKSLASH"
"to find some or if he fails to do so, face death. The secondary fire mode "
"does not inflict any damage but is good for doing trickjumps."
msgstr ""
-"Os jogadores terão uma arma, a qual pode instantaneamente matar o oponente "
-"com um único disparo. Se o jogador ficar sem munição, ele terá 10 segundos "
-"para encontrar alguma e se não conseguir fazer isso, irá morrer. O modo de "
-"disparo secundário não causa nenhum dano, mas é útil para executar truques "
-"de movimento."
+"Os jogadores terão uma arma que pode instantaneamente matar o oponente com "
+"um único disparo. Se o jogador ficar sem munição, ele terá 10 segundos para "
+"encontrar alguma e, se não conseguir fazer isso, morrerá. O modo de disparo "
+"secundário não causa nenhum dano, mas é útil para executar truques de "
+"movimento."
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:284
msgid ""
"switch to another weapon."
msgstr ""
"Sem itens Xonotic - em vez de pegar itens espalhados pelo mapa, todo mundo "
-"joga com a mesma arma. Depois de um certo tempo, uma contagem regressiva irá "
-"iniciar, e depois disso todos irão trocar para uma outra arma."
+"joga com a mesma arma. Após um certo tempo, inciará uma contagem regressiva "
+"e, depois disso, todos trocarão para outra arma."
#: qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc:288
msgid "with blaster"
#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:48
msgid "Show full servers that have no slots available"
-msgstr "Exibir servidores cheios que não contêm vagas disponíveis"
+msgstr "Exibir servidores cheios que não têm vagas disponíveis"
#: qcsrc/menu/xonotic/dialog_multiplayer_join.qc:52
msgid "Pause"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:64
msgid "Waypoints"
-msgstr "Caminhos"
+msgstr "Pontos de interesse"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:66
msgid "Display waypoint markers for objectives on the map"
-msgstr "Mostra os marcadores de caminhos para objetivos no mapa"
+msgstr "Exibe os marcadores de ponto de interesse para objetivos no mapa"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:67
msgid "Show various gametype specific waypoints"
-msgstr "Mostra diversos caminhos específicos de modos de jogo"
+msgstr "Exibe diversos pontos de interesse específicos de modos de jogo"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:73
msgid "Control transparency of the waypoints"
-msgstr "Transparência dos caminhos"
+msgstr "Transparência dos pontos de interesse"
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:77
#: qcsrc/menu/xonotic/dialog_settings_game_hud.qc:130
#
# Translators:
# Arm Coon <armcoon@gmail.com>, 2016-2017
-# Jeff Huang <s8321414@gmail.com>, 2015
+# 黃柏諺 <s8321414@gmail.com>, 2015
# msn1018927464 <msn1018927464@hotmail.com>, 2015
# msn1018927464 <msn1018927464@hotmail.com>, 2015
+# 黃柏諺 <s8321414@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Xonotic\n"
nl "Dutch" "Nederlands" 63%
pl "Polish" "Polski" 72%
pt "Portuguese" "Português" 86%
-pt_BR "Portuguese (Brazil)" "Português (Brasil)" 99%
+pt_BR "Portuguese (Brazil)" "Português (Brasil)" 100%
ro "Romanian" "Romana" 75%
fi "Finnish" "Suomi" 30%
el "Greek" "Ελληνική" 47%
// vampire
// =========
set g_vampire 0 "set to 1 to enable the vampire mode, where the damage done to your opponent gets added to your own health"
+set g_vampire_factor 1.0 "Multiply damage done by this factor before adding it to the player's health"
+set g_vampire_use_total_damage 0 "If 1 then add combined damage (health + armor) to attackers health. If 0 add only health damage."
// ========
{
case "activate":
{
- minigame.message = bd_turn_to_string(minigame.minigame_flags);
+ strcpy(minigame.message, bd_turn_to_string(minigame.minigame_flags));
bd_set_curr_pos("");
bd_curr_tile = BD_TILE_BRICK1;
return false;
}
+ case "deactivate":
+ {
+ strfree(minigame.message);
+ return false;
+ }
case "key_pressed":
{
if(minigame.minigame_flags & BD_TURN_MOVE)
{
if ( sf & MINIG_SF_UPDATE )
{
- sent.message = bd_turn_to_string(sent.minigame_flags);
+ strcpy(sent.message, bd_turn_to_string(sent.minigame_flags));
//if ( sent.minigame_flags & minigame_self.team )
//minigame_prompt();
}
case "activate":
{
c4_set_curr_pos("");
- minigame.message = c4_turn_to_string(minigame.minigame_flags);
+ strcpy(minigame.message, c4_turn_to_string(minigame.minigame_flags));
+ return false;
+ }
+ case "deactivate":
+ {
+ strfree(minigame.message);
return false;
}
case "key_pressed":
{
if ( sf & MINIG_SF_UPDATE )
{
- sent.message = c4_turn_to_string(sent.minigame_flags);
+ strcpy(sent.message, c4_turn_to_string(sent.minigame_flags));
if ( sent.minigame_flags & minigame_self.team )
minigame_prompt();
}
{
nmm_fromtile = NULL;
nmm_init_tiles(minigame);
- minigame.message = nmm_turn_to_string(minigame.minigame_flags);
+ strcpy(minigame.message, nmm_turn_to_string(minigame.minigame_flags));
}
else if ( event == "deactivate" )
{
nmm_fromtile = NULL;
nmm_kill_tiles(minigame);
+ strfree(minigame.message);
}
else if ( event == "key_pressed" && (minigame.minigame_flags&NMM_TURN_TEAM) == minigame_self.team )
{
}
else if ( sent.classname == "minigame" && ( ...(1,int) & MINIG_SF_UPDATE ) )
{
- sent.message = nmm_turn_to_string(sent.minigame_flags);
+ strcpy(sent.message, nmm_turn_to_string(sent.minigame_flags));
if ( sent.minigame_flags & minigame_self.team )
minigame_prompt();
}
{
case "activate":
return false;
+ case "deactivate":
+ {
+ strfree(minigame.message);
+ return false;
+ }
case "key_pressed":
switch ( ...(0,int) )
{
{
if ( sf & MINIG_SF_UPDATE )
{
- sent.message = pong_message(sent.minigame_flags);
+ strcpy(sent.message, pong_message(sent.minigame_flags));
}
}
return false;
if ( turnflags & PP_TURN_WIN )
{
+ // translator-friendly messages composed of 2 existing messages
if ( (turnflags&PP_TURN_TEAM) != minigame_self.team )
return strcat(_("You lost the game!"), "\n", _("Select \"^1Next Match^7\" on the menu for a rematch!"));
return strcat(_("You win!"), "\n", _("Select \"^1Next Match^7\" on the menu to start a new match!"));
case "activate":
{
pp_set_curr_pos("");
- minigame.message = pp_turn_to_string(minigame.minigame_flags);
+ strcpy(minigame.message, pp_turn_to_string(minigame.minigame_flags));
+ return false;
+ }
+ case "deactivate":
+ {
+ strfree(minigame.message);
return false;
}
case "key_pressed":
{
if ( sf & MINIG_SF_UPDATE )
{
- sent.message = pp_turn_to_string(sent.minigame_flags);
+ strcpy(sent.message, pp_turn_to_string(sent.minigame_flags));
if ( sent.minigame_flags & minigame_self.team )
minigame_prompt();
sent.pp_team1_score = ReadByte();
{
ps_set_curr_pos("");
ps_curr_piece = NULL;
- minigame.message = ps_turn_to_string(minigame.minigame_flags);
+ strcpy(minigame.message, ps_turn_to_string(minigame.minigame_flags));
+ return false;
+ }
+ case "deactivate":
+ {
+ strfree(minigame.message);
return false;
}
case "key_pressed":
{
if ( sf & MINIG_SF_UPDATE )
{
- sent.message = ps_turn_to_string(sent.minigame_flags);
+ strcpy(sent.message, ps_turn_to_string(sent.minigame_flags));
//if ( sent.minigame_flags & minigame_self.team )
//minigame_prompt();
}
if ( turnflags & TTT_TURN_WIN )
{
+ // translator-friendly messages composed of 2 existing messages
+ // TODO: proper "you win" banner instead of hijacking the help message
if ( (turnflags&TTT_TURN_TEAM) != minigame_self.team )
strcat(_("You lost the game!"), "\n", _("Select \"^1Next Match^7\" on the menu for a rematch!"));
return strcat(_("You win!"), "\n", _("Select \"^1Next Match^7\" on the menu to start a new match!"));
else
ttt_move(minigame,aiplayer,pos);
}
- minigame.message = ttt_turn_to_string(minigame.minigame_flags);
+ strcpy(minigame.message, ttt_turn_to_string(minigame.minigame_flags));
}
// Make the correct move
case "activate":
{
ttt_set_curr_pos("");
- minigame.message = ttt_turn_to_string(minigame.minigame_flags);
+ strcpy(minigame.message, ttt_turn_to_string(minigame.minigame_flags));
+ return false;
+ }
+ case "deactivate":
+ {
+ strfree(minigame.message);
return false;
}
case "key_pressed":
{
if ( sf & MINIG_SF_UPDATE )
{
- sent.message = ttt_turn_to_string(sent.minigame_flags);
+ strcpy(sent.message, ttt_turn_to_string(sent.minigame_flags));
if ( sent.minigame_flags & minigame_self.team )
minigame_prompt();
}
#include "sv_vampire.qh"
string autocvar_g_vampire;
+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, RES_HEALTH,
- bound(0, damage_take, GetResource(frag_target, RES_HEALTH)));
+ autocvar_g_vampire_factor * damage_take);
}
}
return;
}
+ precache_model(this.model);
+ precache_sound(this.item_pickupsound);
+
if (Item_IsLoot(this))
{
this.reset = SUB_Remove;
weaponsInMap |= WepSet_FromWeapon(Weapons_from(weaponid));
- precache_model(this.model);
- precache_sound(this.item_pickupsound);
-
if ( def.instanceOfPowerup
|| def.instanceOfWeaponPickup
|| (def.instanceOfHealth && def != ITEM_HealthSmall)
this.ItemStatus |= ITS_ANIMATE2;
}
+ if(Item_IsLoot(this))
+ this.gravity = 1;
+
if(def.instanceOfWeaponPickup)
{
if (!Item_IsLoot(this)) // if dropped, colormap is already set up nicely
this.colormap = 1024; // color shirt=0 pants=0 grey
- else
- this.gravity = 1;
if (!(this.spawnflags & 1024))
this.ItemStatus |= ITS_ANIMATE1;
this.SendFlags |= ISF_COLORMAP;
if (e_turret.team != e_target.owner.team)
return -12;
+
+ if (e_turret.team != e_target.aiment.team)
+ return -12; // portals
}
else
{
if (e_turret.team == e_target.owner.team)
return -14;
+
+ if (e_turret.team == e_target.aiment.team)
+ return -14; // portals
}
}
if(!PHYS_INPUT_BUTTON_ATCK2(this.owner))
return;
- if(!weaponLocked(this.owner) && !weaponUseForbidden(this.owner))
+ if(weaponLocked(this.owner) || weaponUseForbidden(this.owner))
return;
v = gettaginfo(this.tur_head,gettagindex(this.tur_head,"tag_fire"));
if(skill+this.bot_moveskill >= autocvar_bot_ai_bunnyhop_skilloffset)
havocbot_bunnyhop(this, dir);
- if ((dir * v_up) >= autocvar_sv_jumpvelocity*0.5 && (IS_ONGROUND(this))) PHYS_INPUT_BUTTON_JUMP(this) = true;
- if (((dodge * v_up) > 0) && random()*frametime >= 0.2*bound(0,(10-skill-this.bot_dodgeskill)*0.1,1)) PHYS_INPUT_BUTTON_JUMP(this) = true;
- if (((dodge * v_up) < 0) && random()*frametime >= 0.5*bound(0,(10-skill-this.bot_dodgeskill)*0.1,1)) this.havocbot_ducktime=time+0.3/bound(0.1,skill+this.bot_dodgeskill,10);
+ if (dir * v_up >= autocvar_sv_jumpvelocity * 0.5 && IS_ONGROUND(this))
+ PHYS_INPUT_BUTTON_JUMP(this) = true;
+ if (dodge)
+ {
+ if (dodge * v_up > 0 && random() * frametime >= 0.2 * bound(0, (10 - skill - this.bot_dodgeskill) * 0.1, 1))
+ PHYS_INPUT_BUTTON_JUMP(this) = true;
+ if (dodge * v_up < 0 && random() * frametime >= 0.5 * bound(0, (10 - skill - this.bot_dodgeskill) * 0.1, 1))
+ this.havocbot_ducktime = time + 0.3 / bound(0.1, skill + this.bot_dodgeskill, 10);
+ }
}
entity havocbot_gettarget(entity this, bool secondary)
}
// automatically create missing waypoints
-.entity botframe_autowaypoints_lastwp0, botframe_autowaypoints_lastwp1;
void botframe_autowaypoints_fix(entity p, float walkfromwp, .entity fld)
{
float r = botframe_autowaypoints_fix_from(p, walkfromwp, p.(fld), fld);
});
}
+//.entity botframe_autowaypoints_lastwp0;
+.entity botframe_autowaypoints_lastwp1;
void botframe_autowaypoints()
{
FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it) && !IS_DEAD(it), {
CS(this).motd_actived_time = -2; // wait until BUTTON_INFO gets released
else if(CS(this).motd_actived_time == -2 || IS_PLAYER(this) || IS_SPEC(this))
{
- // instanctly hide MOTD
+ // instantly hide MOTD
CS(this).motd_actived_time = 0;
Kill_Notification(NOTIF_ONE_ONLY, this, MSG_CENTER, CPID_MOTD);
}
g_weaponarena = 1;
g_weaponarena_list = "Most Weapons";
FOREACH(Weapons, it != WEP_Null, {
- if(!(it.spawnflags & WEP_FLAG_MUTATORBLOCKED))
- if(it.spawnflags & WEP_FLAG_NORMAL)
- g_weaponarena_weapons |= (it.m_wepset);
+ if(!(it.spawnflags & WEP_FLAG_MUTATORBLOCKED) && (it.spawnflags & WEP_FLAG_NORMAL) && !(it.spawnflags & WEP_FLAG_HIDDEN))
+ g_weaponarena_weapons |= (it.m_wepset);
});
}
else if (s == "none")
void TeamBalance_AutoBalanceBots()
{
- if (!autocvar_g_balance_teams ||
- !autocvar_g_balance_teams_prevent_imbalance)
- {
- return;
- }
- //PrintToChatAll("TeamBalance_AutoBalanceBots");
+ // checks disabled because we always want auto-balanced bots
+ //if (!(autocvar_g_balance_teams && autocvar_g_balance_teams_prevent_imbalance))
+ // return;
+
entity balance = TeamBalance_CheckAllowedTeams(NULL);
TeamBalance_GetTeamCounts(balance, NULL);
int smallest_team_index = 0;
entity pseudoprojectile = NULL;
vector dir = normalize(end - start);
- float length = vlen(end - start);
+ //float max_length = vlen(end - start);
vector force = dir * bforce;
// go a little bit into the wall because we need to hit this wall later
//explosion = spawn();
// Find all non-hit players the beam passed close by
+ float length = vlen(trace_endpos - start);
if(deathtype == WEP_VAPORIZER.m_id || deathtype == WEP_VORTEX.m_id) // WEAPONTODO
{
FOREACH_CLIENT(IS_REAL_CLIENT(it) && it != this, {
- if(!it.railgunhit)
- if(!(IS_SPEC(it) && it.enemy == this))
+ if (!it.railgunhit && !(IS_SPEC(it) && it.enemy == this))
{
- msg_entity = it;
// nearest point on the beam
- vector beampos = start + dir * bound(0, (msg_entity.origin - start) * dir, length);
+ vector beampos = start + dir * bound(0, (it.origin - start) * dir, length);
- float f = bound(0, 1 - vlen(beampos - msg_entity.origin) / 512, 1);
+ float f = bound(0, 1 - vlen(beampos - it.origin) / 512, 1);
if(f <= 0)
continue;
if(!pseudoprojectile)
pseudoprojectile = spawn(); // we need this so the sound uses the "entchannel4" volume
+ msg_entity = it;
soundtoat(MSG_ONE, pseudoprojectile, beampos, CH_SHOTS, SND(NEXWHOOSH_RANDOM()), VOL_BASE * f, ATTEN_NONE);
}
});