Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PA Attack System V2 Information
- Hello! This documentation is split into chapters. If you would like to jump to a
- chapter, you can press Ctrl+F to search and it will be found easily.
- --------------------------------------------------------------------------------
- CHAPTERS
- Chapter 1: What is PA ASV2?
- (starts on line 47)
- Chapter 2: Implementing PA ASV2
- (starts on line 155)
- Chapter 3: Closing Thoughts and Reminders
- (starts on line 318)
- --------------------------------------------------------------------------------
- --------------------------------------------------------------------------------
- CHAPTER 1
- Chapter 1: What is PA ASV2?
- --------------------------------------------------------------------------------
- PA ASV2 is a remade version of the PA ServerModules for attacks.
- All 173 attacks (plus some missing ones) have been rewritten and faithfully
- recreated, except it’s much neater.
- Repeated code is, instead of being copy-pasted, linked to two ModuleScripts
- containing subroutines for melees, projectiles, AoEs, and more. So, if you
- want to perform large-scale edits for things like "reworking velocity" or
- similar, this is going to save you A LOT of time!
- You can implement it non-destructively in your game with Chapter 2's guide.
- Basically, just follow the instructions, run the code, and it will sort
- everything out.
- (This is a note of warning. When you pass the properties of a ParticleEmitter
- or PointLight to a subroutine, you need to surround it with brackets. This is
- so that you can give multiple particles and lights to an attack.)
- Some moves have been changed (NOT 1:1 recreations)! Here they are:
- Confusion, FutureSight, HealPulse, Hypnosis, Moonlight, Present, Psychic,
- Recover, Spore, WaterPulse, WaterShuriken - Sparkles particle changed
- (not Synthesis and Wish tho)
- Curse, FrostBreath, LavaPlume, MistBall, MudBomb, PoisonSting, SheerCold,
- SludgeBomb, Venoshock, WaterPulse, Whirlpool - Smoke particle changed
- MagmaStorm, ShadowBall, Will-O-Wisp - Fire particle changed
- EchoedVoice - Visual hitbox is more representative
- Ingrain - Less janky
- RockThrow, Smog, WaterGun - Now properly has a random size
- (not TBolt or Thunder tho)
- JumpKick - Now mechanically consistent with HighJumpKick
- Avalanche, RockSlide - 5 DMG per hit ---> 10 DMG per hit
- NightShade - Now deals damage equal to user's level
- Psywave - Now deals a random number of damage (50%-150% of level)
- Swift - 10% Crit ---> 40% Crit
- SonicBoom - 10% Crit ---> 40% Crit; Now explodes on hit
- LeechSeed - Now drains +3 HP per hit
- Present - Increased chance for "stronger" presents
- Curse - 50% Max HP Loss ---> 20% Max HP Loss
- SandAttack - Gives +40 BaseSpeed for 3 seconds
- Self-Destruct - The user survives on 1 HP
- ShellSmash - +11 BaseSpeed and +11 WS ---> +20 BaseSpeed and +5 WS
- WaterShuriken - Turns into a 75 DMG barrage when used as Ash-Greninja
- WATERSHURIKEN ONE IS VERY COOL!!! YOU CAN USE THIS FOR YOUR OWN MOVES EASILY!
- These moves were added:
- LovelyKiss - A non-damaging melee that stuns for 5s
- WaterSpout - An AoE that deals the user's HP as a percentage multiplied by 150
- Rest - Stuns for 10s, heals 100% of the user's HP
- Explosion - 50 range 250 DMG AoE, but the user lives on 1 HP and stunned 10s
- PhantomForce - Invisible (but not invincible) for 2s, then shockwave
- Dig - Semi-invisible and invincible for 2s, then melee
- PopulationBomb - Melee that bombards the target (landing earlier = more hits)
- Crit Rate Guide:
- Every AoE (Blizzard, Boomburst, BugBuzz, DarkPulse, Discharge, Earthquake,
- EchoedVoice, HyperVoice, NightShade, PowderSnow, Psywave, Self-Destruct,
- MagmaStorm, WaterSpout (NEW), Explosion (NEW)), FrostBreath, Absorb,
- MegaDrain, GigaDrain - 0% Crit
- All Other Damaging Moves - 10% Crit
- BulletSeed, PinMissile - 10% Crit, but rolls crit outside of the loop
- MuddyWater - 11.111% Crit
- Avalanche - 20% Crit
- AirCutter, AirSlash - 22.222% Crit
- SonicBoom (NEW), Swift (NEW) - 40% Crit
- I worked very hard to create this for people to use. Thank you for using it!
- --------------------------------------------------------------------------------
- CHAPTER 2
- Chapter 2: Implementing PA ASV2
- --------------------------------------------------------------------------------
- Part 1:
- First, import the rbxm file of ASV2 (right click, then press Insert From File)
- into game > StarterGui > SkillsGui > WeaponsController.
- This is just to make sure the next few steps go smoothly.
- Once you've done that:
- 1. Take the contents of the ClientModules and move it into the ClientModules
- folder of your game. (This just makes sure you can use the new moves.)
- 2. Drag the SubOperations folder and have it parented directly to the
- WeaponsController. This means that it, ServerModules, and ClientModules
- (and I guess ASV2) are all siblings under WeaponsController.
- Part 2:
- Next, go to ServerScriptService > WeaponHandler and write this code under
- the part where it clones everything (this is Line 4 for me):
- game.StarterGui.SkillsGui.WeaponsController.SubOperations:Clone().Parent = script
- local loadedAttacks = {}
- Then, change the OnClientConnection function to say this:
- function OnClientConnection(...)
- local args = {...}
- if args[2] == "RunWeapon" then
- if not loadedAttacks[args[3]] then
- if script.ServerModules:FindFirstChild(args[3]) then
- loadedAttacks[args[3]] = require(script.ServerModules[args[3]])
- end
- end
- loadedAttacks[args[3]](args[1], nil, args[4], args[5])
- end
- end
- Alternatively, simply paste this code into WeaponHandler, replacing everything
- that's already there.
- --------------------------------------------------------------------------------
- local func = game:GetService("ReplicatedStorage"):WaitForChild("WEAPONFUNCTION")
- game.StarterGui.SkillsGui.WeaponsController.ServerModules:Clone().Parent = script
- game.StarterGui.SkillsGui.WeaponsController.ClientModules:Clone().Parent = script
- game.StarterGui.SkillsGui.WeaponsController.SubOperations:Clone().Parent = script
- local loadedAttacks = {}
- function OnClientConnection(...)
- local args = {...}
- if args[2] == "RunWeapon" then
- if not loadedAttacks[args[3]] then
- if script.ServerModules:FindFirstChild(args[3]) then
- loadedAttacks[args[3]] = require(script.ServerModules[args[3]])
- end
- end
- loadedAttacks[args[3]](args[1], nil, args[4], args[5])
- end
- end
- function func.OnServerInvoke(...)
- return OnClientConnection(...)
- end
- --------------------------------------------------------------------------------
- That's the hard part done!
- Part 3:
- You can now run the following code in the command line to implement the system
- easily. (The code is a bit further down. It's not up here.)
- Basically, it will iterate through all ServerModules in your game and check:
- 1: Is the move in ASV2?
- If no: Move it into a folder for safekeeping. (You, as the developer, can
- then check each of them and decide what you want to do with them.) (For
- example, if you have LusterPurge in your game, it will go here.)
- If yes: Ask question 2.
- 2: Are the contents of the move's script different from the vanilla code?
- If no: Move it into a folder for safekeeping. (For example, if you have
- reworked WaterPulse in your game, it will go here.)
- If yes: Move it into a folder marked for deletion. You should probably get
- rid of this folder, because ASV2 just has a better version of it.
- After both of those steps are complete, the contents of ASV2 ServerModules are
- then pasted into the ServerModules folder of your game.
- Here is the code.
- --------------------------------------------------------------------------------
- local newMoves = game.StarterGui.SkillsGui.WeaponsController.ASV2.ServerModules
- local vanillaExamples = game.StarterGui.SkillsGui.WeaponsController.ASV2.VanillaServerModules
- local inGameMoves = game.StarterGui.SkillsGui.WeaponsController.ServerModules
- local uniqueMoves = Instance.new("Folder", inGameMoves) --[[Moves unique to your game]]
- uniqueMoves.Name = "MovesYouCreated"
- local remadeMoves = Instance.new("Folder", inGameMoves) --[[Moves from vanilla that you remade]]
- remadeMoves.Name = "VanillaMovesYouRemade"
- local garbage = Instance.new("Folder", inGameMoves) --[[Moves in your game that I remade]]
- garbage.Name = "OldMoves (TO DELETE)"
- for i, move in pairs(inGameMoves:GetChildren()) do
- if move:IsA("ModuleScript") then
- if vanillaExamples:FindFirstChild(move.Name) then
- if move.Source==vanillaExamples[move.Name].Source then
- move.Parent = garbage
- else
- move.Parent = remadeMoves
- end
- else
- move.Parent = uniqueMoves
- end
- end
- end
- for i, newMove in pairs(newMoves:GetChildren()) do
- newMove.Parent = inGameMoves
- end
- print("All done!!!")
- --------------------------------------------------------------------------------
- After all of that, everything should be implemented properly! Congratulations!
- --------------------------------------------------------------------------------
- CHAPTER 3
- Chapter 3: Closing Thoughts and Reminders
- --------------------------------------------------------------------------------
- Remember to check other moves whenever you aren't sure of something.
- Basically, just use them as templates.
- Additionally, surrounding particleProperties and lightProperties with brackets
- like {} is usually a good plan of action, as most functions accept those
- arguments in that manner.
- Here is a list of all of the moves contained!
- local allTheMoves = {
- "WaterSpout",
- "LovelyKiss",
- "Rest",
- "Explosion",
- "Dig",
- "PhantomForce",
- "PopulationBomb",
- "Absorb",
- "Acid",
- "AcidArmor",
- "Agility",
- "AirCutter",
- "AirSlash",
- "AncientPower",
- "AquaTail",
- "AuraSphere",
- "AuroraBeam",
- "Autotomize",
- "Avalanche",
- "Bite",
- "Blizzard",
- "BodySlam",
- "BoneClub",
- "Boomburst",
- "Bounce",
- "BraveBird",
- "BrickBreak",
- "Bubble",
- "BubbleBeam",
- "BugBite",
- "BugBuzz",
- "BulletSeed",
- "Charge",
- "Charm",
- "CloseCombat",
- "Confusion",
- "Crunch",
- "Curse",
- "DarkPulse",
- "DefenseCurl",
- "Discharge",
- "Double-Edge",
- "DoubleHit",
- "DragonPulse",
- "DragonRage",
- "DragonRush",
- "DrainPunch",
- "DrillPeck",
- "EarthPower",
- "Earthquake",
- "EchoedVoice",
- "ElectroBall",
- "Ember",
- "FakeOut",
- "FeintAttack",
- "FirePunch",
- "FlameBurst",
- "FlameWheel",
- "Flamethrower",
- "FlareBlitz",
- "FlashCannon",
- "FrostBreath",
- "FutureSight",
- "GigaDrain",
- "GigaImpact",
- "Gust",
- "HammerArm",
- "Harden",
- "HealPulse",
- "HighJumpKick",
- "HornAttack",
- "Hurricane",
- "HydroPump",
- "HyperBeam",
- "HyperVoice",
- "Hypnosis",
- "IceBeam",
- "IcePunch",
- "IcyWind",
- "Inferno",
- "Ingrain",
- "IronDefense",
- "IronHead",
- "IronTail",
- "JumpKick",
- "LastResort",
- "LavaPlume",
- "LeafStorm",
- "Leafage",
- "LeechSeed",
- "MagicalLeaf",
- "MagmaStorm",
- "MegaDrain",
- "MegaPunch",
- "Megahorn",
- "MistBall",
- "Moonblast",
- "Moonlight",
- "Mud-Slap",
- "MudBomb",
- "MudShot",
- "MuddyWater",
- "NightShade",
- "NightSlash",
- "Nightmare",
- "OriginPulse",
- "PayDay",
- "Peck",
- "PetalBlizzard",
- "PinMissile",
- "PlayRough",
- "PoisonJab",
- "PoisonSting",
- "Pound",
- "PowderSnow",
- "Present",
- "Psychic",
- "PsychoCut",
- "Psystrike",
- "Psywave",
- "Rage",
- "RazorLeaf",
- "RazorShell",
- "Recover",
- "RockSlide",
- "RockThrow",
- "RollingKick",
- "Roost",
- "SandAttack",
- "Scratch",
- "SeedBomb",
- "Self-Destruct",
- "ShadowBall",
- "ShadowBone",
- "ShadowClaw",
- "ShadowSneak",
- "SheerCold",
- "ShellSmash",
- "Sketch",
- "SkullBash",
- "Slam",
- "SludgeBomb",
- "Smog",
- "Soft-Boiled",
- "SolarBeam",
- "SonicBoom",
- "Spark",
- "Splash",
- "Spore",
- "SteelWing",
- "StormThrow",
- "StringShot",
- "SuckerPunch",
- "Superpower",
- "Surf",
- "Swift",
- "Synthesis",
- "Tackle",
- "TailWhip",
- "TakeDown",
- "Thunder",
- "ThunderPunch",
- "ThunderShock",
- "Thunderbolt",
- "U-turn",
- "Venoshock",
- "VoltTackle",
- "WaterGun",
- "WaterPulse",
- "WaterShuriken",
- "Whirlpool",
- "Will-O-Wisp",
- "WingAttack",
- "Wish",
- "Withdraw",
- "WoodHammer",
- "X-Scissor",
- "Yawn",
- "ZapCannon",
- "ZenHeadbutt"
- }
- Created by Skit_y as a homage to Primpy's Pokemon Advanced
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement