50DKP / FF2-Official

Freak Fortress 2 is a one versus all mod for Team Fortress 2. It is the successor to the Vs. Saxton Hale plugin.
https://forums.alliedmods.net/forumdisplay.php?f=154
GNU General Public License v3.0
54 stars 27 forks source link

Prepare for Gun Mettle Update #268

Closed shadow93 closed 9 years ago

shadow93 commented 9 years ago

The Gun Mettle update will bring in a few game-breaking changes, the most important of them all being that the update will allow players to pick up fallen weapons and use them...

...which will be a problem if a boss happens to pick up a fallen weapon that their class can equip.

Unless the same code that prevents ammo pickups would also prevent this.

1.10.7 confirmed lol.

50Wliu commented 9 years ago

^1.10.6 isn't even out yet :wink:.

Deathreus commented 9 years ago

As a bit of balance prevention, a fellow dev for a community I'm with modified all the weapons that are going to be changed, giving them their old attribute values, this could be a temporary solution until real balance changes to the new changes are made

shadow93 commented 9 years ago

sarysa's method, which uses OnEntityCreated():

if (StrEqual(classname, "tf_dropped_weapon"))
{
    AcceptEntityInput(entity, "kill");
    return;
}
GhostieSFM commented 9 years ago

Where do i put this? ^

shadow93 commented 9 years ago

And Valve decided to make the new reskins with their own ID's, so i went in and said fuck it.

This is to support the new medigun reskins, considering IDK how many they will make.

    if(!StrContains(classname, "tf_weapon_medigun") && (iItemDefinitionIndex!=35 || iItemDefinitionIndex!=411 || iItemDefinitionIndex!=998))
    {
        new Handle:itemOverride=PrepareItemHandle(item, _, _, "10 ; 1.25 ; 178 ; 0.75 ; 144 ; 2.0 ; 11 ; 1.5");
            //10: +25% faster charge rate
            //178: +25% faster weapon switch
            //144: Quick-fix speed/jump effects
            //11: +50% overheal bonus
        if(itemOverride!=INVALID_HANDLE)
        {
            item=itemOverride;
            return Plugin_Changed;
        }
    }

And on checkitems

        if(TF2_GetPlayerClass(client)==TFClass_Medic && GetEntProp(weapon, Prop_Send, "m_iEntityQuality")!=10)  //10 means the weapon is customized, so we don't want to touch those
        {
            switch(index) // Because Gun Mettle's update is the cause of this reversal. ~SHADoW
            {
                case 35, 411, 998:  //Kritzkrieg, Quick-Fix, Vaccinator
                {
                    weapon=SpawnWeapon(client, "tf_weapon_medigun", 29, 5, 10, "10 ; 1.25 ; 178 ; 0.75 ; 144 ; 2.0 ; 11 ; 1.5");
                        //Switch to regular medigun
                        //10: +25% faster charge rate
                        //178: +25% faster weapon switch
                        //144: Quick-fix speed/jump effects
                        //11: +50% overheal bonus
                }
                default:
                {
                    // frog.
                }
            }
            SetEntPropFloat(weapon, Prop_Send, "m_flChargeLevel", 0.40);

            if(GetIndexOfWeaponSlot(client, TFWeaponSlot_Melee)==142)  //Gunslinger (Randomizer, etc. compatability)
            {
                SetEntityRenderMode(weapon, RENDER_TRANSCOLOR);
                SetEntityRenderColor(weapon, 255, 255, 255, 75);
            }
        }
Starblaster64 commented 9 years ago

@shadow93 The second method for dropped weapons you presented isn't needed, just change 'tf_dropped_weapon_lifetime' CVAR to 0.

50Wliu commented 9 years ago

Where do i put this? ^

It's already in the latest 1.10.6 beta (build 225 on Jenkins I believe). If you want to do it yourself place it in OnEntityCreated().

GhostieSFM commented 9 years ago

Alright. Is there anyway I can get the 1.10.6 beta? Also is it cfg/sourcemod/ff2?

50Wliu commented 9 years ago

http://ff2.50dkp.com/jenkins/job/FF2/SMVERSION=1.7/ Could you clarify a bit about the cfg part?

GhostieSFM commented 9 years ago

nvm and do I download Last Successful Artifacts?

GhostieSFM commented 9 years ago

I added the 1.7 and it still crashes.

50Wliu commented 9 years ago

I added the 1.7 and it still crashes.

TF2Items 1.6.2.

shadow93 commented 9 years ago

And to save yourself from the clusterfuck of code involved for sniper rifles:

                // Sniper rifles & reskins
                new String:classname[64];
                GetEdictClassname(weapon, classname, sizeof(classname));
                if(!StrContains(classname, "tf_weapon_sniperrifle") && (index!=230 || index!=402 || index!=526 || index!=752))
                {
                    if(CheckRoundState()!=FF2RoundState_RoundOver)
                    {
                        new Float:chargelevel=(IsValidEntity(weapon) && weapon>MaxClients ? GetEntPropFloat(weapon, Prop_Send, "m_flChargedDamage") : 0.0);
                        new Float:time=(GlowTimer[boss]>10 ? 1.0 : 2.0);
                        time+=(GlowTimer[boss]>10 ? (GlowTimer[boss]>20 ? 1.0 : 2.0) : 4.0)*(chargelevel/100.0);
                        SetClientGlow(boss, time);
                        if(GlowTimer[boss]>30.0)
                        {
                            GlowTimer[boss]=30.0;
                        }
                    }
                }
shadow93 commented 9 years ago

More clusterfuck for SMG's and Pistols:

ClientTimer

                // SMG, Crusader's Crossbow, Huntsman & Reskins (except Cleaner's Carbine)
                GetEdictClassname(weapon, classname, sizeof(classname));
                if(!StrContains(classname, "tf_weapon_smg") && index!=751 || !StrContains(classname, "tf_weapon_compound_bow") || !StrContains(classname, "tf_weapon_crossbow"))
                {
                    addthecrit=true;
                }

                if(!StrContains(classname, "tf_weapon_pistol") || !StrContains(classname, "tf_weapon_handgun_scout_secondary")) // Pistols & Reskins (Scout & Engy)
                {
                    addthecrit=true;
                    if(class==TFClass_Scout && cond==TFCond_HalloweenCritCandy)
                    {
                        cond=TFCond_Buffed;
                    }
                }

also futureproofs any new pistols, SMG's, crossbows (medic/snipers)

sarysa commented 9 years ago

This is also on the forums, but my proposal for the spy fix:

https://github.com/sarysa/diffposting/commit/da4d912956b5a1af11abe966b38e8c317ba1af64

There is one side effect I found in testing, and it's that FF2's low damage tripling isn't applied until after this point, which causes bleed/fire damage to not be tripled (not that I consider this a bad thing, heh) but also since it seems the intention was to have invis watch spies take 85 damage, they'll only take 65 damage from weapons without +200% on them. The solution is simply to move the damage tripling to before this point.

Oh, and possible improvements to the above diff include:

50Wliu commented 9 years ago

Adding cvars so server operators can override various spy damage.

I'm going to keep everything hardcoded for v1 because it seems a bit inconsistent to only allow some variables to be changed and not others.

Still mulling over the other changes though. Weapon balancing is tricky :(.

shadow93 commented 9 years ago

I just noticed that sniper rifles no longer get critboosted since at least 1.10.5 or so....

..while description says that all Sniper weapons are critboosted (except carbine / Cozy Camper SMG)

50Wliu commented 9 years ago

I just noticed that sniper rifles no longer get critboosted since at least 1.10.5 or so....

Yeah, so did I. They still do 150 damage though...shrugs

Starblaster64 commented 9 years ago

In 67ee121, line 4627, you've unintentionally made the Shortstop minicrit boosted. Change it to 'tf_weapon_handgun_scout_secondary' to fix.

Starblaster64 commented 9 years ago

Speaking of rifles, the Sydney Sleeper is extremely broken right now. Because you've set FF2 to simply check if the Jarate condition is added, the Sydney Sleeper removes 8% rage every scoped shot.

50Wliu commented 9 years ago

@Starblaster64 both fixed. For some reason the additional info in the commit message didn't go through and reference this issue.

50Wliu commented 9 years ago

I just noticed that sniper rifles no longer get critboosted since at least 1.10.5 or so....

Fixed in 7b5137596df0e5a31a9bd49cc5cda67db7ce6854.

50Wliu commented 9 years ago

Closing since I think everything's updated.

Starblaster64 commented 9 years ago

-snip-

I could not be more ignorant, completely missed 4ae0b1a.

Just keep in mind that this method will make bosses that use invisi-watches get a 90% damage reduction while cloaked.

EDIT: I've noticed you didn't change the length of the Dead Ringer condition, was this an intentional balance choice?

50Wliu commented 9 years ago

Just keep in mind that this method will make bosses that use invisi-watches get a 90% damage reduction while cloaked.

What was the resistance before Gunmettle?

EDIT: I've noticed you didn't change the length of the Dead Ringer condition, was this an intentional balance choice?

Kinda. I want to see how it plays out and then adjust accordingly.

Starblaster64 commented 9 years ago

0%, invisi-watches didn't grant bosses any damage resistance unless it was set in an ability subplugin or something. Also sort of related, from what I understand, bosses with the Dead Ringer just die when they trigger the feign death, but I remember this not always being the case (see Koishi Komeiji).