Skip to content

Commit 635e813

Browse files
committed
new armor medigun
1 parent ae880cb commit 635e813

File tree

12 files changed

+395
-0
lines changed

12 files changed

+395
-0
lines changed

game/quiver/info_changelog.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ Added the following Source SDK Pull Requests:
4242
- #1470: Fix ownerless sentry rockets dealing no damage
4343
- #1472: Reimplement sv_showhitboxes for listen servers only
4444
- #1473: Fix Diamondback getting revenge crits from earlier kills when switched onto
45+
- #1475: Add convar to allow taking damage in itemtest
46+
- #1476: Add convars for server owners to hide the freezepanel showing held item
4547

4648
Details:
4749
- Fixed a bug where the mini-crit damage effect doesn't show up when your shield breaks.
@@ -81,6 +83,7 @@ Details:
8183
- Added a 25% damage penalty on the Vita-Saw.
8284
- Removed the -10 max health penalty on the Vita-Saw.
8385
- Made it so the Vita-Saw saves up to 20% ÜberCharge after death, instead of using the organ mechanic.
86+
- Added the Überrüstungsheiler, a new Medigun for the Medic that heals armor on top of health. Its ÜberCharge fully repairs armor and makes it unbreakable.
8487

8588
Quiver Private Alpha 1.1.0:
8689
Whitelists:

game/quiver/info_highlights.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ Custom Weapons:
3535
- Heavy gets another minigun, called the Ludmila, which increases the Heavy's survivability in exchange for damage and minigun spinup time.
3636
- The Soldier gets a melee that's a blast from the past, The Vitality Glitch, which increases the damage and move speed of the user when on low health, in return for damage, move speed, and armor durability.
3737
- The Spy gets a revolver called the Hitman's Executioner that allows you to fire close-range headshots if you're behind the enemy. In return, more mini-crit damage is taken when active.
38+
- The Medic gets a new Medigun called the Überrüstungsheiler that heals armor on top of health. Its ÜberCharge fully repairs armor and makes it unbreakable.
3839

3940
Stock weapon balance changes:
4041
- Random critical hits have been disabled.
1.45 KB
Binary file not shown.

game/quiver/scripts/items/items_custom.txt

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -867,6 +867,124 @@
867867
"sound_burst" "Weapon_Enforcer.SingleCrit"
868868
}
869869
}
870+
871+
"weapon_quiver_armor_medigun"
872+
{
873+
"base_item_name" "Armor Healing Medigun"
874+
"prefab" "quiver_customweapon"
875+
"item_class" "tf_weapon_medigun"
876+
"craft_class" "weapon"
877+
"craft_material_type" "weapon"
878+
"capabilities"
879+
{
880+
"nameable" "1"
881+
}
882+
"tags"
883+
{
884+
"can_heal_allies" "1"
885+
}
886+
"item_type_name" "#TF_Weapon_Medigun"
887+
"item_name" "#Quiver_ArmorHealerMedigun"
888+
"item_description" "#Attrib_Medigun_UnbreakableArmor_Penalty"
889+
"propername" "1"
890+
"item_slot" "secondary"
891+
"equip_region" "medigun_backpack"
892+
"image_inventory" "backpack/workshop/weapons/c_models/c_medigun_defense/c_medigun_defense"
893+
"image_inventory_size_w" "128"
894+
"image_inventory_size_h" "82"
895+
"model_player" "models/workshop/weapons/c_models/c_medigun_defense/c_medigun_defense.mdl"
896+
"extra_wearable" "models/workshop/weapons/c_models/c_medigun_defense/c_medigun_defensepack.mdl"
897+
"attach_to_hands" "1"
898+
"item_quality" "unique"
899+
"min_ilevel" "8"
900+
"max_ilevel" "8"
901+
"used_by_classes"
902+
{
903+
"medic" "1"
904+
}
905+
"static_attrs"
906+
{
907+
"min_viewmodel_offset" "10 0 -9"
908+
}
909+
"attributes"
910+
{
911+
"lunchbox adds minicrits"
912+
{
913+
"attribute_class" "set_weapon_mode"
914+
"value" "4"
915+
}
916+
"kill eater score type"
917+
{
918+
"attribute_class" "kill_eater_score_type"
919+
"value" "1"
920+
}
921+
"kill eater score type 2"
922+
{
923+
"attribute_class" "kill_eater_score_type_2"
924+
"value" "2"
925+
}
926+
"medigun charge is unbreakable armor"
927+
{
928+
"attribute_class" "set_charge_type"
929+
"value" "6"
930+
}
931+
"ubercharge rate bonus"
932+
{
933+
"attribute_class" "mult_medigun_uberchargerate"
934+
"value" "1.35"
935+
}
936+
"heal rate bonus"
937+
{
938+
"attribute_class" "mult_medigun_healrate"
939+
"value" "1.25"
940+
}
941+
"ubercharge overheal rate penalty"
942+
{
943+
"attribute_class" "mult_medigun_overheal_uberchargerate"
944+
"value" "0.85"
945+
}
946+
"mult_medigun_armor_timesincedamage"
947+
{
948+
"attribute_class" "mult_medigun_armor_timesincedamage"
949+
"value" "1"
950+
}
951+
"mult_medigun_armor_timesincedamage_scale_penalty"
952+
{
953+
"attribute_class" "mult_medigun_armor_timesincedamage_scale"
954+
"value" "0.5"
955+
}
956+
"medigun armor repair rate"
957+
{
958+
"attribute_class" "add_medigun_armorrepairrate"
959+
"value" "13"
960+
}
961+
}
962+
"visuals"
963+
{
964+
"player_bodygroups"
965+
{
966+
"medic_backpack" "1"
967+
}
968+
}
969+
"visuals_red"
970+
{
971+
"skin" "0"
972+
"custom_particlesystem"
973+
{
974+
"system" "medicgun_beam_attrib_overheal_red"
975+
}
976+
}
977+
"visuals_blu"
978+
{
979+
"skin" "1"
980+
"custom_particlesystem"
981+
{
982+
"system" "medicgun_beam_attrib_overheal_blue"
983+
}
984+
}
985+
"mouse_pressed_sound" "ui/item_heavy_gun_pickup.wav"
986+
"drop_sound" "ui/item_heavy_gun_drop.wav"
987+
}
870988
}
871989

872990
"items"
@@ -985,6 +1103,13 @@
9851103
"first_sale_date" "2024/06/14"
9861104
"xifier_class_remap" "weapon_quiver_joke_lexecuteur"
9871105
}
1106+
"34412"
1107+
{
1108+
"name" "Armor Healing Medigun"
1109+
"prefab" "weapon_quiver_armor_medigun"
1110+
"first_sale_date" "2010/09/29"
1111+
"xifier_class_remap" "weapon_quiver_armor_medigun"
1112+
}
9881113
}
9891114

9901115
// attributes are moved to items_game.txt

game/quiver/scripts/items/items_game.txt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230015,6 +230015,46 @@
230015230015
"effect_type" "neutral"
230016230016
"stored_as_integer" "0"
230017230017
}
230018+
"4051"
230019+
{
230020+
"name" "medigun charge is unbreakable armor"
230021+
"attribute_class" "set_charge_type"
230022+
"description_string" "#Attrib_Medigun_UnbreakableArmor"
230023+
"description_format" "value_is_additive"
230024+
"hidden" "0"
230025+
"effect_type" "positive"
230026+
"stored_as_integer" "0"
230027+
}
230028+
"4052"
230029+
{
230030+
"name" "mult_medigun_armor_timesincedamage"
230031+
"attribute_class" "mult_medigun_armor_timesincedamage"
230032+
"description_string" "#Attrib_Medigun_TimeSinceDamageArmor"
230033+
"description_format" "value_is_additive"
230034+
"hidden" "0"
230035+
"effect_type" "negative"
230036+
"stored_as_integer" "0"
230037+
}
230038+
"4053"
230039+
{
230040+
"name" "mult_medigun_armor_timesincedamage_scale_penalty"
230041+
"attribute_class" "mult_medigun_armor_timesincedamage_scale"
230042+
"description_string" "#Attrib_Medigun_TimeSinceDamageArmorScale"
230043+
"description_format" "value_is_inverted_percentage"
230044+
"hidden" "0"
230045+
"effect_type" "negative"
230046+
"stored_as_integer" "0"
230047+
}
230048+
"4054"
230049+
{
230050+
"name" "medigun armor repair rate"
230051+
"attribute_class" "add_medigun_armorrepairrate"
230052+
"description_string" "#Attrib_Medigun_RepairRate"
230053+
"description_format" "value_is_additive"
230054+
"hidden" "0"
230055+
"effect_type" "positive"
230056+
"stored_as_integer" "0"
230057+
}
230018230058
}
230019230059
"item_criteria_templates"
230020230060
{

src/game/server/tf/tf_player.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9505,6 +9505,9 @@ void CTFPlayer::BreakArmor(const CTakeDamageInfo& info, CTFPlayer* pTFAttacker,
95059505
if (DoesDamagePenetrateArmor(info, bitsDamage))
95069506
return;
95079507

9508+
if (m_Shared.InCond(QF_COND_UNBREAKABLE_ARMOR))
9509+
return;
9510+
95089511
if (!bNoArmor)
95099512
{
95109513
// armor should break at this point.
@@ -9612,6 +9615,33 @@ float CTFPlayer::DamageArmor(const CTakeDamageInfo& info, CTFPlayer* pTFAttacker
96129615
return damage;
96139616
}
96149617

9618+
// if we have the unbreakable armor perk, calculate it without considering armor reduction.
9619+
if (m_Shared.InCond(QF_COND_UNBREAKABLE_ARMOR))
9620+
{
9621+
/*
9622+
if (ArmorValue() < GetMaxArmor())
9623+
{
9624+
SetArmorValue(GetMaxArmor());
9625+
}
9626+
*/
9627+
9628+
if (debug)
9629+
{
9630+
Warning(" PLAYER HAS UNBREAKABLE ARMOR, CALCULATING WITHOUT REMOVING ARMOR OR PENETRATION\n");
9631+
}
9632+
9633+
float flNew = (damage * flRatio);
9634+
9635+
if (debug)
9636+
{
9637+
Msg(" NEW DAMAGE: %f\n", flNew);
9638+
}
9639+
9640+
damage = flNew;
9641+
9642+
return damage;
9643+
}
9644+
96159645
if (ArmorValue() > 0)
96169646
{
96179647
float flNew = (damage * flRatio);

0 commit comments

Comments
 (0)