Skip to content

Instantly share code, notes, and snippets.

View sigsegv-mvm's full-sized avatar

sigsegv sigsegv-mvm

View GitHub Profile
@sigsegv-mvm
sigsegv-mvm / destroy_projectiles_old_vs_new.md
Last active March 30, 2024 03:28
Destroy Projectiles: old vs new

The Destroy Projectiles upgrade before and after the Two Cities Update

Here's Valve's vague description of how the minigun's Destroy Projectiles upgrade/bot-ability was changed in the Two Cities update:

- Heavy
  - Attack Projectiles Upgrade
    - Now has two levels
      - Level one is less effective than before
      - Level two is more effective than level one used to be
 - Price reduced from 600 to 400 per point
@sigsegv-mvm
sigsegv-mvm / classgraph_20170420a_server_srv.txt
Created April 23, 2017 20:03
ClassGraph: TF2 20170420a server_srv.so
Class Graph
TF2 20170420a
Linux: server_srv.so
[+] (anonymous namespace)::CPlayerInfoManager_V1
| [-] (anonymous namespace)::IPlayerInfoManager_V1
[-] (anonymous namespace)::IPlayerInfoManager_V1
@sigsegv-mvm
sigsegv-mvm / headless_hatman_body.cpp
Created April 8, 2017 00:56
Full reverse assembly of class CHeadlessHatmanBody
// CHeadlessHatmanBody
// Full RE by sigsegv on 20170407
// Based on TF2 version 20151007a
// sizeof: 0x20
class CHeadlessHatmanBody : public IBody
{
public:
CHeadlessHatmanBody(INextBot *pNextBot) : IBody(pNextBot) {}
@sigsegv-mvm
sigsegv-mvm / CObjectSentrygun_GetEnemyAimPosition.cpp
Created March 10, 2017 21:17
RE: CObjectSentrygun::GetEnemyAimPosition
// Reverse engineered by sigsegv
// TF2 server, version 20170214a
Vector CObjectSentrygun::GetEnemyAimPosition(CBaseEntity *pEnemy) const
{
CTFPlayer *pTFPlayer = ToTFPlayer(pEnemy);
if (pTFPlayer != nullptr)
{
bool bOnGround = ((pTFPlayer->GetFlags() & FL_ONGROUND) != 0);
bool bDucking = ((pTFPlayer->GetFlags() & FL_DUCKING) != 0);
@sigsegv-mvm
sigsegv-mvm / game_sounds_mvm.diff
Created February 18, 2017 22:44
Diff for game_sounds_mvm.txt to enable per-class giant step sounds and misc stuff
--- /pool/Game/TF2/History/Mount/Union/tf/scripts/game_sounds_mvm.txt 1969-12-31 16:00:00.000000000 -0800
+++ /tmp/game_sounds_mvm.txt 2017-02-18 14:40:31.883278317 -0800
@@ -217,11 +217,11 @@
"MVM.Mothership"
{
"channel" "CHAN_STATIC"
- "volume" "0.0"
+ "volume" "0.5"
"pitch" "PITCH_NORM"
"soundlevel" "SNDLVL_85dB"
@sigsegv-mvm
sigsegv-mvm / wavespawn_template_example.pop
Created February 9, 2017 22:01
Did you know: pop templates aren't just for TFBot blocks
WaveSchedule
{
Templates
{
T_TFBot_SquadLeader
{
// (TFBot stuff)
}
T_TFBot_SquadMember
@sigsegv-mvm
sigsegv-mvm / mvm_engiebot_telein_logic.md
Last active March 30, 2024 04:28
How MvM engineer bots decide where to teleport in

How MvM engineer bots decide where to teleport in

Console variables

There are 3 console variables that control which hints engie bots will prefer to teleport into based on the bomb position:

tf_bot_engineer_mvm_sentry_hint_bomb_forward_range  (default:    0)
tf_bot_engineer_mvm_sentry_hint_bomb_backward_range (default: 3000)
tf_bot_engineer_mvm_hint_min_distance_from_bomb     (default: 1300)
// WTF WTF WTF WTF WTF
void CBaseObject::UpdateOnRemove()
{
// ...
this->DestroyObject();
if (TFGameRules() != nullptr && TFGameRules()->IsMannVsMachineMode() && this->GetTeamNumber() == TF_TEAM_BLUE) {
for (int i = 0; i < IBaseObjectAutoList::AutoList().Count(); ++i) {
CBaseObject *obj = static_cast<CBaseObject *>(IBaseObjectAutoList::AutoList()[i]);
@sigsegv-mvm
sigsegv-mvm / sigsegv_custom_popfile_syntax.md
Last active June 20, 2017 08:59
Documentation for sigsegv's custom popfile mod stuff
@sigsegv-mvm
sigsegv-mvm / ctfgamerules_activate_20161111a.cpp
Last active March 30, 2024 04:29
TF2 game mode determination logic
// Based on TF2 server_srv.so version 20161111a
// Reverse engineering by sigsegv
void CTFGameRules::Activate()
{
m_nGameType = TF_GAMETYPE_UNDEFINED;
tf_gamemode_arena .SetValue(0);
tf_gamemode_cp .SetValue(0);