2.1 PvP Modifier 1.0

Fixes broken pvp mechanics, as well as automatic custom items, homing weapons, and other features!

  1. Johuan
    API Version:
    2.1
    TShock Version:
    4.3.26
    Source URL:
    https://github.com/Interverse/PvPModifier
    This plugin allows for weapons, projectiles, and other mechanics to be changed in pvp for a custom pvp experience.

    Plugin Features:

    Custom pvp weapons

    Weapon stats can be modified specifically for pvp. As soon as the player leaves pvp, their weapons are reset back to their default values.

    Example:
    [​IMG]
    Note: While the prefixes do have an effect on the weapon, their tooltips will be nonsense like this. The tooltip bonuses are calculated after the stat changes, so they will not represent the true prefix bonuses.

    The list of stats that can be changed are:
    • Damage (d)
    • Knockback (kb)
    • UseAnimation (ua)
    • UseTime (ut)
    • Shoot (s)
    • ShootSpeed (ss)
    • AmmoIdentifier (ai)
    • UseAmmoIdentifier (uai)
    • NotAmmo (na)
    • Inflict Buff ID/Duration (ibid, ibd) (duration is 60 = 1 second)
    • Receive Buff ID/Duration (rbid, rbd) (duration is 60 = 1 second)
    To change the weapon stats, use /modpvp item <ID/Name> <stat> <number> ...

    Example usage for this laser rifle is /mp i "laser rifle" d 600 ss 999 ut 0 kb 40 ibid 70 ibd 120 rbid 58 rbd 60
    This changes the laser rifle to do 600 base damage, have a shootspeed of 999, a usetime of 0, a knockback of 40, inflict Venom for 2 seconds, and give the user Rapid Heading for 1 second.
    Buffs will only activate when the weapon hits someone.

    You can chain as many stats on a weapon as you want to change.


    Note: When using modified weapons, BoringBows may appear in your inventory. This is normal.
    The custom items are given as item drops, so those BoringBows are meant as placeholders so your inventory keeps the same order.

    Projectile modification

    Projectiles can have their velocity multiplied by some number, or have their projectile replaced by another. This can lead to things like shown below.

    [​IMG]

    In this case, the rain projectile has been replaced by a tempest shark and had its velocity multiplied by 2. The command to do this is /mp p 239 s 408 vm 2

    The stats can be changed for projectiles are:
    • Shoot (s)
    • VelocityMultiplier (vm)
    • Damage (d)
    • HomingRadius (hr)
    • AngularVelocity (av)
    • Inflict Buff ID/Duration (ibid, ibd) (duration is 60 = 1 second)
    • Receive Buff ID/Duration (rbid, rbd) (duration is 60 = 1 second)

    Buff Spreading

    Buffs can have these stats changed:
    • Inflict Buff ID/Duration
    • Receive Buff ID/Duration
    This can lead to mechanics such as spreading cursed inferno, which is shown below.

    [​IMG]

    The command to do this is /mp b 39 ibid 39 ibd 120
    This makes a person who has Cursed Inferno to inflict anyone they hit with Cursed Inferno for 2 seconds.

    Of course, they can spread any buff they want.

    Homing Projectiles
    Projectiles now have a homing radius and an angular velocity. Angular velocity is measured in degrees per frame (1/60 seconds). aka how fast the projectile turns.

    [​IMG]

    These only apply to projectiles. To modify a projectile's homing radius or angular velocity, type /modpvp projectile <projectile ID/name> homingradius <number> angularvelocity <number>

    For short, you can type /mp p <id/name> hr <number> av <number>

    You do not need to include both homing radius and angular velocity in order to modify them. (I.e. /mp p <id/name> av <number> works just fine)

    Custom Invincibility Frames

    In vanilla pvp, pvpers normally have some seconds of invulnerability time after being hit and ignore any other pvp damage. This plugin makes it so you can have custom iframe time. The default iframe time is 0, which makes it so every attack actually hits.

    Custom Knockback

    This plugin has custom knockback. Instead of having the same knockback in every weapon, the plugin will knock a player back depending on the weapon's knockback and where they are from the target.

    This example shows a person being hit by Slap Hand (With Titan and knockback accessories).
    [​IMG]

    Vanilla Fixes
    Some mechanics that were previously broken in vanilla pvp has been fixed with this plugin. Those mechanics are listed below.
    • Thorns/Turtle
    • Nebula
    • Frost Armor
    • Yoyo Bag
    • Spectre Mask
    • Medusa Head
    • Flasks

    Commands:
    All commands can be abbreviated by their syllables.

    /modpvp or /mp (Permission: "pvpmodifier.modpvp")
    Syntax:
    • /modpvp [item/projectile/buff] [ID/name] [attribute] [value]
    • /modpvp config [config value] [value]
    To get help on what attributes are valid for some type (item/projectile/buff), type /mp help [database/config] to get a list of attributes.

    Examples:
    • /mp i "crystal storm" ut 0 d 500 makes the crystal storm have a usetime of 0 and have a base damage of 500.
    • /mp p 636 hr 10 av 5 makes the daybreak projectile home in when it finds a target within 10 blocks and turns at an angular velocity of 5 degrees per tick.
    • /mp b 52 ibid 163 ibd 60 makes you inflict a person with Obstructed for 2 seconds when you have Tiki Spirit buff (which is a pet)

    /resetpvp or /rpvp (Permission: "pvpmodifier.resetpvp")
    Syntax: /resetpvp [config/database/item/projectile/buff] [optional: item name or id]

    • config
      • Resets the config to its original values
    • database
      • Resets the database to its original values
    • item
      • Requires item name or ID
      • Resets an item's stats
    • projectile
      • Requires projectile name or ID
      • Resets an projectile's stats
    • buff
      • Requires buff name or ID
      • Resets an buff's stats

    /checkstat or /cs (Permission: None)
    Syntax: /checkstat [item/projectile/buff] [item name or id]

    Shows the current database stats for an item.

    /dpsify (Permission: "pvpmodifier.dpsify")
    Syntax: /dpsify <number>

    This will attempt to change every weapon's damage to do the same dps based off this formula: sqrt(dps^2 * useAnimation / 60)

    This is a good starting point, but it is still expected to balance any other weapon that may seem to do too much damage.

    YOU CANNOT REVERT THIS CHANGE
    Skilz and Kojiro_S like this.