sourcemod-plugins/scripting/include/l4d2_skill_detect.inc
2021-04-20 21:35:54 -05:00

294 lines
12 KiB
SourcePawn

#if defined _skilldetect_included_
#endinput
#endif
#define _skilldetect_included_
/**
* CarAlarmTriggerReason: the 'reason' parameter in OnCarAlarmTriggered() forward
*/
enum CarAlarmTriggerReason {
CarAlarmTrigger_Unknown,
CarAlarmTrigger_Hit,
CarAlarmTrigger_Touched,
CarAlarmTrigger_Explosion,
CarAlarmTrigger_Boomer
};
/**
* Called whenever a true skeet with shotgun is done.
*
* @param int survivor the survivor client that performed the feat
* @param int hunter the infected client that underwent it
*/
forward void OnSkeet( int survivor, int hunter );
/**
* Called whenever a true melee-skeet is done.
*
* @param int survivor the survivor client that performed the feat
* @param int hunter the infected client that underwent it
*/
forward void OnSkeetMelee( int survivor, int hunter );
/**
* Called whenever a direct grenade launcher hit on a hunter connects.
*
* @param int survivor the survivor client that performed the feat
* @param int hunter the infected client that underwent it
*/
forward void OnSkeetGL( int survivor, int hunter );
/**
* Called whenever a true skeeting sniper headshot landed.
*
* @param int survivor the survivor client that performed the feat
* @param int hunter the infected client that underwent it
*/
forward void OnSkeetSniper( int survivor, int hunter );
/**
* Called whenever a pouncing hunter got killed with shotgun
* when it wasn't a true skeet (chipped hunter).
*
* @param int survivor the survivor client that performed the feat
* @param int hunter the infected client that underwent it
* @param int damage damage done in the killing hit
* @param bool isOverKill true if it would've been a skeet if the hunter hadn't been chipped
*/
forward void OnSkeetHurt( int survivor, int hunter, int damage, bool isOverkill );
/**
* Called whenever a pouncing hunter got killed with melee
* when it wasn't a true skeet (chipped hunter).
*
* @param int survivor the survivor client that performed the feat
* @param int hunter the infected client that underwent it
* @param int damage damage done in the killing hit
* @param bool isOverKill true if it would've been a skeet if the hunter hadn't been chipped
*/
forward void OnSkeetMeleeHurt( int survivor, int hunter, int damage, bool isOverkill );
/**
* Called whenever a pouncing hunter got killed with a sniper headshot
* when it wasn't a true skeet (chipped hunter).
*
* @param int survivor the survivor client that performed the feat
* @param int hunter the infected client that underwent it
* @param int damage damage done in the killing hit
* @param bool isOverKill true if it would've been a skeet if the hunter hadn't been chipped
*/
forward void OnSkeetSniperHurt( int survivor, int hunter, int damage, bool isOverkill );
/**
* Called whenever a hunter is deadstopped (pouncing => m2'd).
*
* @param int survivor the survivor client that performed the feat
* @param int hunter the infected client that underwent it
*/
forward void OnHunterDeadstop( int survivor, int hunter );
/**
* Called whenever a boomer is killed that didn't land on anyone,
* and didn't explode on anyone either.
*
* @param int survivor the survivor client that killed the boomer
* @param int boomer the infected client that got popped
* @param int shoveCount the amount of times the boomer got shoved, if any
* @param Float timeAlive the time, in seconds, that the boomer lived
*/
forward void OnBoomerPop( int survivor, int oomer, int hoveCount, float timeAlive );
/**
* Called whenever a charger is fully melee-leveled (no chip).
* This is also called when the melee hit would've leveled if not chipped!
*
* @param int survivor the survivor client that performed the feat
* @param int charger the infected client that underwent it
*/
forward void OnChargerLevel( int survivor, int charger );
/**
* Called whenever a charger is melee-leveled after being chipped.
* Only called when the melee wouldn't have killed an unchipped charger.
*
* @param int survivor the survivor client that performed the feat
* @param int charger the infected client that underwent it
* @param int damage damage done in the killing hit
*/
forward void OnChargerLevelHurt( int survivor, int charger, int damage );
/**
* Called whenever a witch was crowned without her being angered first.
*
* @param int survivor the survivor client that performed the feat
* @param int damage damage done in the killing hit
*/
forward void OnWitchCrown( int survivor, int damage );
/**
* Called whenever a witch gets crowned after she got angered/triggered.
* This is referred to (depending on the community) as a 'draw crown' or 'remote'.
*
* @param int survivor the survivor client that performed the feat
* @param int damage damage done in the killing hit
* @param int chipdamage damage done to the witch before she got crowned
*/
forward void OnWitchCrownHurt( int survivor, int damage, int chipdamage );
/**
* Called whenever a survivor melee-cuts a smoker tongue that was aimed for them.
*
* @param int survivor the survivor client that performed the feat
* @param int smoker the infected client that underwent it
*/
forward void OnTongueCut( int survivor, int smoker );
/**
* Called whenever a survivor frees himself from a smoker that grabbed them,
* either by killing it or by shoving.
*
* @param int survivor the survivor client that performed the feat
* @param int smoker the infected client that underwent it
* @param bool withShove true if the self-clear was by a shove/m2
*/
forward void OnSmokerSelfClear( int survivor, int smoker, bool withShove );
/**
* Called whenever a survivor shoots/melees a tank rock out of the air.
*
* Note: the tank param might be unreliable due to the nature of the
* tracking. Don't do anything srs bsns with it.
*
* @param int survivor the survivor client that performed the feat
* @param int tank the infected client that underwent it
*/
forward void OnTankRockSkeeted( int survivor, int tank );
/**
* Called whenever a tank lands a rock on a survivor.
*
* Note: the tank param might be unreliable due to the nature of the
* tracking. Don't do anything srs bsns with it.
*
* @param int tank the infected client that performed the feat
* @param int survivor the survivor client that underwent it
*/
forward void OnTankRockEaten( int tank, int survivor );
/**
* Called whenever a hunter lands a high-pounce on a survivor.
*
* @param int hunter the infected client that performed the feat
* @param int survivor the survivor client that underwent it
* @param int actualDamage the actual damage the pounce did to the survivor
* @param Float calculatedDamage how much damage (going by pounceannounce parameters) the pounce would be expected to do
* @param Float height the vertical distance between the pounce origin and its landing
* @param bool reportedHigh whether skill_detect considers it a high pounce for reporting purposes
*/
forward void OnHunterHighPounce( int hunter, int survivor, int actualDamage, float calculatedDamage, float height, bool reportedHigh );
/**
* Called whenever a jockey lands a high-pounce on a survivor.
*
* Note: due to the nature of the tracking, it only gets the height right if a jockey actually
* jumped or pounced from his perch. If they simple walk off and land, it may be incorrect.
*
* @param int jockey the infected client that performed the feat
* @param int survivor the survivor client that underwent it
* @param Float height the vertical distance between the pounce origin and its landing
* @param bool reportedHigh whether skill_detect considers it a high pounce for reporting purposes
*/
forward void OnJockeyHighPounce( int jockey, int victim, float height, bool reportedHigh );
/**
* Called whenever a charger lands a death-charge on a survivor.
* This is called for killing the grabbed survivor, but also the ones that get impact-bumped
* and fall to their deaths.
*
* Note: due to the nature of the tracking, there may be places that are technically death-
* charge spots, but not detected by the plugin. Example: the sidewalk next to the fence near
* the lower roof on Dead Air 1; the Death Toll 4 out-of-map deathcharge near the start
* saferoom.
*
* @param int charger the infected client that performed the feat
* @param int survivor the survivor client that underwent it
* @param Float height the vertical distance between the grab and the survivor's death spot
* @param Float distance the full vector distance between the grab and the survivor's death spot
* @param bool wasCarried true if the survivor was the one that the charger grabbed
*/
forward void OnDeathCharge( int charger, int survivor, float height, float distance, bool wasCarried );
/**
* Called whenever a survivor clears a teammate from a special infected pin.
*
* Note: timeB is only appliccable for smokers and chargers. For smokers it shows the
* time from the tongue connecting to the clear. For chargers from the charge-grab to
* the clear. For jockeys and hunters, timeB will always be -1.0.
*
* timeA is the time, for charger, from start of pummeling till clear (-1.0 if they
* never started pummeling). For smokers, this is the time from the survivor being
* fully reigned in to the smoker (-1.0 if the tongue was broken before that).
*
* @param int clearer the survivor client that performed the clear
* @param int pinner the pinning infected client that got cleared (shoved off or killed)
* @param int pinvictim the pinned survivor that was saved
* @param int zombieClass the class (ZC_SMOKER - ZC_CHARGER) of the pinner
* @param Float timeA time from pin till clear in seconds, -1 if never
* @param Float timeB for charger/smoker: time from grab/tongue connect to clear
* @param bool withShove true if the clear was done by shove/m2
*/
forward void OnSpecialClear( int clearer, int pinner, int pinvictim, int zombieClass, float timeA, float timeB, bool withShove );
/**
* Called whenever a boomer is done vomiting, and landed his vomit on one
* or more survivors.
*
* Note: this does not include or fire for boomers exploding, only vomits.
*
* @param int boomer the infected client that performed the feat
* @param int amount the amount of survivors vomited on
*/
forward void OnBoomerVomitLanded( int boomer, int amount );
/**
* Called whenever a survivor shoves a special infected (any kind).
*
* @param int survivor the survivor client that performed the feat
* @param int infected the infected client that underwent it
* @param int zombieClass the class type of the infected shoved
*/
forward void OnSpecialShoved( int survivor, int infected, int zombieClass );
/**
* Called whenever a survivor lands any number of bunnyhops in a row. Called
* afterwards.
*
* @param int survivor the survivor client that performed the feat
* @param int streak the amount of hops in a row
* @param Float maxVelocity the highest speed during any jump or jump apex
*/
forward void OnBunnyHopStreak( int survivor, int streak, float maxVelocity );
/**
* Called whenever a car alarm is triggered (by a survivor).
*
* @param int survivor the survivor client that triggered the alarm (-1 or 0 if unknown)
* @param int infected if > 0: the infected client that assisted in triggering it (boomer, smoker, jockey or charger)
* @param int reason the reason for triggering (see CarAlarmTriggerType)
*/
forward void OnCarAlarmTriggered( int survivor, int infected, CarAlarmTriggerReason reason );
public SharedPlugin __pl_skilldetect =
{
name = "skill_detect",
file = "l4d2_skill_detect.smx",
#if defined REQUIRE_PLUGIN
required = 1,
#else
required = 0,
#endif
};