/******************************************************************* * Decompiled By: Bog * Decompiled File: maps\mp\_challenges.gsc * Game: Call of Duty: Black Ops 2 * Platform: PC * Function Count: 87 * Decompile Time: 43 ms * Timestamp: 10/28/2023 12:10:52 AM *******************************************************************/ #include common_scripts/utility; #include maps/mp/_utility; //Function Number: 1 init() { if(!(IsDefined(level.challengescallbacks))) { level.challengescallbacks = []; } waittillframeend; if(canprocesschallenges()) { registerchallengescallback("playerKilled",::challengekills); registerchallengescallback("gameEnd",::challengegameend); registerchallengescallback("roundEnd",::challengeroundend); } level thread onplayerconnect(); foreach(team in level.teams) { initteamchallenges(team); } } //Function Number: 2 addflyswatterstat(weapon,aircraft) { if(!(IsDefined(self.pers["flyswattercount"]))) { self.pers["flyswattercount"] = 0; } self addweaponstat(weapon,"destroyed_aircraft",1); self.pers["flyswattercount"]++; if(self.pers["flyswattercount"] == 5) { self addweaponstat(weapon,"destroyed_5_aircraft",1); } if(IsDefined(aircraft) && IsDefined(aircraft.birthtime)) { if(GetTime() - aircraft.birthtime < 20000) { self addweaponstat(weapon,"destroyed_aircraft_under20s",1); } } if(!(IsDefined(self.destroyedaircrafttime))) { self.destroyedaircrafttime = []; } if(IsDefined(self.destroyedaircrafttime[weapon]) && GetTime() - self.destroyedaircrafttime[weapon] < 10000) { self addweaponstat(weapon,"destroyed_2aircraft_quickly",1); self.destroyedaircrafttime[weapon] = undefined; } else { self.destroyedaircrafttime[weapon] = GetTime(); } } //Function Number: 3 canprocesschallenges() { /# if(getdvarintdefault("scr_debug_challenges",0)) { return 1; } #/ if(level.rankedmatch || level.wagermatch) { return 1; } return 0; } //Function Number: 4 initteamchallenges(team) { if(!(IsDefined(game["challenge"]))) { game["challenge"] = []; } if(!(IsDefined(game["challenge"][team]))) { game["challenge"][team] = []; game["challenge"][team]["plantedBomb"] = 0; game["challenge"][team]["destroyedBombSite"] = 0; game["challenge"][team]["capturedFlag"] = 0; } game["challenge"][team]["allAlive"] = 1; } //Function Number: 5 registerchallengescallback(callback,func) { if(!(IsDefined(level.challengescallbacks[callback]))) { level.challengescallbacks[callback] = []; } level.challengescallbacks[callback][level.challengescallbacks[callback].size] = func; } //Function Number: 6 dochallengecallback(callback,data) { if(!(IsDefined(level.challengescallbacks))) { return; } if(!(IsDefined(level.challengescallbacks[callback]))) { return; } if(IsDefined(data)) { for(i = 0;i < level.challengescallbacks[callback].size;i++) { thread [[ level.challengescallbacks[callback][i] ]](data); } } else { for(i = 0;i < level.challengescallbacks[callback].size;i++) { thread [[ level.challengescallbacks[callback][i] ]](); } } } //Function Number: 7 onplayerconnect() { for(;;) { level waittill("connected",player); player thread initchallengedata(); player thread spawnwatcher(); player thread monitorreloads(); } } //Function Number: 8 monitorreloads() { self endon("disconnect"); while(1) { self waittill("reload"); currentweapon = self getcurrentweapon(); if(currentweapon == "none") { continue; } time = GetTime(); self.lastreloadtime = time; if(currentweapon == "crossbow_mp") { self.crossbowclipkillcount = 0; } if(weaponhasattachment(currentweapon,"dualclip")) { self thread reloadthenkill(currentweapon); } } } //Function Number: 9 reloadthenkill(reloadweapon) { self endon("disconnect"); self endon("death"); self endon("reloadThenKillTimedOut"); self notify("reloadThenKillStart"); self endon("reloadThenKillStart"); self thread reloadthenkilltimeout(5); for(;;) { self waittill("killed_enemy_player",time,weapon); if(reloadweapon == weapon) { self addplayerstat("reload_then_kill_dualclip",1); } } } //Function Number: 10 reloadthenkilltimeout(time) { self endon("disconnect"); self endon("death"); self endon("reloadThenKillStart"); wait(time); self notify("reloadThenKillTimedOut"); } //Function Number: 11 initchallengedata() { self.pers["bulletStreak"] = 0; self.pers["lastBulletKillTime"] = 0; self.pers["stickExplosiveKill"] = 0; self.pers["carepackagesCalled"] = 0; self.explosiveinfo = []; } //Function Number: 12 isdamagefromplayercontrolledaitank(eattacker,einflictor,sweapon) { if(sweapon == "ai_tank_drone_gun_mp") { if(IsDefined(eattacker) && IsDefined(eattacker.remoteweapon) && IsDefined(einflictor)) { if(IsDefined(einflictor.controlled) && einflictor.controlled == 1) { if(eattacker.remoteweapon == einflictor) { return 1; } } } } else if(sweapon == "ai_tank_drone_rocket_mp") { if(IsDefined(einflictor) && !IsDefined(einflictor.from_ai)) { return 1; } } return 0; } //Function Number: 13 isdamagefromplayercontrolledsentry(eattacker,einflictor,sweapon) { if(sweapon == "auto_gun_turret_mp") { if(IsDefined(eattacker) && IsDefined(eattacker.remoteweapon) && IsDefined(einflictor)) { if(eattacker.remoteweapon == einflictor) { if(IsDefined(einflictor.controlled) && einflictor.controlled == 1) { return 1; } } } } } //Function Number: 14 challengekills(data,time) { victim = data.victim; player = data.attacker; attacker = data.attacker; time = data.time; victim = data.victim; weapon = data.sweapon; time = data.time; inflictor = data.einflictor; meansofdeath = data.smeansofdeath; wasplanting = data.wasplanting; wasdefusing = data.wasdefusing; lastweaponbeforetoss = data.lastweaponbeforetoss; ownerweaponatlaunch = data.ownerweaponatlaunch; if(!(IsDefined(data.sweapon))) { return; } if(!IsDefined(player) || !isplayer(player)) { return; } weaponclass = getweaponclass(weapon); game["challenge"][victim.team]["allAlive"] = 0; if(level.teambased) { if(player.team == victim.team) { return; } } else if(player == victim) { return; } if(isdamagefromplayercontrolledaitank(player,inflictor,weapon) == 1) { player addplayerstat("kill_with_remote_control_ai_tank",1); } if(weapon == "auto_gun_turret_mp") { if(IsDefined(inflictor)) { if(!(IsDefined(inflictor.killcount))) { inflictor.killcount = 0; } inflictor.killcount++; if(inflictor.killcount >= 5) { inflictor.killcount = 0; player addplayerstat("killstreak_5_with_sentry_gun",1); } } if(isdamagefromplayercontrolledsentry(player,inflictor,weapon) == 1) { player addplayerstat("kill_with_remote_control_sentry_gun",1); } } if(weapon == "minigun_mp" || weapon == "inventory_minigun_mp") { player.deathmachinekills++; if(player.deathmachinekills >= 5) { player.deathmachinekills = 0; player addplayerstat("killstreak_5_with_death_machine",1); } } if(data.waslockingon == 1 && weapon == "chopper_minigun_mp") { player addplayerstat("kill_enemy_locking_on_with_chopper_gunner",1); } if(IsDefined(level.iskillstreakweapon)) { if([[ level.iskillstreakweapon ]](data.sweapon)) { return; } } attacker notify("killed_enemy_player",time,weapon); if((IsDefined(player.primaryloadoutweapon) && weapon == player.primaryloadoutweapon) || IsDefined(player.primaryloadoutaltweapon) && weapon == player.primaryloadoutaltweapon) { if(player isbonuscardactive(0,player.class_num)) { player addbonuscardstat(0,"kills",1,player.class_num); player addplayerstat("kill_with_loadout_weapon_with_3_attachments",1); } if(IsDefined(player.secondaryweaponkill) && player.secondaryweaponkill == 1) { player.primaryweaponkill = 0; player.secondaryweaponkill = 0; if(player isbonuscardactive(2,player.class_num)) { player addbonuscardstat(2,"kills",1,player.class_num); player addplayerstat("kill_with_both_primary_weapons",1); } } else { player.primaryweaponkill = 1; } } else if((IsDefined(player.secondaryloadoutweapon) && weapon == player.secondaryloadoutweapon) || IsDefined(player.secondaryloadoutaltweapon) && weapon == player.secondaryloadoutaltweapon) { if(player isbonuscardactive(1,player.class_num)) { player addbonuscardstat(1,"kills",1,player.class_num); } if(IsDefined(player.primaryweaponkill) && player.primaryweaponkill == 1) { player.primaryweaponkill = 0; player.secondaryweaponkill = 0; if(player isbonuscardactive(2,player.class_num)) { player addbonuscardstat(2,"kills",1,player.class_num); player addplayerstat("kill_with_both_primary_weapons",1); } } else { player.secondaryweaponkill = 1; } } if(player isbonuscardactive(5,player.class_num) || player isbonuscardactive(4,player.class_num) || player isbonuscardactive(3,player.class_num)) { player addplayerstat("kill_with_2_perks_same_category",1); } baseweaponname = getreffromitemindex(getbaseweaponitemindex(weapon)) + "_mp"; if(IsDefined(player.weaponkills[baseweaponname])) { player.weaponkills[baseweaponname]++; if(player.weaponkills[baseweaponname] == 5) { player addweaponstat(baseweaponname,"killstreak_5",1); } if(player.weaponkills[baseweaponname] == 10) { player addweaponstat(baseweaponname,"killstreak_10",1); } } else { player.weaponkills[baseweaponname] = 1; } attachmentname = player getweaponoptic(weapon); if(IsDefined(attachmentname) && attachmentname != "") { if(IsDefined(player.attachmentkills[attachmentname])) { player.attachmentkills[attachmentname]++; if(player.attachmentkills[attachmentname] == 5) { player addweaponstat(weapon,"killstreak_5_attachment",1); } } else { player.attachmentkills[attachmentname] = 1; } } /# assert(IsDefined(player.activecounteruavs)); #/ /# assert(IsDefined(player.activeuavs)); #/ /# assert(IsDefined(player.activesatellites)); #/ if(player.activeuavs > 0) { player addplayerstat("kill_while_uav_active",1); } if(player.activecounteruavs > 0) { player addplayerstat("kill_while_cuav_active",1); } if(player.activesatellites > 0) { player addplayerstat("kill_while_satellite_active",1); } if(IsDefined(attacker.tacticalinsertiontime) && attacker.tacticalinsertiontime + 5000 > time) { player addplayerstat("kill_after_tac_insert",1); player addweaponstat("tactical_insertion_mp","CombatRecordStat",1); } if(IsDefined(victim.tacticalinsertiontime) && victim.tacticalinsertiontime + 5000 > time) { player addweaponstat("tactical_insertion_mp","headshots",1); } if(IsDefined(level.isplayertrackedfunc)) { if(attacker [[ level.isplayertrackedfunc ]](victim,time)) { attacker addplayerstat("kill_enemy_revealed_by_sensor",1); attacker addweaponstat("sensor_grenade_mp","CombatRecordStat",1); } } if(level.teambased) { activeempowner = level.empowners[player.team]; if(IsDefined(activeempowner)) { if(activeempowner == player) { player addplayerstat("kill_while_emp_active",1); } } } else if(IsDefined(level.empplayer)) { if(level.empplayer == player) { player addplayerstat("kill_while_emp_active",1); } } if(IsDefined(player.flakjacketclaymore[victim.clientid]) && player.flakjacketclaymore[victim.clientid] == 1) { player addplayerstat("survive_claymore_kill_planter_flak_jacket_equipped",1); } if(IsDefined(player.dogsactive)) { if(weapon != "dog_bite_mp") { player.dogsactivekillstreak++; if(player.dogsactivekillstreak > 5) { player addplayerstat("killstreak_5_dogs",1); } } } isstunned = 0; if(victim maps/mp/_utility::isflashbanged()) { if(IsDefined(victim.lastflashedby) && victim.lastflashedby == player) { player addplayerstat("kill_flashed_enemy",1); player addweaponstat("flash_grenade_mp","CombatRecordStat",1); } isstunned = 1; } if(IsDefined(victim.concussionendtime) && victim.concussionendtime > GetTime()) { if(IsDefined(victim.lastconcussedby) && victim.lastconcussedby == player) { player addplayerstat("kill_concussed_enemy",1); player addweaponstat("concussion_grenade_mp","CombatRecordStat",1); } isstunned = 1; } if(IsDefined(player.laststunnedby)) { if(player.laststunnedby == victim && player.laststunnedtime + 5000 > time) { player addplayerstat("kill_enemy_who_shocked_you",1); } } if(IsDefined(victim.laststunnedby) && victim.laststunnedtime + 5000 > time) { isstunned = 1; if(victim.laststunnedby == player) { player addplayerstat("kill_shocked_enemy",1); player addweaponstat("proximity_grenade_mp","CombatRecordStat",1); if(data.smeansofdeath == "MOD_MELEE") { player addplayerstat("shock_enemy_then_stab_them",1); } } } if(player.mantletime + 5000 > time) { player addplayerstat("mantle_then_kill",1); } if(IsDefined(player.tookweaponfrom) && IsDefined(player.tookweaponfrom[weapon]) && IsDefined(player.tookweaponfrom[weapon].previousowner)) { if(level.teambased) { if(player.tookweaponfrom[weapon].previousowner.team != player.team) { player.pickedupweaponkills[weapon]++; player addplayerstat("kill_enemy_with_picked_up_weapon",1); } } else { player.pickedupweaponkills[weapon]++; player addplayerstat("kill_enemy_with_picked_up_weapon",1); } if(player.pickedupweaponkills[weapon] >= 5) { player.pickedupweaponkills[weapon] = 0; player addplayerstat("killstreak_5_picked_up_weapon",1); } } if(IsDefined(victim.explosiveinfo["originalOwnerKill"]) && victim.explosiveinfo["originalOwnerKill"] == 1) { if(victim.explosiveinfo["damageExplosiveKill"] == 1) { player addplayerstat("kill_enemy_shoot_their_explosive",1); } } if(data.attackerstance == "crouch") { player addplayerstat("kill_enemy_while_crouched",1); } else if(data.attackerstance == "prone") { player addplayerstat("kill_enemy_while_prone",1); } if(data.victimstance == "prone") { player addplayerstat("kill_prone_enemy",1); } if(data.smeansofdeath == "MOD_HEAD_SHOT" || data.smeansofdeath == "MOD_PISTOL_BULLET" || data.smeansofdeath == "MOD_RIFLE_BULLET") { player genericbulletkill(data,victim,weapon); } if(level.teambased) { if(!IsDefined(player.pers["kill_every_enemy"]) && level.playercount[victim.pers["team"]] > 3 && player.pers["killed_players"].size >= level.playercount[victim.pers["team"]]) { player addplayerstat("kill_every_enemy",1); player.pers["kill_every_enemy"] = 1; } } switch(weaponclass) { case "weapon_pistol": player.pers["pistolHeadshot"]++; player.pers["pistolHeadshot"] = 0; player addplayerstat("pistolHeadshot_10_onegame",1); break; player.pers["pistolHeadshot"] >= 10 data.smeansofdeath == "MOD_HEAD_SHOT" break; case "weapon_assault": player.pers["assaultRifleHeadshot"]++; player.pers["assaultRifleHeadshot"] = 0; player addplayerstat("headshot_assault_5_onegame",1); break; player.pers["assaultRifleHeadshot"] >= 5 data.smeansofdeath == "MOD_HEAD_SHOT" break; case "weapon_lmg": case "weapon_smg": break; case "weapon_sniper": player addplayerstat("kill_enemy_one_bullet_sniper",1); player addweaponstat(weapon,"kill_enemy_one_bullet_sniper",1); player.pers["one_shot_sniper_kills"] = 0; player.pers["one_shot_sniper_kills"]++; player addplayerstat("kill_10_enemy_one_bullet_sniper_onegame",1); break; player.pers["one_shot_sniper_kills"] == 10 IsDefined(player.pers["one_shot_sniper_kills"]) IsDefined(victim.firsttimedamaged) && victim.firsttimedamaged == time break; case "weapon_cqb": player addplayerstat("kill_enemy_one_bullet_shotgun",1); player addweaponstat(weapon,"kill_enemy_one_bullet_shotgun",1); player.pers["one_shot_shotgun_kills"] = 0; player.pers["one_shot_shotgun_kills"]++; player addplayerstat("kill_10_enemy_one_bullet_shotgun_onegame",1); break; player.pers["one_shot_shotgun_kills"] == 10 IsDefined(player.pers["one_shot_shotgun_kills"]) IsDefined(victim.firsttimedamaged) && victim.firsttimedamaged == time break; } if(data.smeansofdeath == "MOD_MELEE") { if(weaponhasattachment(weapon,"tacknife")) { player addplayerstat("kill_enemy_with_tacknife",1); player bladekill(); } else if(weapon == "knife_ballistic_mp") { player bladekill(); player addweaponstat(weapon,"ballistic_knife_melee",1); } else if(weapon == "knife_held_mp" || weapon == "knife_mp") { player bladekill(); } else if(weapon == "riotshield_mp") { if(victim.lastfiretime + 3000 > time) { player addweaponstat(weapon,"shield_melee_while_enemy_shooting",1); } } } else { if(data.smeansofdeath == "MOD_IMPACT" && baseweaponname == "crossbow_mp") { if(weaponhasattachment(weapon,"stackfire")) { player addplayerstat("KILL_CROSSBOW_STACKFIRE",1); } } else if(IsDefined(ownerweaponatlaunch)) { if(weaponhasattachment(ownerweaponatlaunch,"stackfire")) { player addplayerstat("KILL_CROSSBOW_STACKFIRE",1); } } if(weapon == "knife_ballistic_mp") { player bladekill(); if(IsDefined(player.retreivedblades) && player.retreivedblades > 0) { player.retreivedblades--; player addweaponstat(weapon,"kill_retrieved_blade",1); } } } lethalgrenadekill = 0; switch(weapon) { case "bouncingbetty_mp": lethalgrenadekill = 1; player notify("lethalGrenadeKill"); break; case "hatchet_mp": player bladekill(); lethalgrenadekill = 1; player notify("lethalGrenadeKill"); player addweaponstat(level.riotshield_name,"hatchet_kill_with_shield_equiped",1); player addplayerstat("hatchet_kill_with_shield_equiped",1); break; lastweaponbeforetoss == level.riotshield_name IsDefined(lastweaponbeforetoss) break; case "claymore_mp": lethalgrenadekill = 1; player notify("lethalGrenadeKill"); player addplayerstat("kill_with_claymore",1); player addplayerstat("kill_with_hacked_claymore",1); break; data.washacked break; case "satchel_charge_mp": lethalgrenadekill = 1; player notify("lethalGrenadeKill"); player addplayerstat("kill_with_c4",1); break; case "destructible_car_mp": player addplayerstat("kill_enemy_withcar",1); player addweaponstat(inflictor.destroyingweapon,"kills_from_cars",1); break; IsDefined(inflictor.destroyingweapon) break; case "sticky_grenade_mp": lethalgrenadekill = 1; player notify("lethalGrenadeKill"); attacker.pers["stickExplosiveKill"]++; attacker.pers["stickExplosiveKill"] = 0; player addplayerstat("stick_explosive_kill_5_onegame",1); break; attacker.pers["stickExplosiveKill"] >= 5 IsDefined(victim.explosiveinfo["stuckToPlayer"]) && victim.explosiveinfo["stuckToPlayer"] == victim break; case "frag_grenade_mp": lethalgrenadekill = 1; player notify("lethalGrenadeKill"); player addplayerstat("kill_with_cooked_grenade",1); player addplayerstat("kill_with_tossed_back_lethal",1); break; IsDefined(data.victim.explosiveinfo["throwbackKill"]) && data.victim.explosiveinfo["throwbackKill"] == 1 IsDefined(data.victim.explosiveinfo["cookedKill"]) && data.victim.explosiveinfo["cookedKill"] == 1 break; case "crossbow_mp": case "explosive_bolt_mp": player.crossbowclipkillcount = 0; player.crossbowclipkillcount++; player.crossbowclipkillcount = 0; player addweaponstat("crossbow_mp","crossbow_kill_clip",1); break; player.crossbowclipkillcount >= weaponclipsize("crossbow_mp") IsDefined(player.crossbowclipkillcount) break; } if(lethalgrenadekill) { if(player isbonuscardactive(6,player.class_num)) { player addbonuscardstat(6,"kills",1,player.class_num); if(!(IsDefined(player.pers["dangerCloseKills"]))) { player.pers["dangerCloseKills"] = 0; } player.pers["dangerCloseKills"]++; if(player.pers["dangerCloseKills"] == 5) { player addplayerstat("kill_with_dual_lethal_grenades",1); } } } player perkkills(victim,isstunned,time); } //Function Number: 15 perkkills(victim,isstunned,time) { player = self; if(player hasperk("specialty_movefaster")) { player addplayerstat("perk_movefaster_kills",1); } if(player hasperk("specialty_noname")) { player addplayerstat("perk_noname_kills",1); } if(player hasperk("specialty_quieter")) { player addplayerstat("perk_quieter_kills",1); } if(player hasperk("specialty_longersprint")) { if(IsDefined(player.lastsprinttime) && GetTime() - player.lastsprinttime < 2500) { player addplayerstat("perk_longersprint",1); } } if(player hasperk("specialty_fastmantle")) { if(IsDefined(player.lastsprinttime) && GetTime() - player.lastsprinttime < 2500 && player playerads() >= 1) { player addplayerstat("perk_fastmantle_kills",1); } } if(player hasperk("specialty_loudenemies")) { player addplayerstat("perk_loudenemies_kills",1); } if(isstunned == 1 && player hasperk("specialty_stunprotection")) { player addplayerstat("perk_protection_stun_kills",1); } /# assert(IsDefined(victim.activecounteruavs)); #/ activeemp = 0; if(level.teambased) { foreach(team in level.teams) { if(team == player.team) { } else if(IsDefined(level.empowners[team])) { activeemp = 1; break; } } } else if(IsDefined(level.empplayer)) { if(level.empplayer != player) { activeemp = 1; } } activecuav = 0; if(level.teambased) { foreach(team in level.teams) { if(team == player.team) { } else if(level.activecounteruavs[team] > 0) { activecuav = 1; break; } } } else { players = level.players; for(i = 0;i < players.size;i++) { if(players[i] != player) { if(IsDefined(level.activecounteruavs[players[i].entnum]) && level.activecounteruavs[players[i].entnum] > 0) { activecuav = 1; break; } } } } if(activecuav == 1 || activeemp == 1) { if(player hasperk("specialty_immunecounteruav")) { player addplayerstat("perk_immune_cuav_kills",1); } } activeuavvictim = 0; if(level.teambased) { if(level.activeuavs[victim.team] > 0) { activeuavvictim = 1; } } else { activeuavvictim = IsDefined(level.activeuavs[victim.entnum]) && level.activeuavs[victim.entnum] > 0; } if(activeuavvictim == 1) { if(player hasperk("specialty_gpsjammer")) { player addplayerstat("perk_gpsjammer_immune_kills",1); } } if(player.lastweaponchange + 5000 > time) { if(player hasperk("specialty_fastweaponswitch")) { player addplayerstat("perk_fastweaponswitch_kill_after_swap",1); } } if(player.scavenged == 1) { if(player hasperk("specialty_scavenger")) { player addplayerstat("perk_scavenger_kills_after_resupply",1); } } } //Function Number: 16 flakjacketprotected(weapon,attacker) { if(weapon == "claymore_mp") { self.flakjacketclaymore[attacker.clientid] = 1; } self addplayerstat("perk_flak_survive",1); } //Function Number: 17 earnedkillstreak() { if(self hasperk("specialty_earnmoremomentum")) { self addplayerstat("perk_earnmoremomentum_earn_streak",1); } } //Function Number: 18 genericbulletkill(data,victim,weapon) { player = self; time = data.time; if(player.pers["lastBulletKillTime"] == time) { player.pers["bulletStreak"]++; } else { player.pers["bulletStreak"] = 1; } player.pers["lastBulletKillTime"] = time; if(data.victim.idflagstime == time) { if(data.victim.idflags & level.idflags_penetration) { player addplayerstat("kill_enemy_through_wall",1); if(IsDefined(weapon) && weaponhasattachment(weapon,"fmj")) { player addplayerstat("kill_enemy_through_wall_with_fmj",1); } } } } //Function Number: 19 ishighestscoringplayer(player) { if(!IsDefined(player.score) || player.score < 1) { return 0; } players = level.players; if(level.teambased) { team = player.pers["team"]; } else { team = "all"; } highscore = player.score; for(i = 0;i < players.size;i++) { if(!(IsDefined(players[i].score))) { } else if(players[i] == player) { } else if(players[i].score < 1) { } else if(team != "all" && players[i].pers["team"] != team) { } else if(players[i].score >= highscore) { return 0; } } return 1; } //Function Number: 20 spawnwatcher() { self endon("disconnect"); self.pers["stickExplosiveKill"] = 0; self.pers["pistolHeadshot"] = 0; self.pers["assaultRifleHeadshot"] = 0; self.pers["killNemesis"] = 0; while(1) { self waittill("spawned_player"); self.pers["longshotsPerLife"] = 0; self.flakjacketclaymore = []; self.weaponkills = []; self.attachmentkills = []; self.retreivedblades = 0; self.lastreloadtime = 0; self.crossbowclipkillcount = 0; self thread watchfordtp(); self thread watchformantle(); self thread monitor_player_sprint(); } } //Function Number: 21 pickedupballisticknife() { self.retreivedblades++; } //Function Number: 22 watchfordtp() { self endon("disconnect"); self endon("death"); self.dtptime = 0; while(1) { self waittill("dtp_end"); self.dtptime = GetTime() + 4000; } } //Function Number: 23 watchformantle() { self endon("disconnect"); self endon("death"); self.mantletime = 0; while(1) { self waittill("mantle_start",mantleendtime); self.mantletime = mantleendtime; } } //Function Number: 24 disarmedhackedcarepackage() { self addplayerstat("disarm_hacked_carepackage",1); } //Function Number: 25 destroyed_car() { if(!IsDefined(self) || !isplayer(self)) { return; } self addplayerstat("destroy_car",1); } //Function Number: 26 killednemesis() { self.pers["killNemesis"]++; if(self.pers["killNemesis"] >= 5) { self.pers["killNemesis"] = 0; self addplayerstat("kill_nemesis",1); } } //Function Number: 27 killwhiledamagingwithhpm() { self addplayerstat("kill_while_damaging_with_microwave_turret",1); } //Function Number: 28 longdistancehatchetkill() { self addplayerstat("long_distance_hatchet_kill",1); } //Function Number: 29 blockedsatellite() { self addplayerstat("activate_cuav_while_enemy_satelite_active",1); } //Function Number: 30 longdistancekill() { self.pers["longshotsPerLife"]++; if(self.pers["longshotsPerLife"] >= 3) { self.pers["longshotsPerLife"] = 0; self addplayerstat("longshot_3_onelife",1); } } //Function Number: 31 challengeroundend(data) { player = data.player; winner = data.winner; if(endedearly(winner)) { return; } if(level.teambased) { winnerscore = game["teamScores"][winner]; loserscore = getlosersteamscores(winner); } switch(level.gametype) { case "sd": player addgametypestat("round_win_no_deaths",1); player addgametypestat("last_man_defeat_3_enemies",1); break; IsDefined(player.lastmansddefeat3enemies) game["challenge"][winner]["allAlive"] player.team == winner break; default: break; } } //Function Number: 32 roundend(winner) { wait(0.05); data = spawnstruct(); data.time = GetTime(); if(level.teambased) { if(IsDefined(winner) && IsDefined(level.teams[winner])) { data.winner = winner; } } else if(IsDefined(winner)) { data.winner = winner; } for(index = 0;index < level.placement["all"].size;index++) { data.player = level.placement["all"][index]; data.place = index; dochallengecallback("roundEnd",data); } } //Function Number: 33 gameend(winner) { wait(0.05); data = spawnstruct(); data.time = GetTime(); if(level.teambased) { if(IsDefined(winner) && IsDefined(level.teams[winner])) { data.winner = winner; } } else if(IsDefined(winner) && isplayer(winner)) { data.winner = winner; } for(index = 0;index < level.placement["all"].size;index++) { data.player = level.placement["all"][index]; data.place = index; dochallengecallback("gameEnd",data); } } //Function Number: 34 getfinalkill(player) { if(isplayer(player)) { player addplayerstat("get_final_kill",1); } } //Function Number: 35 destroyrcbomb(weaponname) { self destroyscorestreak(weaponname); if(weaponname == "hatchet_mp") { self addplayerstat("destroy_rcbomb_with_hatchet",1); } } //Function Number: 36 capturedcrate() { if(IsDefined(self.lastrescuedby) && IsDefined(self.lastrescuedtime)) { if(self.lastrescuedtime + 5000 > GetTime()) { self.lastrescuedby addplayerstat("defend_teammate_who_captured_package",1); } } } //Function Number: 37 destroyscorestreak(weaponname) { if(IsDefined(weaponname) && weaponname == "qrdrone_turret_mp") { self addplayerstat("destroy_score_streak_with_qrdrone",1); } } //Function Number: 38 capturedobjective(capturetime) { if(IsDefined(self.smokegrenadetime) && IsDefined(self.smokegrenadeposition)) { if(self.smokegrenadetime + 14000 > capturetime) { distsq = distancesquared(self.smokegrenadeposition,self.origin); if(distsq < 57600) { self addplayerstat("capture_objective_in_smoke",1); self addweaponstat("willy_pete_mp","CombatRecordStat",1); } else { } } } } //Function Number: 39 hackedordestroyedequipment() { if(self hasperk("specialty_showenemyequipment")) { self addplayerstat("perk_hacker_destroy",1); } } //Function Number: 40 destroyedequipment(weaponname) { if(IsDefined(weaponname) && weaponname == "emp_grenade_mp") { self addplayerstat("destroy_equipment_with_emp_grenade",1); self addweaponstat("emp_grenade_mp","combatRecordStat",1); } self addplayerstat("destroy_equipment",1); self hackedordestroyedequipment(); } //Function Number: 41 destroyedtacticalinsert() { if(!(IsDefined(self.pers["tacticalInsertsDestroyed"]))) { self.pers["tacticalInsertsDestroyed"] = 0; } self.pers["tacticalInsertsDestroyed"]++; if(self.pers["tacticalInsertsDestroyed"] >= 5) { self.pers["tacticalInsertsDestroyed"] = 0; self addplayerstat("destroy_5_tactical_inserts",1); } } //Function Number: 42 bladekill() { if(!(IsDefined(self.pers["bladeKills"]))) { self.pers["bladeKills"] = 0; } self.pers["bladeKills"]++; if(self.pers["bladeKills"] >= 15) { self.pers["bladeKills"] = 0; self addplayerstat("kill_15_with_blade",1); } } //Function Number: 43 destroyedexplosive(weaponname) { self destroyedequipment(weaponname); self addplayerstat("destroy_explosive",1); } //Function Number: 44 assisted() { self addplayerstat("assist",1); } //Function Number: 45 earnedmicrowaveassistscore(score) { self addplayerstat("assist_score_microwave_turret",score); self addplayerstat("assist_score_killstreak",score); } //Function Number: 46 earnedcuavassistscore(score) { self addplayerstat("assist_score_cuav",score); self addplayerstat("assist_score_killstreak",score); self addweaponstat("counteruav_mp","assists",1); } //Function Number: 47 earneduavassistscore(score) { self addplayerstat("assist_score_uav",score); self addplayerstat("assist_score_killstreak",score); self addweaponstat("radar_mp","assists",1); } //Function Number: 48 earnedsatelliteassistscore(score) { self addplayerstat("assist_score_satellite",score); self addplayerstat("assist_score_killstreak",score); self addweaponstat("radardirection_mp","assists",1); } //Function Number: 49 earnedempassistscore(score) { self addplayerstat("assist_score_emp",score); self addplayerstat("assist_score_killstreak",score); self addweaponstat("emp_mp","assists",1); } //Function Number: 50 teamcompletedchallenge(team,challenge) { players = get_players(); for(i = 0;i < players.size;i++) { if(IsDefined(players[i].team) && players[i].team == team) { players[i] addgametypestat(challenge,1); } } } //Function Number: 51 endedearly(winner) { if(level.hostforcedend) { return 1; } if(!(IsDefined(winner))) { return 1; } if(level.teambased) { if(winner == "tie") { return 1; } } return 0; } //Function Number: 52 getlosersteamscores(winner) { teamscores = 0; foreach(team in level.teams) { if(team == winner) { } else { teamscores = teamscores + game["teamScores"][team]; } } return teamscores; } //Function Number: 53 didloserfailchallenge(winner,challenge) { foreach(team in level.teams) { if(team == winner) { } else if(game["challenge"][team][challenge]) { return 0; } } return 1; } //Function Number: 54 challengegameend(data) { player = data.player; winner = data.winner; if(IsDefined(level.scoreeventgameendcallback)) { [[ level.scoreeventgameendcallback ]](data); } if(endedearly(winner)) { return; } if(level.teambased) { winnerscore = game["teamScores"][winner]; loserscore = getlosersteamscores(winner); } switch(level.gametype) { case "tdm": player addgametypestat("CRUSH",1); mostkillsleastdeaths = 1; index = 0; for(;;) { mostkillsleastdeaths = 0; mostkillsleastdeaths = 0; index++; } player addgametypestat("most_kills_least_deaths",1); break; mostkillsleastdeaths && player.kills > 0 && level.placement["all"].size > 3 level.placement["all"][index].kills > player.kills level.placement["all"][index].deaths < player.deaths index < level.placement["all"].size winnerscore >= loserscore + 20 player.team == winner break; case "dm": secondplace = level.placement["all"][1]; player addgametypestat("CRUSH",1); break; player.kills >= secondplace.kills + 7 level.placement["all"].size >= 2 player == winner break; case "ctf": player addgametypestat("SHUT_OUT",1); break; loserscore == 0 player.team == winner break; case "dom": player addgametypestat("CRUSH",1); break; winnerscore >= loserscore + 70 player.team == winner break; case "hq": player addgametypestat("CRUSH",1); break; winnerscore >= loserscore + 70 player.team == winner && winnerscore > 0 break; case "koth": player addgametypestat("CRUSH",1); player addgametypestat("ANNIHILATION",1); break; winnerscore >= loserscore + 110 player.team == winner && winnerscore > 0 winnerscore >= loserscore + 70 player.team == winner && winnerscore > 0 break; case "dem": player addgametypestat("SHUT_OUT",1); break; loserscore == 0 player.team == game["defenders"] && player.team == winner break; case "sd": player addgametypestat("CRUSH",1); loserscore <= 1 player.team == winner break; default: break; } } //Function Number: 55 multikill(killcount,weapon) { if(killcount >= 3 && IsDefined(self.lastkillwheninjured)) { if(self.lastkillwheninjured + 5000 > GetTime()) { self addplayerstat("multikill_3_near_death",1); } } } //Function Number: 56 domattackermultikill(killcount) { self addgametypestat("kill_2_enemies_capturing_your_objective",1); } //Function Number: 57 totaldomination(team) { teamcompletedchallenge(team,"control_3_points_3_minutes"); } //Function Number: 58 holdflagentirematch(team,label) { switch(label) { case "_a": event = "hold_a_entire_match"; break; case "_b": event = "hold_b_entire_match"; break; case "_c": event = "hold_c_entire_match"; break; default: break; } teamcompletedchallenge(team,event); } //Function Number: 59 capturedbfirstminute() { self addgametypestat("capture_b_first_minute",1); } //Function Number: 60 controlzoneentirely(team) { teamcompletedchallenge(team,"control_zone_entirely"); } //Function Number: 61 multi_lmg_smg_kill() { self addplayerstat("multikill_3_lmg_or_smg_hip_fire",1); } //Function Number: 62 killedzoneattacker(weapon) { if(weapon == "planemortar_mp" || weapon == "remote_missile_missile_mp" || weapon == "remote_missile_bomblet_mp") { self thread updatezonemultikills(); } } //Function Number: 63 killeddog() { origin = self.origin; if(level.teambased) { teammates = get_team_alive_players_s(self.team); foreach(player in teammates.a) { if(player == self) { } else { distsq = distancesquared(origin,player.origin); if(distsq < 57600) { self addplayerstat("killed_dog_close_to_teammate",1); break; } } } } } //Function Number: 64 updatezonemultikills() { self endon("disconnect"); level endon("game_ended"); self notify("updateRecentZoneKills"); self endon("updateRecentZoneKills"); if(!(IsDefined(self.recentzonekillcount))) { self.recentzonekillcount = 0; } self.recentzonekillcount++; wait(4); if(self.recentzonekillcount > 1) { self addplayerstat("multikill_2_zone_attackers",1); } self.recentzonekillcount = 0; } //Function Number: 65 multi_rcbomb_kill() { self addplayerstat("muiltikill_2_with_rcbomb",1); } //Function Number: 66 multi_remotemissile_kill() { self addplayerstat("multikill_3_remote_missile",1); } //Function Number: 67 multi_mgl_kill() { self addplayerstat("multikill_3_with_mgl",1); } //Function Number: 68 immediatecapture() { self addgametypestat("immediate_capture",1); } //Function Number: 69 killedlastcontester() { self addgametypestat("contest_then_capture",1); } //Function Number: 70 bothbombsdetonatewithintime() { self addgametypestat("both_bombs_detonate_10_seconds",1); } //Function Number: 71 fullclipnomisses(weaponclass,weapon) { } //Function Number: 72 destroyedturret(weaponname) { self destroyscorestreak(weaponname); self addplayerstat("destroy_turret",1); } //Function Number: 73 calledincarepackage() { self.pers["carepackagesCalled"]++; if(self.pers["carepackagesCalled"] >= 3) { self addplayerstat("call_in_3_care_packages",1); self.pers["carepackagesCalled"] = 0; } } //Function Number: 74 destroyedhelicopter(attacker,weapon,damagetype,playercontrolled) { attacker destroyscorestreak(weapon); if(damagetype == "MOD_RIFLE_BULLET" || damagetype == "MOD_PISTOL_BULLET") { attacker addplayerstat("destroyed_helicopter_with_bullet",1); } } //Function Number: 75 destroyedqrdrone(damagetype,weapon) { self destroyscorestreak(weapon); self addplayerstat("destroy_qrdrone",1); if(damagetype == "MOD_RIFLE_BULLET" || damagetype == "MOD_PISTOL_BULLET") { self addplayerstat("destroyed_qrdrone_with_bullet",1); } self destroyedplayercontrolledaircraft(); } //Function Number: 76 destroyedplayercontrolledaircraft() { if(self hasperk("specialty_noname")) { self addplayerstat("destroy_helicopter",1); } } //Function Number: 77 destroyedaircraft(attacker,weapon) { attacker destroyscorestreak(weapon); if(IsDefined(weapon)) { if(weapon == "emp_mp" || weapon == "killstreak_emp_mp") { attacker addplayerstat("destroy_aircraft_with_emp",1); } else if(weapon == "missile_drone_projectile_mp" || weapon == "missile_drone_mp") { attacker addplayerstat("destroy_aircraft_with_missile_drone",1); } } if(attacker hasperk("specialty_nottargetedbyairsupport")) { attacker addplayerstat("perk_nottargetedbyairsupport_destroy_aircraft",1); } attacker addplayerstat("destroy_aircraft",1); } //Function Number: 78 killstreakten() { primary = self getloadoutitem(self.class_num,"primary"); if(primary != 0) { return; } secondary = self getloadoutitem(self.class_num,"secondary"); if(secondary != 0) { return; } primarygrenade = self getloadoutitem(self.class_num,"primarygrenade"); if(primarygrenade != 0) { return; } specialgrenade = self getloadoutitem(self.class_num,"specialgrenade"); if(specialgrenade != 0) { return; } for(numspecialties = 0;numspecialties < level.maxspecialties;numspecialties++) { perk = self getloadoutitem(self.class_num,"specialty" + numspecialties + 1); if(perk != 0) { return; } } self addplayerstat("killstreak_10_no_weapons_perks",1); } //Function Number: 79 scavengedgrenade() { self endon("disconnect"); self endon("death"); self notify("scavengedGrenade"); self endon("scavengedGrenade"); for(;;) { self waittill("lethalGrenadeKill"); self addplayerstat("kill_with_resupplied_lethal_grenade",1); } } //Function Number: 80 stunnedtankwithempgrenade(attacker) { attacker addplayerstat("stun_aitank_wIth_emp_grenade",1); } //Function Number: 81 playerkilled(einflictor,attacker,idamage,smeansofdeath,sweapon,shitloc,attackerstance) { /# print(level.gametype); #/ self.anglesondeath = self getplayerangles(); if(IsDefined(attacker)) { attacker.anglesonkill = attacker getplayerangles(); } if(!(IsDefined(sweapon))) { sweapon = "none"; } self endon("disconnect"); data = spawnstruct(); data.victim = self; data.victimstance = self getstance(); data.einflictor = einflictor; data.attacker = attacker; data.attackerstance = attackerstance; data.idamage = idamage; data.smeansofdeath = smeansofdeath; data.sweapon = sweapon; data.shitloc = shitloc; data.time = GetTime(); if(IsDefined(einflictor) && IsDefined(einflictor.lastweaponbeforetoss)) { data.lastweaponbeforetoss = einflictor.lastweaponbeforetoss; } if(IsDefined(einflictor) && IsDefined(einflictor.ownerweaponatlaunch)) { data.ownerweaponatlaunch = einflictor.ownerweaponatlaunch; } waslockingon = 0; if(IsDefined(einflictor.locking_on)) { waslockingon = waslockingon | einflictor.locking_on; } if(IsDefined(einflictor.locked_on)) { waslockingon = waslockingon | einflictor.locked_on; } waslockingon = waslockingon & 1 << data.victim.entnum; if(waslockingon != 0) { data.waslockingon = 1; } else { data.waslockingon = 0; } data.washacked = einflictor maps/mp/_utility::ishacked(); data.wasplanting = data.victim.isplanting; if(!(IsDefined(data.wasplanting))) { data.wasplanting = 0; } data.wasdefusing = data.victim.isdefusing; if(!(IsDefined(data.wasdefusing))) { data.wasdefusing = 0; } data.victimweapon = data.victim.currentweapon; data.victimonground = data.victim isonground(); if(isplayer(attacker)) { data.attackeronground = data.attacker isonground(); if(!(IsDefined(data.attackerstance))) { data.attackerstance = data.attacker getstance(); } } else { data.attackeronground = 0; data.attackerstance = "stand"; } waitandprocessplayerkilledcallback(data); data.attacker notify("playerKilledChallengesProcessed"); } //Function Number: 82 waittillslowprocessallowed() { while(level.lastslowprocessframe == GetTime()) { wait(0.05); } level.lastslowprocessframe = GetTime(); } //Function Number: 83 doscoreeventcallback(callback,data) { if(!(IsDefined(level.scoreeventcallbacks))) { return; } if(!(IsDefined(level.scoreeventcallbacks[callback]))) { return; } if(IsDefined(data)) { for(i = 0;i < level.scoreeventcallbacks[callback].size;i++) { thread [[ level.scoreeventcallbacks[callback][i] ]](data); } } else { for(i = 0;i < level.scoreeventcallbacks[callback].size;i++) { thread [[ level.scoreeventcallbacks[callback][i] ]](); } } } //Function Number: 84 waitandprocessplayerkilledcallback(data) { if(IsDefined(data.attacker)) { data.attacker endon("disconnect"); } wait(0.05); waittillslowprocessallowed(); level thread dochallengecallback("playerKilled",data); level thread doscoreeventcallback("playerKilled",data); } //Function Number: 85 weaponisknife(weapon) { if(weapon == "knife_held_mp" || weapon == "knife_mp" || weapon == "knife_ballistic_mp") { return 1; } } //Function Number: 86 eventreceived(eventname) { self endon("disconnect"); waittillslowprocessallowed(); switch(level.gametype) { case "tdm": self addgametypestat("killstreak_10",1); continue; self addgametypestat("killstreak_15",1); continue; self addgametypestat("killstreak_20",1); continue; self addgametypestat("multikill_3",1); continue; self addgametypestat("kill_enemy_who_killed_teammate",1); continue; self addgametypestat("kill_enemy_injuring_teammate",1); break; eventname == "kill_enemy_injuring_teammate" eventname == "kill_enemy_who_killed_teammate" eventname == "multikill_3" eventname == "killstreak_20" eventname == "killstreak_15" eventname == "killstreak_10" break; case "dm": self addgametypestat("killstreak_10",1); continue; self addgametypestat("killstreak_15",1); continue; self addgametypestat("killstreak_20",1); continue; self addgametypestat("killstreak_30",1); break; eventname == "killstreak_30" eventname == "killstreak_20" eventname == "killstreak_15" eventname == "killstreak_10" break; case "sd": self addgametypestat("defused_bomb_last_man_alive",1); continue; self addgametypestat("elimination_and_last_player_alive",1); continue; self addgametypestat("killed_bomb_planter",1); continue; self addgametypestat("killed_bomb_defuser",1); break; eventname == "killed_bomb_defuser" eventname == "killed_bomb_planter" eventname == "elimination_and_last_player_alive" eventname == "defused_bomb_last_man_alive" break; case "ctf": self addgametypestat("kill_flag_carrier",1); continue; self addgametypestat("defend_flag_carrier",1); break; eventname == "defend_flag_carrier" eventname == "kill_flag_carrier" break; case "dem": self addgametypestat("killed_bomb_planter",1); continue; self addgametypestat("killed_bomb_defuser",1); break; eventname == "killed_bomb_defuser" eventname == "killed_bomb_planter" break; default: break; } } //Function Number: 87 monitor_player_sprint() { self endon("disconnect"); self endon("death"); self.lastsprinttime = undefined; while(1) { self waittill("sprint_begin"); self waittill("sprint_end"); self.lastsprinttime = GetTime(); } }