Skip to content

Commit 23c4a24

Browse files
committed
fixes and more tuning
1 parent f24f867 commit 23c4a24

File tree

10 files changed

+180
-52
lines changed

10 files changed

+180
-52
lines changed

game/quiver/info_changelog.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Whitelists:
2727
- Sharpened Volcano Fragment
2828
- The Sun-on-a-Stick
2929
- The B.A.S.E. Jumper
30+
- The Atomizer
3031

3132
Blacklists:
3233
- The Spy-Cicle
@@ -52,6 +53,14 @@ Details:
5253
- The Sharpened Volcano Fragment is now a reskin of the Axtinguisher.
5354
- Removed the fire resistance on the Sun-on-the-Stick
5455
- Made the Sun-on-the-Stick ignite enemies
56+
- Lowered the blast radius of the Scorch Shot by 20%
57+
- Reduced the jump height when using the Atomizer by 10%.
58+
- The Atomizer's triple jump is now passive. Mini-Crits will no longer occur when dealing hits while airborne.
59+
- Decreased the Baby Face's Blaster's movement speed penalty back to 10%
60+
- The Baby Face's Blaster now takes 200 damage to fill boost instead of 100.
61+
- The Sandman's ball now does guaranteed crits against armored players, alongside breaking armor.
62+
- The Sandman's ball now marks players for death if they're unarmored.
63+
- Fixed a bug where the Sandman doesn't play special sounds when hitting a player with a ball.
5564

5665
Quiver Private Alpha 1.1.0:
5766
Whitelists:

game/quiver/info_highlights.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ Unlockable weapon balance changes:
7171
- The Flying Guillotine now does 100% crits vs players that just had their armor break, at the expense of 33% damage on armored players.
7272
- Baby Face's Blaster users will no longer lose Boost when taking damage.
7373
- You will now only lose 35% of boost when air jumping with the Baby Face's Blaster.
74-
- Increased the Baby Face's Blaster's movement speed penalty from 10% to 20%
7574
- The Loch-N-Load's 20% damage bonus against buildings is now a normal 20% damage bonus.
7675
- Added a 25% clip size reduction on the Iron Bomber to keep it at 4 grenades (with the Grenade Launcher's ammo increase).
7776
- Decreased the Loch-N-Load's clip size penalty from 25% to 65% to put it at 2 grenades (with the Grenade Launcher's ammo increase).
@@ -87,11 +86,16 @@ Unlockable weapon balance changes:
8786
- Fixed Gunslinger being able to pause melee hit combos when holstering the weapon.
8887
- Reduced the reload penalty on the Shortstop from 50% to 25%.
8988
- Added a 25 max health increase to the Shortstop to mirror its original set.
90-
- The Sandman's ball now breaks armor. It also does 100% guaranteed critical hits against unarmored players.
89+
- The Sandman's ball now breaks armor. It also does 100% guaranteed critical hits against armored players.
90+
- The Sandman's ball now marks players for death if they're unarmored.
9191
- The Family Business is now a multi-class shotgun for everyone except Soldier.
9292
- The Sharpened Volcano Fragment is now a reskin of the Axtinguisher.
9393
- Removed the fire resistance on the Sun-on-the-Stick
9494
- Made the Sun-on-the-Stick ignite enemies
95+
- Lowered the blast radius of the Scorch Shot by 20%
96+
- Reduced the jump height when using the Atomizer by 10%.
97+
- The Atomizer's triple jump is now passive. Mini-Crits will no longer occur when dealing hits while airborne.
98+
- The Baby Face's Blaster now takes 200 damage to fill boost instead of 100.
9599

96100
MvM Changes:
97101
- Added armor-related upgrades to MvM (max armor, pierces damage resistances, and armor resistance).

game/quiver/info_whitelist.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
- The Concheror
5454
- The Panic Attack
5555
- The Disciplinary Action
56-
- The Scorch Shot
56+
- The Scorch Shot (w/ balance changes)
5757
- The Homewrecker/Maul
5858
- The Powerjack
5959
- The Hot Hand
@@ -74,5 +74,6 @@
7474
- Sharpened Volcano Fragment (w/ balance changes)
7575
- The Sun-on-a-Stick* (w/ balance changes)
7676
- The B.A.S.E. Jumper
77+
- The Atomizer* (w/ balance changes)
7778

7879
* - Weapon was whitelisted as long as it got a rebalance.
938 Bytes
Binary file not shown.

game/quiver/scripts/items/items_game.txt

Lines changed: 67 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20474,6 +20474,11 @@
2047420474
"attribute_class" "special_taunt"
2047520475
"value" "1"
2047620476
}
20477+
"Blast radius decreased"
20478+
{
20479+
"attribute_class" "mult_explosion_radius"
20480+
"value" "0.80"
20481+
}
2047720482
}
2047820483
"visuals"
2047920484
{
@@ -38152,6 +38157,7 @@
3815238157
"image_inventory_size_h" "82"
3815338158
"inspect_panel_dist" "45"
3815438159
"attach_to_hands" "1"
38160+
"stock_whitelist" "1"
3815538161
"model_player" "models/workshop/weapons/c_models/c_bonk_bat/c_bonk_bat.mdl"
3815638162
"used_by_classes"
3815738163
{
@@ -38171,9 +38177,9 @@
3817138177
}
3817238178
"attributes"
3817338179
{
38174-
"air dash count"
38180+
"air dash count passive"
3817538181
{
38176-
"attribute_class" "air_dash_count"
38182+
"attribute_class" "air_dash_count_passive"
3817738183
"value" "1"
3817838184
}
3817938185
"single wep deploy time increased"
@@ -38191,6 +38197,11 @@
3819138197
"attribute_class" "special_taunt"
3819238198
"value" "1"
3819338199
}
38200+
"decreased jump height"
38201+
{
38202+
"attribute_class" "mod_jump_height"
38203+
"value" "0.90"
38204+
}
3819438205
}
3819538206
"mouse_pressed_sound" "ui/item_metal_weapon_pickup.wav"
3819638207
"drop_sound" "ui/item_metal_weapon_drop.wav"
@@ -48486,13 +48497,24 @@
4848648497
"move speed penalty"
4848748498
{
4848848499
"attribute_class" "mult_player_movespeed"
48489-
"value" "0.80"
48500+
"value" "0.90"
4849048501
}
4849148502
"boost on damage"
4849248503
{
4849348504
"attribute_class" "boost_on_damage"
4849448505
"value" "1"
4849548506
}
48507+
"boost on damage div"
48508+
{
48509+
"attribute_class" "boost_on_damage_div"
48510+
"value" "2"
48511+
}
48512+
// kinda not needed because it's 45% in code already. better for readability i guess
48513+
"max boost speed multiplier"
48514+
{
48515+
"attribute_class" "mult_max_boost_speed"
48516+
"value" "1.45"
48517+
}
4849648518
"hype resets on jump"
4849748519
{
4849848520
"attribute_class" "hype_resets_on_jump"
@@ -223181,7 +223203,7 @@
223181223203
{
223182223204
"name" "increased jump height"
223183223205
"attribute_class" "mod_jump_height"
223184-
"description_string" "#Attrib_JumpHeightBonus"
223206+
"description_string" "#Attrib_JumpHeightBonus_Improved"
223185223207
"description_format" "value_is_percentage"
223186223208
"hidden" "0"
223187223209
"effect_type" "positive"
@@ -224087,7 +224109,7 @@
224087224109
{
224088224110
"name" "boost on damage"
224089224111
"attribute_class" "boost_on_damage"
224090-
"description_string" "#Attrib_BoostOnDamage"
224112+
"description_string" "#Attrib_BoostOnDamage_Quiver"
224091224113
"description_format" "value_is_additive"
224092224114
"hidden" "0"
224093224115
"effect_type" "positive"
@@ -228617,6 +228639,46 @@
228617228639
"armory_desc" "on_wearer"
228618228640
"stored_as_integer" "0"
228619228641
}
228642+
"4042"
228643+
{
228644+
"name" "decreased jump height"
228645+
"attribute_class" "mod_jump_height"
228646+
"description_string" "#Attrib_JumpHeightPenalty"
228647+
"description_format" "value_is_inverted_percentage"
228648+
"hidden" "0"
228649+
"effect_type" "negative"
228650+
"stored_as_integer" "0"
228651+
}
228652+
"4043"
228653+
{
228654+
"name" "air dash count passive"
228655+
"attribute_class" "air_dash_count_passive"
228656+
"description_string" "#Attrib_AirDashCountIncreasedPassive"
228657+
"description_format" "value_is_additive"
228658+
"hidden" "0"
228659+
"effect_type" "positive"
228660+
"stored_as_integer" "0"
228661+
}
228662+
"4044"
228663+
{
228664+
"name" "boost on damage div"
228665+
"attribute_class" "boost_on_damage_div"
228666+
"description_string" "#Attrib_BoostOnDamageDiv"
228667+
"description_format" "value_is_additive"
228668+
"hidden" "1"
228669+
"effect_type" "negative"
228670+
"stored_as_integer" "0"
228671+
}
228672+
"4045"
228673+
{
228674+
"name" "max boost speed multiplier"
228675+
"attribute_class" "mult_max_boost_speed"
228676+
"description_string" "#Attrib_BoostSpeedMultBonus"
228677+
"description_format" "value_is_percentage"
228678+
"hidden" "0"
228679+
"effect_type" "positive"
228680+
"stored_as_integer" "0"
228681+
}
228620228682
}
228621228683
"item_criteria_templates"
228622228684
{

src/game/server/tf/tf_player.cpp

Lines changed: 46 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -700,6 +700,7 @@ BEGIN_ENT_SCRIPTDESC( CTFPlayer, CBaseMultiplayerPlayer , "Team Fortress 2 Playe
700700

701701
#ifdef BDSBASE
702702
DEFINE_SCRIPTFUNC_WRAPPED(IgnitePlayer, "")
703+
DEFINE_SCRIPTFUNC_WRAPPED(GiveWeapon, "")
703704
#else
704705
DEFINE_SCRIPTFUNC(IgnitePlayer, "")
705706
#endif
@@ -5851,99 +5852,102 @@ void CTFPlayer::ManageRegularWeaponsLegacy( TFPlayerClassData_t *pData )
58515852
}
58525853

58535854
#ifdef BDSBASE
5854-
CON_COMMAND_F(tf_giveweapon, "Give a weapon to the player. Format: tf_giveweapon <item definition name> or <item def index>", FCVAR_CHEAT)
5855+
bool CTFPlayer::ScriptGiveWeapon(const char* pszWeapon)
58555856
{
5856-
CTFPlayer* pPlayer = ToTFPlayer(UTIL_GetCommandClient());
5857-
if (!pPlayer)
5858-
return;
5859-
58605857
CEconItemDefinition* pItemDef = NULL;
58615858

5862-
int iItemCount = args.ArgC();
5863-
for (int i = 1; i < iItemCount; ++i)
5859+
const char* input = pszWeapon;
5860+
5861+
// Check to see if args[1] is a number (itemdefid) and if so, translate it to actual itemname
5862+
if (V_isdigit(input[0]))
58645863
{
5865-
// Check to see if args[1] is a number (itemdefid) and if so, translate it to actual itemname
5866-
if (V_isdigit(args[i][0]))
5867-
{
5868-
int iDef = V_atoi(args[i]);
5869-
pItemDef = GetItemSchema()->GetItemDefinition(iDef);
5870-
if (pItemDef)
5871-
{
5872-
break;
5873-
}
5874-
}
5875-
else
5876-
{
5877-
pItemDef = GetItemSchema()->GetItemDefinitionByName(args[i]);
5878-
if (pItemDef)
5879-
{
5880-
break;
5881-
}
5882-
}
5864+
int iDef = V_atoi(input);
5865+
pItemDef = GetItemSchema()->GetItemDefinition(iDef);
5866+
}
5867+
else
5868+
{
5869+
pItemDef = GetItemSchema()->GetItemDefinitionByName(input);
58835870
}
58845871

58855872
if (pItemDef)
58865873
{
58875874
CEconItemView* pItemData = new CEconItemView();
58885875
CSteamID ownerSteamID;
5889-
pPlayer->GetSteamID(&ownerSteamID);
5876+
GetSteamID(&ownerSteamID);
58905877
pItemData->Init(pItemDef->GetDefinitionIndex(), AE_UNIQUE, AE_USE_SCRIPT_VALUE, ownerSteamID.GetAccountID());
58915878
if (pItemData && pItemData->IsValid())
58925879
{
5893-
int iClass = pPlayer->GetPlayerClass()->GetClassIndex();
5880+
int iClass = GetPlayerClass()->GetClassIndex();
58945881

58955882
if (!pItemData->GetStaticData()->CanBeUsedByClass(iClass))
58965883
{
5897-
Warning("Item %s cannot be used by this class\n", pItemData->GetItemDefinition()->GetItemDefinitionName());
5898-
return;
5884+
return false;
58995885
}
59005886

59015887
int iSlot = pItemData->GetStaticData()->GetLoadoutSlot(iClass);
5902-
CTFWeaponBase* pWeapon = dynamic_cast<CTFWeaponBase*>(pPlayer->GetEntityForLoadoutSlot(iSlot));
5888+
CTFWeaponBase* pWeapon = dynamic_cast<CTFWeaponBase*>(GetEntityForLoadoutSlot(iSlot));
59035889

59045890
// we need to force translating the name here.
59055891
// GiveNamedItem will not translate if we force creating the item
59065892
const char* pTranslatedWeaponName = TranslateWeaponEntForClass(pItemData->GetStaticData()->GetItemClass(), iClass);
5907-
CTFWeaponBase* pNewItem = dynamic_cast<CTFWeaponBase*>(pPlayer->GiveNamedItem(pTranslatedWeaponName, 0, pItemData, true));
5893+
CTFWeaponBase* pNewItem = dynamic_cast<CTFWeaponBase*>(GiveNamedItem(pTranslatedWeaponName, 0, pItemData, true));
59085894
if (pNewItem)
59095895
{
59105896
CTFWeaponBuilder* pBuilder = dynamic_cast<CTFWeaponBuilder*>((CBaseEntity*)pNewItem);
59115897
if (pBuilder)
59125898
{
5913-
pBuilder->SetSubType(pPlayer->GetPlayerClass()->GetData()->m_aBuildable[0]);
5899+
pBuilder->SetSubType(GetPlayerClass()->GetData()->m_aBuildable[0]);
59145900
}
59155901

59165902
// make sure we removed our current weapon
59175903
if (pWeapon)
59185904
{
5919-
pPlayer->Weapon_Detach(pWeapon);
5905+
Weapon_Detach(pWeapon);
59205906
UTIL_Remove(pWeapon);
59215907
}
59225908

59235909
pNewItem->MarkAttachedEntityAsValidated();
5924-
pNewItem->GiveTo(pPlayer);
5910+
pNewItem->GiveTo(this);
59255911

5926-
pPlayer->PostInventoryApplication();
5912+
PostInventoryApplication();
59275913

59285914
// Refills weapon clips, too
59295915
for (int i = 0; i < MAX_WEAPONS; i++)
59305916
{
5931-
CTFWeaponBase* pWeapon = dynamic_cast<CTFWeaponBase*>(pPlayer->GetWeapon(i));
5917+
CTFWeaponBase* pWeapon = dynamic_cast<CTFWeaponBase*>(GetWeapon(i));
59325918
if (!pWeapon)
59335919
continue;
59345920

59355921
pWeapon->GiveDefaultAmmo();
59365922
pWeapon->WeaponRegenerate();
59375923
}
5938-
5939-
Msg("Gave %s to player %s [%i]\n", pItemData->GetItemDefinition()->GetItemDefinitionName(), pPlayer->GetPlayerName(), ownerSteamID.GetAccountID());
5940-
}
5941-
else
5942-
{
5943-
Warning("Item not found or is not a weapon\n");
5924+
5925+
return true;
59445926
}
59455927
}
59465928
}
5929+
5930+
return false;
5931+
}
5932+
5933+
CON_COMMAND_F(tf_giveweapon, "Give a weapon to the player. Format: tf_giveweapon <item definition name> or <item def index>", FCVAR_CHEAT)
5934+
{
5935+
CTFPlayer* pPlayer = ToTFPlayer(UTIL_GetCommandClient());
5936+
if (!pPlayer)
5937+
return;
5938+
5939+
bool bGiven = pPlayer->ScriptGiveWeapon(args[1]);
5940+
5941+
if (bGiven)
5942+
{
5943+
CSteamID ownerSteamID;
5944+
pPlayer->GetSteamID(&ownerSteamID);
5945+
Msg("Gave %s to player %s [%i]\n", args[1], pPlayer->GetPlayerName(), ownerSteamID.GetAccountID());
5946+
}
5947+
else
5948+
{
5949+
Warning("Item not found, is not a weapon, or cannot be used with this class.\n");
5950+
}
59475951
}
59485952
#endif
59495953

src/game/server/tf/tf_player.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -962,6 +962,7 @@ class CTFPlayer : public CBaseMultiplayerPlayer, public IHasAttributes, public I
962962
void ScriptStunPlayer( float flTime, float flReductionAmount, int iStunFlags = TF_STUN_MOVEMENT, HSCRIPT hAttacker = NULL );
963963
#ifdef BDSBASE
964964
void ScriptIgnitePlayer(float flBurningTime, HSCRIPT hAttacker = NULL, HSCRIPT hWeapon = NULL);
965+
bool ScriptGiveWeapon(const char* pszWeapon);
965966
#endif
966967

967968
private:

0 commit comments

Comments
 (0)