int autocvar_g_keyhunt_teams_override;
// #define KH_PLAYER_USE_ATTACHMENT
+// TODO? no model exists for this
// #define KH_PLAYER_USE_CARRIEDMODEL
#ifdef KH_PLAYER_USE_ATTACHMENT
return 0;
}
-//entity kh_worldkeylist;
-.entity kh_worldkeynext;
entity kh_controller;
//bool kh_tracking_enabled;
int kh_teams;
midpoint += thisorigin;
if(!first)
- te_lightning2(NULL, lastorigin, thisorigin);
+ {
+ // TODO: this effect has been replaced due to a possible crash it causes
+ // see https://gitlab.com/xonotic/darkplaces/issues/123
+ //te_lightning2(NULL, lastorigin, thisorigin);
+ Send_Effect(EFFECT_TR_NEXUIZPLASMA, lastorigin, thisorigin, 1);
+ }
lastorigin = thisorigin;
if(first)
firstorigin = thisorigin;
}
if(NumTeams(kh_teams) > 2)
{
- te_lightning2(NULL, lastorigin, firstorigin);
+ //te_lightning2(NULL, lastorigin, firstorigin); // TODO see above
+ Send_Effect(EFFECT_TR_NEXUIZPLASMA, lastorigin, firstorigin, 1);
}
midpoint = midpoint * (1 / NumTeams(kh_teams));
te_customflash(midpoint, 1000, 1, Team_ColorRGB(winner_team) * 0.5 + '0.5 0.5 0.5'); // make the color >=0.5 in each component
kh_interferemsg_time = 0;
FOREACH_CLIENT(IS_PLAYER(it), {
if(it.team == kh_interferemsg_team)
+ {
if(it.kh_next)
Send_Notification(NOTIF_ONE, it, MSG_CENTER, CENTER_KEYHUNT_MEET);
else
Send_Notification(NOTIF_ONE, it, MSG_CENTER, CENTER_KEYHUNT_HELP);
+ }
else
Send_Notification(NOTIF_ONE, it, MSG_CENTER, APP_TEAM_NUM(kh_interferemsg_team, CENTER_KEYHUNT_INTERFERE));
});
navigation_routerating(this, head.owner, ratingscale_enemy * 10000, 100000);
}
- havocbot_goalrating_items(this, 1, this.origin, 10000);
+ havocbot_goalrating_items(this, 80000, this.origin, 10000);
}
void havocbot_role_kh_carrier(entity this)
return true;
}
+MUTATOR_HOOKFUNCTION(kh, LogDeath_AppendItemCodes)
+{
+ entity player = M_ARGV(0, entity);
+ if(player.kh_next)
+ M_ARGV(1, string) = strcat(M_ARGV(1, string), "K"); // item codes
+}
+
MUTATOR_HOOKFUNCTION(kh, DropSpecialItems)
{
entity frag_target = M_ARGV(0, entity);