Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions addons/sourcemod/configs/vsh/vsh.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
//- feigndeath - Does client have feign death ready
//- selfdamage - Is this self-damage, only works on 'attackdamage' and 'takedamage'
//- victimuber - Is victim ubered or not, only works on 'attackdamage' and 'takedamage'
//- ignoreminions - Don't do this action if the victim is a minion, only works on 'attackdamage' and 'takedamage'
//
//List of possible targets for each functions, where client is the calling function
//- client - Client itself (default)
Expand Down Expand Up @@ -482,6 +483,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
}

"Tags_AddHealthBase" //Add 50% of base health
Expand Down Expand Up @@ -683,6 +685,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
}

"Tags_DropHealth"
Expand Down Expand Up @@ -780,6 +783,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
}

"Tags_SetEntProp" //Add heads
Expand Down Expand Up @@ -1062,6 +1066,8 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"

"damagetype" "ignite" //To prevent stat increase from afterburn
}

Expand Down Expand Up @@ -1149,6 +1155,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
}

"Tags_AddHealth" //Add 25 health
Expand Down Expand Up @@ -1318,6 +1325,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
"attackweapon" "melee" //Only consider melee hits
}

Expand Down Expand Up @@ -1349,6 +1357,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
}

"Tags_SetEntProp" //Add 1 head on every hit
Expand Down Expand Up @@ -1486,6 +1495,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
}

"Tags_SetEntProp" //Add 25% charge meter
Expand Down Expand Up @@ -1594,6 +1604,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
}

"Tags_AddCond" //Add crit for 7 seconds
Expand Down Expand Up @@ -1625,6 +1636,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
}

"Tags_AddHealth" //Add 120 health
Expand Down Expand Up @@ -1896,6 +1908,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
"damagecustom" "headshot"
}

Expand All @@ -1920,6 +1933,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
}

"Tags_SetEntProp" //Add +40% focus
Expand Down Expand Up @@ -2156,6 +2170,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
"damagecustom" "backstab"
}

Expand Down Expand Up @@ -2262,6 +2277,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
"damagecustom" "backstab"
}

Expand All @@ -2282,6 +2298,7 @@
"filter"
{
"victimuber" "0"
"ignoreminions" "1"
"damagecustom" "backstab"
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public void RageGhost_Create(SaxtonHaleBase boss)
boss.SetPropFloat("RageGhost", "Radius", 400.0);
boss.SetPropFloat("RageGhost", "Duration", 8.0);
boss.SetPropFloat("RageGhost", "HealSteal", 25.0); //Steals hp per second
boss.SetPropFloat("RageGhost", "HealGainMultiplier", 2.0); //Gains hp multiplied by amount of health stolen
boss.SetPropFloat("RageGhost", "HealGainMultiplier", 1.25); //Gains hp multiplied by amount of health stolen
boss.SetPropFloat("RageGhost", "BuildingDrain", 3.0); //Building health drain multiplier based on flHealSteal, 0.0 or lower disables it
boss.SetPropFloat("RageGhost", "PullStrength", 10.0); //Scale of pull strength, negative values push enemies away instead. Note that making it too weak will only pull players if they're airborne

Expand Down
2 changes: 1 addition & 1 deletion addons/sourcemod/scripting/vsh/bosses/boss_hale.sp
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ public void SaxtonHale_Create(SaxtonHaleBase boss)
boss.SetPropFloat("RageAddCond", "RageCondSuperRageMultiplier", 2.0);
RageAddCond_AddCond(boss, TFCond_SpeedBuffAlly); // Speed boost effect
RageAddCond_AddCond(boss, TFCond_MegaHeal); // Knockback & stun immunity
RageAddCond_AddCond(boss, TFCond_DefenseBuffed); // Battalion's Resistance
RageAddCond_AddCond(boss, TFCond_DefenseBuffNoCritBlock); // MvM Defense Buff

boss.CreateClass("Lunge");

Expand Down
8 changes: 4 additions & 4 deletions addons/sourcemod/scripting/vsh/bosses/boss_pyrocar.sp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#define TF_DMG_GAS_AFTERBURN DMG_BURN|DMG_PREVENT_PHYSICS_FORCE|DMG_ACID
#define PYROCAR_BACKBURNER_ATTRIBUTES "24 ; 1.0 ; 72 ; 0.5 ; 74 ; 0.0 ; 112 ; 0.25 ; 178 ; 0.2 ; 181 ; 1.0 ; 252 ; 0.5 ; 259 ; 1.0 ; 356 ; 1.0 ; 839 ; 2.8 ; 841 ; 0 ; 843 ; 8.5 ; 844 ; 1850.0 ; 862 ; 0.45 ; 863 ; 0.01 ; 865 ; 85 ; 214 ; %d"
#define PYROCAR_THERMAL_THRUSTER_ATTRIBUTES "259 ; 1.0 ; 801 ; 20.0 ; 856 ; 1.0 ; 870 ; 1.0 ; 872 ; 1.0 ; 873 ; 1.0"
#define PYROCAR_HEALINGREDUCTION 0.5
#define PYROCAR_HEALINGREDUCTION 0.8

static char g_strPyrocarRoundStart[][] = {
"vsh_rewrite/pyrocar/pyrocar_intro.mp3",
Expand Down Expand Up @@ -279,16 +279,16 @@ public Action PyroCar_OnAttackDamageAlive(SaxtonHaleBase boss, int victim, int &
{
for (int iSlot = 0; iSlot <= WeaponSlot_BuilderEngie; iSlot++)
{
int iWeapon = GetPlayerWeaponSlot(boss.iClient, iSlot);
int iWeapon = GetPlayerWeaponSlot(victim, iSlot);
if (iWeapon > MaxClients)
{
TF2Attrib_SetByDefIndex(iWeapon, ATTRIB_LESSHEALING, 0.5);
TF2Attrib_SetByDefIndex(iWeapon, ATTRIB_LESSHEALING, PYROCAR_HEALINGREDUCTION);
TF2Attrib_ClearCache(iWeapon);
}
}
}

g_hPyrocarHealTimer[victim] = CreateTimer(0.4, Timer_RemoveLessHealing, GetClientSerial(victim));
g_hPyrocarHealTimer[victim] = CreateTimer(0.6, Timer_RemoveLessHealing, GetClientSerial(victim));
}

if (g_flPyrocarGasCharge[boss.iClient] <= g_iMaxGasPassers * g_flGasMinCharge)
Expand Down
15 changes: 13 additions & 2 deletions addons/sourcemod/scripting/vsh/tags/tags_filter.sp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ enum TagsFilterType //List of possible filters
TagsFilterType_VictimUber,
TagsFilterType_SelfDamage,
TagsFilterType_VictimCond,
TagsFilterType_IgnoreMinions,
}

enum struct TagsFilterStruct
Expand All @@ -40,7 +41,7 @@ enum struct TagsFilterStruct
this.nValue = TagsTarget_GetType(sValue);
return !(this.nValue == TagsTarget_Invalid);
}
case TagsFilterType_Aim, TagsFilterType_SentryTarget, TagsFilterType_FeignDeath, TagsFilterType_VictimUber, TagsFilterType_SelfDamage:
case TagsFilterType_Aim, TagsFilterType_SentryTarget, TagsFilterType_FeignDeath, TagsFilterType_VictimUber, TagsFilterType_SelfDamage, TagsFilterType_IgnoreMinions:
{
this.nValue = !!StringToInt(sValue); //Turn into boolean
return true;
Expand Down Expand Up @@ -86,7 +87,7 @@ enum struct TagsFilterStruct
}
case TagsFilterType_Aim:
{
return SaxtonHale_IsValidBoss(Client_GetEyeTarget(iClient));
return SaxtonHale_IsValidBoss(Client_GetEyeTarget(iClient), false);
}
case TagsFilterType_SentryTarget:
{
Expand Down Expand Up @@ -184,6 +185,15 @@ enum struct TagsFilterStruct
int iVictim = tParams.GetInt("victim");
return TF2_IsPlayerInCondition(iVictim, this.nValue);
}
case TagsFilterType_IgnoreMinions:
{
int iVictim = tParams.GetInt("victim");
SaxtonHaleBase boss = SaxtonHaleBase(iVictim);
if (boss.bValid)
return !boss.bMinion;

return true;
}
}

return false;
Expand Down Expand Up @@ -268,6 +278,7 @@ TagsFilterType TagsFilter_GetType(const char[] sTarget)
mFilterType.SetValue("victimuber", TagsFilterType_VictimUber);
mFilterType.SetValue("selfdamage", TagsFilterType_SelfDamage);
mFilterType.SetValue("victimcond", TagsFilterType_VictimCond);
mFilterType.SetValue("ignoreminions", TagsFilterType_IgnoreMinions);
}

TagsFilterType nFilterType = TagsFilterType_Invalid;
Expand Down