+string arg_slot[8];
+string Fill_Notif_Args(string args, string input,
+ string s1, string s2, string s3, string s4,
+ float f1, float f2, float f3, float f4)
+{
+ dprint(sprintf("Fill_Notif_Args('%s', '%s', %s, %s, %s, %s, %d, %d, %d, %d);\n",
+ args, input, s1, s2, s3, s4, f1, f2, f3, f4));
+
+ string selected, remaining = args;
+ float sel_num = 0;
+
+ #ifdef CSQC
+ string tmp_s;
+ #endif
+
+ if((remaining != "") && (input != ""))
+ {
+ for(;remaining;)
+ {
+ selected = car(remaining); remaining = cdr(remaining);
+
+ switch(strtolower(selected))
+ {
+ #define ADD_ARG_CASE(selected,result) case selected: { arg_slot[sel_num] = result; ++sel_num; break; }
+
+ ADD_ARG_CASE("s1", s1)
+ ADD_ARG_CASE("s2", s2)
+ ADD_ARG_CASE("s3", s3)
+ ADD_ARG_CASE("s4", s4)
+ ADD_ARG_CASE("f1", ftos(f1))
+ ADD_ARG_CASE("f2", ftos(f2))
+ ADD_ARG_CASE("f3", ftos(f3))
+ ADD_ARG_CASE("f4", ftos(f4))
+
+ #ifdef CSQC // CSQC replacements
+ ADD_ARG_CASE("pass_key", ((((tmp_s = getcommandkey("pass", "+use")) != "pass") && !(strstrofs(tmp_s, "not bound", 0) >= 0)) ? sprintf(CCR(_(" ^F1(Press %s)")), tmp_s) : ""))
+ ADD_ARG_CASE("frag_ping", ((f2 != BOT_PING) ? sprintf(CCR(_("\n(Ping ^2%d^BG)")), f2) : ""))
+ ADD_ARG_CASE("frag_stats", sprintf(CCR(_("\n(Health ^1%d^BG / Armor ^2%d^BG)%s")), f1, f2, ((f3 != BOT_PING) ? sprintf(CCR(_(" (Ping ^2%d^BG)")), f3) : "")))
+ //ADD_ARG_CASE("frag_pos", ((Should_Print_Score_Pos(f1)) ? sprintf("\n^BG%s", Read_Score_Pos(f1)) : ""))
+ ADD_ARG_CASE("spree_cen", (((f1 == 3) || (f1 == 5) || (f1 == 10) || (f1 == 15) || (f1 == 20) || (f1 == 25) || (f1 == 30)) ? sprintf(normal_or_gentle(_("%d frag spree! "), _("%d score spree! ")), f1) : ""))
+ ADD_ARG_CASE("spree_inf", (((f1 == 3) || (f1 == 5) || (f1 == 10) || (f1 == 15) || (f1 == 20) || (f1 == 25) || (f1 == 30)) ? sprintf(normal_or_gentle(_("%d frag spree! "), _("%d score spree! ")), f1) : ""))
+ ADD_ARG_CASE("spree_end", ((f1 >= 3) ? sprintf(normal_or_gentle(_(", ending their %d frag spree"), _(", ending their %d score spree")), f1) : ""))
+ ADD_ARG_CASE("spree_lost", ((f1 >= 3) ? sprintf(normal_or_gentle(_(", losing their %d frag spree"), _(", losing their %d score spree")), f1) : ""))
+ ADD_ARG_CASE("death_team", Team_ColoredFullName(f1 - 1))
+ ADD_ARG_CASE("weapon_name", ftos(f1)) // weaponorder[f1].netname
+
+ #else // SVQC replacements
+ ADD_ARG_CASE("spree_inf", (((f1 == 3) || (f1 == 5) || (f1 == 10) || (f1 == 15) || (f1 == 20) || (f1 == 25) || (f1 == 30)) ? sprintf(normal_or_gentle(_("%d frag spree! "), _("%d score spree! ")), f1) : ""))
+ ADD_ARG_CASE("spree_end", ((f1 >= 3) ? sprintf(normal_or_gentle(_(", ending their %d frag spree"), _(", ending their %d score spree")), f1) : ""))
+ ADD_ARG_CASE("spree_lost", ((f1 >= 3) ? sprintf(normal_or_gentle(_(", losing their %d frag spree"), _(", losing their %d score spree")), f1) : ""))
+ ADD_ARG_CASE("death_team", Team_ColoredFullName(f1))
+ ADD_ARG_CASE("weapon_name", ftos(f1)) // weaponorder[f1].netname
+ #endif
+
+ #undef ADD_ARG_CASE
+ default: { print("Hit unknown token in selected string! '", selected, "'\n"); break; }
+ }
+ if(sel_num == 7) { print("Hit maximum arguments!\n"); break; }
+ }
+
+ return sprintf(CCR(input), arg_slot[0], arg_slot[1], arg_slot[2], arg_slot[3], arg_slot[4], arg_slot[5], arg_slot[6], arg_slot[7]);
+ }
+
+ return "";
+}
+