Back to home

Ana Paintball FFA

771HP
click to copy
This game is archived.
If you with to unarchive it, click the "restore" button in the options menu.

Thumbnail for Ana Paintball FFA

Category:
Custom game mode

Author:
thenickm2

Rating:
0

Version:
2.2.0

Posted:
17 days ago

Last updated:
2 days ago

Tags:
ana paintball quick queue games queue queueing

Share this workshop!

Options

Ana Simple Ana Paintball

Just a simple version of Ana Paintball that I created. Features:

  • Kill streak based ultimate (adjustable in workshop settings)
  • Ultimate increases health, movement speed, and allows you to throw a biotic grenade
  • Paint splatter effect when you shoot (each player gets their own color)
  • Easily configurable settings (damage done, damage received, max health, etc.)
settings
{
    main
    {
        Description: "v2.2.0 | By TheNickm2#6969 on Discord (TheNickm2 on XBL)"
    }
    lobby
    {
        Allow Players Who Are In Queue: Yes
        Map Rotation: After A Game
        Max FFA Players: 8
        Max Spectators: 8
        Return To Lobby: Never
    }
    modes
    {
        General
        {
            Enemy Health Bars: Off
            Game Mode Start: Immediately
            Hero Limit: Off
            Respawn Time Scalar: 50%
            Allow Hero Switching: Off
        }
        Deathmatch
        {
            Self Initiated Respawn: Off
            Score To Win: 25
            disabled maps
            {
                Ilios Lighthouse
                Ilios Ruins
                Ilios Well
                Lijiang Control Center
                Lijiang Control Center Lunar New Year
                Lijiang Garden
                Lijiang Garden Lunar New Year
                Lijiang Night Market
                Lijiang Night Market Lunar New Year
                Nepal Sanctum
                Nepal Shrine
                Nepal Village
                Oasis City Center
                Oasis Gardens
                Oasis University
                Workshop Chamber
                Workshop Expanse Night
                Workshop Expanse
                Workshop Island Night
                Workshop Island
            }
        }
    }
    heroes
    {
        General
        {
            Ana
            {
                Ammunition Clip Size Scalar: 140%
                Biotic Grenade: Off
                Sleep Dart Cooldown Time: 50%
                Biotic Grenade Cooldown Time: 200%
                Ultimate Generation Nano Boost: 10%
                Ultimate Generation - Combat Nano Boost: 0%
                Ultimate Generation - Passive Nano Boost: 0%
            }

            enabled heroes
            {
                Ana
            }
        }
    }
}

variables
{
    global:
        0: _extendedGlobalCollection
        1: _arrayBuilder
        2: StandardDmgDealt
        3: StanadardDmgReceived
        4: StandardMaxHealth
        5: StandardMoveSpeed
        6: StandardGravity
        7: NanoDmgDealt
        8: NanoDmgReceived
        9: NanoMaxHealth
        10: NanoMoveSpeed
        11: NanoGravity
        12: NanoKillStreak
        13: ScoreToWin
        14: ScopeTimeLimit
        15: CurrentVersion
    player:
        0: _extendedPlayerCollection
        1: killStreak
        2: hudText
        3: nanoEffect
        4: i
        5: randInt
        6: paintballColor
}

// Extended collection variables:
// global [0]: _arrayBuilderStore

rule("Change Settings Here")
{

    event
    {
        Ongoing - Global;
    }

    // Action count: 13
    actions
    {
        Set Global Variable(StandardDmgDealt, 35.174);
        Set Global Variable(StanadardDmgReceived, 3125);
        Set Global Variable(StandardMaxHealth, 12.5);
        Set Global Variable(StandardMoveSpeed, 100);
        Set Global Variable(StandardGravity, 100);
        Set Global Variable(NanoDmgDealt, 200);
        Set Global Variable(NanoDmgReceived, 200);
        Set Global Variable(NanoMaxHealth, 24.5);
        Set Global Variable(NanoKillStreak, 5);
        Set Global Variable(NanoMoveSpeed, 150);
        Set Global Variable(NanoGravity, 75);
        Set Global Variable(ScopeTimeLimit, 1.25);
        Set Global Variable(ScoreToWin, 25);
    }
}

rule("Quick Start Game")
{

    event
    {
        Ongoing - Global;
    }

    // Action count: 3
    actions
    {
        Set Match Time(0);
        Set Objective Description(All Players(Team(All)), Custom String("Eliminate Other Players", Null, Null, Null), String);
        Set Global Variable(CurrentVersion, Custom String("2.2.0", Null, Null, Null));
    }
}

rule("Set Time & Description")
{

    event
    {
        Ongoing - Global;
    }

    conditions
    {
        Is Game In Progress == True;
    }

    // Action count: 1
    actions
    {
        Set Match Time(3600);
    }
}

rule("Set Up Player Dmg/Health/HUD Text")
{

    event
    {
        Ongoing - Each Player;
        All;
        All;
    }

    conditions
    {
        Is Game In Progress == True;
    }

    // Action count: 30
    actions
    {
        Set Damage Dealt(Event Player, Global Variable(StandardDmgDealt));
        Set Damage Received(Event Player, Global Variable(StanadardDmgReceived));
        Set Max Health(Event Player, Global Variable(StandardMaxHealth));
        Set Move Speed(Event Player, Global Variable(StandardMoveSpeed));
        Set Gravity(Event Player, Global Variable(StandardGravity));
        Create Hud Text(Event Player, Null, Null, Custom String("Current Elimination Streak: {0}", Player Variable(Event Player, killStreak), Null, Null), Top, 105, White, White, White, Visible To Sort Order and String, Default Visibility);
        Set Player Variable At Index(Event Player, hudText, 0, Last Text ID);
        Create Hud Text(Event Player, Null, Null, Custom String("Ana Paintball v{0} By TheNickm2", Global Variable(CurrentVersion), Null, Null), Left, 5, White, White, White, Visible To Sort Order and String, Default Visibility);
        Set Player Variable At Index(Event Player, hudText, 1, Last Text ID);
        Create Hud Text(Event Player, Null, Null, Custom String("Rules: 1) No Hard Scoping ({0} second limit)", Global Variable(ScopeTimeLimit), Null, Null), Left, 10, White, White, White, Visible To Sort Order and String, Default Visibility);
        Set Player Variable At Index(Event Player, hudText, 2, Last Text ID);
        Create Hud Text(Event Player, Null, Null, Custom String("2) No melee kills allowed (you can still melee railings)", Null, Null, Null), Left, 15, White, White, White, Visible To Sort Order and String, Default Visibility);
        Set Player Variable At Index(Event Player, hudText, 3, Last Text ID);
        Create Hud Text(Event Player, Null, Null, Custom String("3) Nano boost is rewarded for an elimination streak of {0}", Global Variable(NanoKillStreak), Null, Null), Left, 20, White, White, White, Visible To Sort Order and String, Default Visibility);
        Set Player Variable At Index(Event Player, hudText, 4, Last Text ID);
        Create Hud Text(Event Player, Null, Null, Custom String(" - Nano boost doubles your health, increases speed, and gives you a grenade", Null, Null, Null), Left, 25, White, White, White, Visible To Sort Order and String, Default Visibility);
        Set Player Variable At Index(Event Player, hudText, 5, Last Text ID);
        Create Hud Text(Event Player, Null, Null, Custom String("4) First player to {0} eliminations wins", Global Variable(ScoreToWin), Null, Null), Left, 30, White, White, White, Visible To Sort Order and String, Default Visibility);
        Set Player Variable At Index(Event Player, hudText, 6, Last Text ID);
        Create Hud Text(Event Player, Null, Null, Custom String("Press Interact (F or (L) by default) to hide this info", Null, Null, Null), Left, 35, White, White, White, Visible To Sort Order and String, Default Visibility);
        Set Player Variable At Index(Event Player, hudText, 7, Last Text ID);
        If(Compare(Host Player, ==, Event Player));
        	Create Hud Text(Event Player, Null, Null, Custom String("Server Load: {0} | Average: {1} | Peak: {2}", Server Load, Server Load Average, Server Load Peak), Left, 0, White, White, White, Visible To Sort Order and String, Visible Never);
        	Create Hud Text(Event Player, Null, Null, Custom String("Thank you for hosting this game!", Null, Null, Null), Left, 1, White, White, White, Visible To Sort Order and String, Visible Never);
        	Set Player Variable At Index(Event Player, hudText, 8, Last Text ID);
        	Create Hud Text(Event Player, Null, Null, Custom String("Please keep the game updated and check for a newer version.", Null, Null, Null), Left, 2, White, White, White, Visible To Sort Order and String, Visible Never);
        	Set Player Variable At Index(Event Player, hudText, 9, Last Text ID);
        	Create Hud Text(Event Player, Null, Null, Custom String("https://cutt.ly/ana-paintball", Null, Null, Null), Left, 3, White, White, White, Visible To Sort Order and String, Visible Never);
        	Set Player Variable At Index(Event Player, hudText, 10, Last Text ID);
        End;
    }
}

rule("Hide Info Text On Interact")
{

    event
    {
        Ongoing - Each Player;
        All;
        All;
    }

    conditions
    {
        Is Game In Progress == True;
        Is Button Held(Event Player, Interact) == True;
    }

    // Action count: 5
    actions
    {
        Set Player Variable(Event Player, i, 1);
        While(Compare(Player Variable(Event Player, i), <, Count Of(Player Variable(Event Player, hudText))));
        	Destroy Hud Text(Value In Array(Player Variable(Event Player, hudText), Player Variable(Event Player, i)));
        	Modify Player Variable(Event Player, i, Add, 1);
        End;
    }
}

rule("Sleep Dart Instant Kill")
{

    event
    {
        Player took damage;
        All;
        All;
    }

    // Action count: 4
    actions
    {
        Wait(0.016, Ignore Condition);
        If(And(Has Status(Victim, Asleep), Not(Is Using Ultimate(Victim))));
        	Kill(Victim, Attacker);
        End;
    }
}

rule("Quick Scopes Only")
{

    event
    {
        Ongoing - Each Player;
        All;
        All;
    }

    conditions
    {
        Is Firing Secondary(Event Player) == True;
        Is Game In Progress == True;
    }

    // Action count: 3
    actions
    {
        Wait(Global Variable(ScopeTimeLimit), Abort When False);
        Set Status(Event Player, Null, Stunned, 0.5);
        Small Message(Event Player, Custom String("{0} No Hard Scoping", Icon String(Warning), Null, Null));
    }
}

rule("No Melee Kills")
{

    event
    {
        Ongoing - Each Player;
        All;
        All;
    }

    conditions
    {
        Distance Between(Event Player, Closest Player To(Event Player, Team(All))) <= 4;
    }

    // Action count: 1
    actions
    {
        Set Melee Enabled(Event Player, False);
    }
}

rule("Re-Enable Melee")
{

    event
    {
        Ongoing - Each Player;
        All;
        All;
    }

    conditions
    {
        Distance Between(Event Player, Closest Player To(Event Player, Team(All))) > 4;
    }

    // Action count: 1
    actions
    {
        Set Melee Enabled(Event Player, True);
    }
}

rule("Reset Kill Streak on Death")
{

    event
    {
        Player died;
        All;
        All;
    }

    // Action count: 2
    actions
    {
        Set Ultimate Charge(Event Player, 0);
        Set Player Variable(Event Player, killStreak, 0);
    }
}

rule("Elimination Earned")
{

    event
    {
        Player dealt final blow;
        All;
        All;
    }

    // Action count: 12
    actions
    {
        If(And(Not(Is Using Ultimate(Attacker)), Compare(Ultimate Charge Percent(Event Player), <, 100)));
        	Set Ultimate Charge(Attacker, Add(Ultimate Charge Percent(Attacker), Divide(100, Global Variable(NanoKillStreak))));
        End;
        Modify Player Variable(Attacker, killStreak, Add, 1);
        Set Player Variable(Event Player, randInt, Random Integer(0, 100));
        If(And(Compare(Player Variable(Event Player, randInt), >=, 0), Compare(Player Variable(Event Player, randInt), <=, 40)));
        	Communicate(Attacker, Hello);
        Else If(And(Compare(Player Variable(Event Player, randInt), >, 40), Compare(Player Variable(Event Player, randInt), <=, 75)));
        	Communicate(Attacker, Thanks);
        Else If(Compare(Player Variable(Event Player, randInt), >, 75));
        	Communicate(Attacker, Voice Line Up);
        End;
    }
}

rule("Ultimate Ability Started")
{

    event
    {
        Ongoing - Each Player;
        All;
        All;
    }

    conditions
    {
        Is Using Ultimate(Event Player) == True;
    }

    // Action count: 8
    actions
    {
        Set Damage Dealt(Event Player, Global Variable(NanoDmgDealt));
        Set Damage Received(Event Player, Global Variable(NanoDmgReceived));
        Set Max Health(Event Player, Global Variable(NanoMaxHealth));
        Set Move Speed(Event Player, Global Variable(NanoMoveSpeed));
        Set Gravity(Event Player, Global Variable(NanoGravity));
        Set Ability 2 Enabled(Event Player, True);
        Create Effect(All Players(Team(All)), Good Aura, Red, Event Player, 0.75, Visible To Position and Radius);
        Set Player Variable(Event Player, nanoEffect, Last Created Entity);
    }
}

rule("Ultimate Ability Ended")
{

    event
    {
        Ongoing - Each Player;
        All;
        All;
    }

    conditions
    {
        Not(Is Using Ultimate(Event Player)) == True;
    }

    // Action count: 8
    actions
    {
        Wait(0.2, Ignore Condition);
        Set Damage Dealt(Event Player, Global Variable(StandardDmgDealt));
        Set Damage Received(Event Player, Global Variable(StanadardDmgReceived));
        Set Max Health(Event Player, Global Variable(StandardMaxHealth));
        Set Move Speed(Event Player, Global Variable(StandardMoveSpeed));
        Set Gravity(Event Player, Global Variable(StandardGravity));
        Set Ability 2 Enabled(Event Player, False);
        Destroy Effect(Player Variable(Event Player, nanoEffect));
    }
}

rule("Paintball Splatter Effects")
{

    event
    {
        Ongoing - Each Player;
        All;
        All;
    }

    conditions
    {
        Is Firing Primary(Event Player) == True;
    }

    // Action count: 40
    actions
    {
        Set Player Variable(Event Player, paintballColor, Slot Of(Event Player));
        Skip(Value In Array(Array(38, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36), Add(Index Of Array Value(Array(0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 7, 11, 12), Player Variable(Event Player, paintballColor)), 1)));
        Play Effect(All Players(Team(All)), Ring Explosion, Aqua, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, Aqua, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
        Skip(35);
        Play Effect(All Players(Team(All)), Ring Explosion, Blue, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, Blue, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
        Skip(32);
        Play Effect(All Players(Team(All)), Ring Explosion, Green, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, Green, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
        Skip(29);
        Play Effect(All Players(Team(All)), Ring Explosion, Lime Green, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, Lime Green, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
        Skip(26);
        Play Effect(All Players(Team(All)), Ring Explosion, Orange, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, Orange, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
        Skip(23);
        Play Effect(All Players(Team(All)), Ring Explosion, Purple, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, Purple, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
        Skip(20);
        Play Effect(All Players(Team(All)), Ring Explosion, Red, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, Red, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
        Skip(17);
        Play Effect(All Players(Team(All)), Ring Explosion, Turquoise, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, Turquoise, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
        Skip(14);
        Play Effect(All Players(Team(All)), Ring Explosion, White, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, White, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
        Skip(11);
        Play Effect(All Players(Team(All)), Ring Explosion, Yellow, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, Yellow, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
        Skip(8);
        Play Effect(All Players(Team(All)), Ring Explosion, Sky Blue, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, Sky Blue, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
        Skip(5);
        Play Effect(All Players(Team(All)), Ring Explosion, Team1, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, Team1, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
        Skip(2);
        Play Effect(All Players(Team(All)), Ring Explosion, Team2, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 2.25);
        Play Effect(All Players(Team(All)), Bad Explosion, Team2, Ray Cast Hit Position(Eye Position(Event Player), Add(Eye Position(Event Player), Multiply(Facing Direction Of(Event Player), 200)), Null, Event Player, True), 0.25);
    }
}

Changelog

2 days ago 2.2.0

  • Updated for Overwatch patch 1.48

771HP
click to copy
15 days ago 2.1.0

  • Fix minor issues
  • Decreased gravity for nano players
  • Add aura to nano players

771HP
click to copy
15 days ago 2.1.0

  • Fix minor issues
  • Decreased gravity for nano players
  • Add aura to nano players

7HZE5
click to copy
15 days ago 2.1.0

  • Fix minor issues
  • Decreased gravity for nano players
  • Add aura to nano players

HAGRA
click to copy
15 days ago 2.0.0

  • Rewrote entire script from scratch

7WRSY
click to copy
15 days ago 2.0.0

  • Rewrote entire script from scratch

3D5M2
click to copy
16 days ago 1.1.1

  • Fix minor issues with string display

5BA4C
click to copy
16 days ago 1.1.0

  • Added Nano Boost (gives you 2x health allowing you to take a shot without dying)
  • Fixed a scoring bug

F86JV
click to copy
17 days ago 1.0.0

This revision contains no notes

6YKHX
click to copy
17 days ago 1.0.0

This revision contains no notes

166030
click to copy