Support L4D(2) Friendly Fire In Basetriggers.sp #1522
- Games have cvar mp_friendlyfire min. and max. bounds set to 1
- Removing mp_friendlyfire lower bound and set to 0, cvar have no purpose on friendly fire damage.
- FF works from z_difficulty and each difficult level have FF damage ration cvars:
survivor_friendly_fire_factor_easy
survivor_friendly_fire_factor_normal
survivor_friendly_fire_factor_hard
survivor_friendly_fire_factor_expert
Update added PRINT_TO_ things from previous update.
Co-authored-by: Bacardi <>
* Build SDKTools for hl2sdk-mock
* Fix loading of extensions using advanced naming scheme for hl2sdk-mock
* Fix error on missing sv_visiblemaxplayers convar
* Build SDKHooks for hl2sdk-mock
* Fix x86_64 SourcePawn VM filename
* SDKHooks: Ignore missing IEntityListeners list in hl2sdk-mock
* Add CommandIterator.ConVarFlags property
Allow to access the convar flags `FCVAR_*` value from the iterator.
The CommandIterator.Flags property should have been called `AdminFlags`,
but it's too late to change that now.
* Switch admin help menu to use CommandIterator.ConVarFlags
No need to lookup the convar again.
* Deprecate CommandIterator.Flags
Rename it to .AdminFlags now that we have two kinds of flags exposed
on the iterator.
Allows using `FCVAR_HIDDEN` to block commands from appearing in `sm_help` and `sm_searchcmd` which helps with creating alias to commands without filling up the list with those aliases.
For example:
```sourcepawn
RegAdminCmd("sm_setmyperk", MyCommand, ADMFLAG_CHEATS);
RegAdminCmd("sm_setmyperks", MyCommand, ADMFLAG_CHEATS, _, FCVAR_HIDDEN);
RegConsoleCmd("ff2_boss", MyCommand);
RegConsoleCmd("ff2boss", MyCommand, _, FCVAR_HIDDEN);
```
* Initial PVKII branch support
* Change PVKII code to 23, DOTA uses 22 in MM
* Bunch more SE_PVKII preprocessor that was missed
* Add some missing SOURCE_ENGINE_PVKII cases
* Update PVKII FireOutput signature for Linux
* Update checkout-deps with 'pvkii'
* Fix FireOutput signature for PVKII, accidentally used one from newer build
* Change PVKII code to 10, and bump others by 1
* Only check against SE_SDK2013 here, like Metamod
* More SE_PVKII preprocessor cleanup
* Add a PluginIterator methodmap
* Follow convention
* Update sourcemod.inc
* Turn method ReadPlugin into property Plugin
* Requested change
* Update sourcemod.inc
* Curse you VSC
* Follow behavior of other iterators instead of the natives
* Fix a stray space
* Implement a hacked CPluginIterator
* Oops
Copy paste go brr
* Revert a change made before the custom impl
Adds an OnPlayerRunCmdPre forward in order for plugins to be able to hook OnPlayerRunCmd with the guarantee that none of the parameters have been modified by other plugins. As such, OnPlayerRunCmdPre's parameters cannot be modified and are read-only.
Plugins that wish to use OnPlayerRunCmdPre can maintain backwards compatibility with SourceMod 1.10 by falling back to OnPlayerRunCmd if the Pre variant was never fired.
* DHooks: Allow setting CBaseEntity* param to NULL #1751
The param had to be a valid entity and wasn't allowed to be set to NULL. Behave similar to SetReturn which maps INVALID_ENT_REFERENCE (or -1) to NULL.
* Update include documentation
* Update dhooks.inc documentation for consistency
- Modifies whitespace (change tabs to spaces for non initial indents, fix alignments, create consistency with rest of SM docs)
- Change `/*` to `/**` for consistency and to indicate comment doc
- Removes incorrect `@noreturn` doc
* Split long comments across multiple lines
* Remove `@noreturn` in IGameConfigs.h
* Remove `@noreturn` from IGameHelpers.h
* Remove `@noreturn` from asm.c
* Add `@noreturn` to ThrowError
* Add `@noreturn` and `@error` to ThrowNativeError
Using the virtual `CBaseAnimating::GetAttachment(int, matrix3x4_t &)` was a deliberate choice because virtual offsets are generally easier to maintain than signatures. The `matrix3x4_t` is converted to world position and world angles internally.
Some of the other overloads are also inlined on a few games, making this the best choice.
Since this call can only be used on classes inheriting `CBaseAnimating`, we check if the `DT_BaseAnimating` SendTable exists on the entity, throwing a native error if it doesn't.
This safeguard could be greatly improved with a call to `CBaseEntity::GetBaseAnimating`, but would require more gamedata (maybe something to consider for the future?)