// Josh: Won't gib if already in limbo, same as shrub void G_CensorPenalize(gentity_t *ent) { if (!ent->client) { return; } // forty - #127 - Burn a potty mouth if (g_censorPenalty.integer & CNSRPNLTY_BURN) { if ( ent->client->sess.sessionTeam != TEAM_SPECTATOR && !(ent->client->ps.pm_flags & PMF_LIMBO) && ent->health >= 0 && level.match_pause == PAUSE_NONE ) { G_BurnMeGood(ent, ent, NULL); AP(va("chat \"^7%s ^7burnt his fingers.\" -1", ent->client->pers.netname)); } } // forty - #127 - censor xp penalty if (g_censorPenalty.integer & CNSRPNLTY_XP) { if (ent->client->sess.sessionTeam != TEAM_SPECTATOR) { CPx(ent - g_entities, va("chat \"^1Warning^7: Watch you mouth!^* You have Lost %d XP.\"", g_censorXP.integer)); G_LoseSkillPoints(ent, BG_ClassSkillForClass(ent->client->sess.playerType), g_censorXP.integer); } } if (g_censorPenalty.integer & CNSRPNLTY_TMPMUTE) { ent->client->sess.auto_unmute_time = (level.time + 1000 * (g_censorMuteTime.integer)); CPx(ent - g_entities, va("print \"^5You've been auto-muted for %d seconds for language.\n\"", g_censorMuteTime.integer)); AP(va("chat \"%s^7 has been auto-muted for %d seconds for language.\" -1", ent->client->pers.netname, g_censorMuteTime.integer)); } if (g_censorPenalty.integer & CNSRPNLTY_KILL) { Force_Suicide(ent); return; } if (g_censorPenalty.integer & CNSRPNLTY_NOGIB) { // KILL, don't GIB ent->flags &= ~FL_GODMODE; ent->client->ps.stats[STAT_HEALTH] = ent->health = 0; ent->client->ps.persistant[PERS_HWEAPON_USE] = 0; // TTimo - if at MG42 player_die(ent, ent, ent, 135, MOD_UNKNOWN); } }
/** * @brief Loose skill for evil tkers :E * @param[in] tker * @param[in] mod * @param hr - unused * @param splash - unused */ void G_LoseKillSkillPoints(gentity_t *tker, meansOfDeath_t mod, hitRegion_t hr, qboolean splash) { if (!tker->client) { return; } if (GetMODTableData(mod)->skillType < SK_NUM_SKILLS) { G_LoseSkillPoints(tker, GetMODTableData(mod)->skillType, GetMODTableData(mod)->defaultKillPoints); } // prepare scoreboard CalculateRanks(); }
void G_LoseKillSkillPoints(gentity_t *tker, meansOfDeath_t mod, hitRegion_t hr, qboolean splash) { // for evil tkers :E if (!tker->client) { return; } switch (mod) { // light weapons case MOD_KNIFE: case MOD_LUGER: case MOD_COLT: case MOD_MP40: case MOD_THOMPSON: case MOD_STEN: case MOD_GARAND: case MOD_SILENCER: case MOD_FG42: // case MOD_FG42SCOPE: case MOD_CARBINE: case MOD_KAR98: case MOD_SILENCED_COLT: case MOD_K43: //bani - akimbo weapons lose score now as well case MOD_AKIMBO_COLT: case MOD_AKIMBO_LUGER: case MOD_AKIMBO_SILENCEDCOLT: case MOD_AKIMBO_SILENCEDLUGER: case MOD_GRENADE_LAUNCHER: case MOD_GRENADE_PINEAPPLE: //bani - airstrike marker kills case MOD_SMOKEGRENADE: G_LoseSkillPoints(tker, SK_LIGHT_WEAPONS, 3.f); // G_DebugAddSkillPoints( attacker, SK_LIGHT_WEAPONS, 2.f, "kill" ); break; // scoped weapons case MOD_GARAND_SCOPE: case MOD_K43_SCOPE: case MOD_FG42SCOPE: case MOD_SATCHEL: G_LoseSkillPoints(tker, SK_MILITARY_INTELLIGENCE_AND_SCOPED_WEAPONS, 3.f); // G_DebugAddSkillPoints( attacker, SK_LIGHT_WEAPONS, 2.f, "legshot kill" ); break; case MOD_MOBILE_MG42: case MOD_MACHINEGUN: case MOD_BROWNING: case MOD_MG42: case MOD_PANZERFAUST: case MOD_FLAMETHROWER: case MOD_MORTAR: G_LoseSkillPoints(tker, SK_HEAVY_WEAPONS, 3.f); // G_DebugAddSkillPoints( attacker, SK_HEAVY_WEAPONS, 3.f, "emplaced mg42 kill" ); break; case MOD_DYNAMITE: case MOD_LANDMINE: case MOD_GPG40: case MOD_M7: G_LoseSkillPoints(tker, SK_EXPLOSIVES_AND_CONSTRUCTION, 3.f); // G_DebugAddSkillPoints( attacker, SK_EXPLOSIVES_AND_CONSTRUCTION, 4.f, "dynamite or landmine kill" ); break; case MOD_ARTY: case MOD_AIRSTRIKE: G_LoseSkillPoints(tker, SK_SIGNALS, 3.f); // G_DebugAddSkillPoints( attacker, SK_SIGNALS, 4.f, "artillery kill" ); break; // no skills for anything else default: break; } }