157 lines
3.2 KiB
Plaintext
157 lines
3.2 KiB
Plaintext
/*
|
|
* Copyright (c) 2016-2019 Marco Hladik <marco@icculus.org>
|
|
*
|
|
* Permission to use, copy, modify, and distribute this software for any
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
void
|
|
Money_AddMoney(base_player pp, int iMoneyValue)
|
|
{
|
|
player pl = (player)pp;
|
|
dprint(sprintf("^2Money_AddMoney^7: giving %s $%i\n", pl.netname, iMoneyValue));
|
|
pl.money += (float)iMoneyValue;
|
|
|
|
if (pl.money > autocvar_fcs_maxmoney) {
|
|
pl.money = autocvar_fcs_maxmoney;
|
|
}
|
|
|
|
/* Because people do tend to kill hostages... */
|
|
if (pl.money < 0) {
|
|
pl.money = 0;
|
|
}
|
|
}
|
|
|
|
void
|
|
Money_QueTeamReward(int t, int iMoneyValue)
|
|
{
|
|
if (t == TEAM_T) {
|
|
g_cs_moneyreward_t += iMoneyValue;
|
|
} else {
|
|
g_cs_moneyreward_ct += iMoneyValue;
|
|
}
|
|
}
|
|
|
|
void
|
|
Money_GiveTeamReward(base_player pl)
|
|
{
|
|
if (pl.team == TEAM_T) {
|
|
Money_AddMoney(pl, g_cs_moneyreward_t);
|
|
} else {
|
|
Money_AddMoney(pl, g_cs_moneyreward_ct);
|
|
}
|
|
}
|
|
|
|
void
|
|
Money_ResetTeamReward(void)
|
|
{
|
|
g_cs_moneyreward_t = 0;
|
|
g_cs_moneyreward_ct = 0;
|
|
}
|
|
|
|
int
|
|
Money_GetLosses(int team)
|
|
{
|
|
if (team == TEAM_T) {
|
|
return g_cs_roundslost_t;
|
|
} else {
|
|
return g_cs_roundslost_ct;
|
|
}
|
|
}
|
|
|
|
int
|
|
Money_HasBonus(int team)
|
|
{
|
|
if (team == TEAM_T) {
|
|
return g_cs_bonus_t;
|
|
} else {
|
|
return g_cs_bonus_ct;
|
|
}
|
|
}
|
|
|
|
void
|
|
Money_HandleRoundReward(int winner)
|
|
{
|
|
int loser = -1;
|
|
|
|
if (winner == TEAM_CT) {
|
|
g_cs_winstreak_ct++;
|
|
g_cs_winstreak_t = 0;
|
|
g_cs_roundslost_t++;
|
|
g_cs_roundslost_ct = 0;
|
|
loser = TEAM_T;
|
|
|
|
if (g_cs_winstreak_ct >= 2) {
|
|
g_cs_bonus_ct = TRUE;
|
|
}
|
|
} else {
|
|
g_cs_winstreak_t++;
|
|
g_cs_winstreak_ct = 0;
|
|
g_cs_roundslost_ct++;
|
|
g_cs_roundslost_t = 0;
|
|
loser = TEAM_CT;
|
|
|
|
if (g_cs_winstreak_t >= 2) {
|
|
g_cs_bonus_t = TRUE;
|
|
}
|
|
}
|
|
|
|
/* After the condition of a team winning two consecutive rounds is
|
|
* satisfied then the loss bonus money changes to above where their
|
|
* first loss means they receive $1500 and not $1400. */
|
|
if (Money_HasBonus(loser)) {
|
|
switch (Money_GetLosses(loser)) {
|
|
case 1:
|
|
Money_QueTeamReward(loser, 1500);
|
|
break;
|
|
case 2:
|
|
Money_QueTeamReward(loser, 2000);
|
|
break;
|
|
case 3:
|
|
Money_QueTeamReward(loser, 2500);
|
|
break;
|
|
default:
|
|
Money_QueTeamReward(loser, 3000);
|
|
break;
|
|
}
|
|
} else {
|
|
switch (Money_GetLosses(loser)) {
|
|
case 1:
|
|
Money_QueTeamReward(loser, 1400);
|
|
break;
|
|
case 2:
|
|
Money_QueTeamReward(loser, 1900);
|
|
break;
|
|
case 3:
|
|
Money_QueTeamReward(loser, 2400);
|
|
break;
|
|
case 4:
|
|
Money_QueTeamReward(loser, 2900);
|
|
break;
|
|
default:
|
|
Money_QueTeamReward(loser, 3400);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void
|
|
Money_ResetRoundReward(void)
|
|
{
|
|
g_cs_roundslost_ct =
|
|
g_cs_roundslost_t =
|
|
g_cs_winstreak_ct =
|
|
g_cs_winstreak_t =
|
|
g_cs_bonus_ct =
|
|
g_cs_bonus_t = 0;
|
|
}
|