Advertisement
IHATEMICROWAVEOVEN

PA Attack System V2 Info

Mar 4th, 2024
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.21 KB | None | 0 0
  1. PA Attack System V2 Information
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8. Hello! This documentation is split into chapters. If you would like to jump to a
  9. chapter, you can press Ctrl+F to search and it will be found easily.
  10.  
  11.  
  12. --------------------------------------------------------------------------------
  13. CHAPTERS
  14.  
  15. Chapter 1: What is PA ASV2?
  16. (starts on line 47)
  17.  
  18. Chapter 2: Implementing PA ASV2
  19. (starts on line 155)
  20.  
  21. Chapter 3: Closing Thoughts and Reminders
  22. (starts on line 318)
  23.  
  24. --------------------------------------------------------------------------------
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46. --------------------------------------------------------------------------------
  47. CHAPTER 1
  48. Chapter 1: What is PA ASV2?
  49. --------------------------------------------------------------------------------
  50.  
  51.  
  52. PA ASV2 is a remade version of the PA ServerModules for attacks.
  53.  
  54. All 173 attacks (plus some missing ones) have been rewritten and faithfully
  55. recreated, except it’s much neater.
  56. Repeated code is, instead of being copy-pasted, linked to two ModuleScripts
  57. containing subroutines for melees, projectiles, AoEs, and more. So, if you
  58. want to perform large-scale edits for things like "reworking velocity" or
  59. similar, this is going to save you A LOT of time!
  60.  
  61. You can implement it non-destructively in your game with Chapter 2's guide.
  62. Basically, just follow the instructions, run the code, and it will sort
  63. everything out.
  64.  
  65. (This is a note of warning. When you pass the properties of a ParticleEmitter
  66. or PointLight to a subroutine, you need to surround it with brackets. This is
  67. so that you can give multiple particles and lights to an attack.)
  68.  
  69.  
  70.  
  71.  
  72. Some moves have been changed (NOT 1:1 recreations)! Here they are:
  73.  
  74. Confusion, FutureSight, HealPulse, Hypnosis, Moonlight, Present, Psychic,
  75. Recover, Spore, WaterPulse, WaterShuriken - Sparkles particle changed
  76. (not Synthesis and Wish tho)
  77. Curse, FrostBreath, LavaPlume, MistBall, MudBomb, PoisonSting, SheerCold,
  78. SludgeBomb, Venoshock, WaterPulse, Whirlpool - Smoke particle changed
  79. MagmaStorm, ShadowBall, Will-O-Wisp - Fire particle changed
  80.  
  81. EchoedVoice - Visual hitbox is more representative
  82. Ingrain - Less janky
  83. RockThrow, Smog, WaterGun - Now properly has a random size
  84. (not TBolt or Thunder tho)
  85. JumpKick - Now mechanically consistent with HighJumpKick
  86.  
  87. Avalanche, RockSlide - 5 DMG per hit ---> 10 DMG per hit
  88. NightShade - Now deals damage equal to user's level
  89. Psywave - Now deals a random number of damage (50%-150% of level)
  90. Swift - 10% Crit ---> 40% Crit
  91. SonicBoom - 10% Crit ---> 40% Crit; Now explodes on hit
  92. LeechSeed - Now drains +3 HP per hit
  93. Present - Increased chance for "stronger" presents
  94. Curse - 50% Max HP Loss ---> 20% Max HP Loss
  95. SandAttack - Gives +40 BaseSpeed for 3 seconds
  96. Self-Destruct - The user survives on 1 HP
  97. ShellSmash - +11 BaseSpeed and +11 WS ---> +20 BaseSpeed and +5 WS
  98. WaterShuriken - Turns into a 75 DMG barrage when used as Ash-Greninja
  99.  
  100. WATERSHURIKEN ONE IS VERY COOL!!! YOU CAN USE THIS FOR YOUR OWN MOVES EASILY!
  101.  
  102.  
  103.  
  104.  
  105. These moves were added:
  106.  
  107. LovelyKiss - A non-damaging melee that stuns for 5s
  108. WaterSpout - An AoE that deals the user's HP as a percentage multiplied by 150
  109. Rest - Stuns for 10s, heals 100% of the user's HP
  110. Explosion - 50 range 250 DMG AoE, but the user lives on 1 HP and stunned 10s
  111. PhantomForce - Invisible (but not invincible) for 2s, then shockwave
  112. Dig - Semi-invisible and invincible for 2s, then melee
  113. PopulationBomb - Melee that bombards the target (landing earlier = more hits)
  114.  
  115.  
  116.  
  117.  
  118. Crit Rate Guide:
  119.  
  120. Every AoE (Blizzard, Boomburst, BugBuzz, DarkPulse, Discharge, Earthquake,
  121. EchoedVoice, HyperVoice, NightShade, PowderSnow, Psywave, Self-Destruct,
  122. MagmaStorm, WaterSpout (NEW), Explosion (NEW)), FrostBreath, Absorb,
  123. MegaDrain, GigaDrain - 0% Crit
  124. All Other Damaging Moves - 10% Crit
  125. BulletSeed, PinMissile - 10% Crit, but rolls crit outside of the loop
  126. MuddyWater - 11.111% Crit
  127. Avalanche - 20% Crit
  128. AirCutter, AirSlash - 22.222% Crit
  129. SonicBoom (NEW), Swift (NEW) - 40% Crit
  130.  
  131.  
  132.  
  133.  
  134. I worked very hard to create this for people to use. Thank you for using it!
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156. --------------------------------------------------------------------------------
  157. CHAPTER 2
  158. Chapter 2: Implementing PA ASV2
  159. --------------------------------------------------------------------------------
  160.  
  161. Part 1:
  162. First, import the rbxm file of ASV2 (right click, then press Insert From File)
  163. into game > StarterGui > SkillsGui > WeaponsController.
  164. This is just to make sure the next few steps go smoothly.
  165. Once you've done that:
  166. 1. Take the contents of the ClientModules and move it into the ClientModules
  167. folder of your game. (This just makes sure you can use the new moves.)
  168. 2. Drag the SubOperations folder and have it parented directly to the
  169. WeaponsController. This means that it, ServerModules, and ClientModules
  170. (and I guess ASV2) are all siblings under WeaponsController.
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. Part 2:
  178. Next, go to ServerScriptService > WeaponHandler and write this code under
  179. the part where it clones everything (this is Line 4 for me):
  180.  
  181. game.StarterGui.SkillsGui.WeaponsController.SubOperations:Clone().Parent = script
  182. local loadedAttacks = {}
  183.  
  184. Then, change the OnClientConnection function to say this:
  185.  
  186. function OnClientConnection(...)
  187. local args = {...}
  188. if args[2] == "RunWeapon" then
  189. if not loadedAttacks[args[3]] then
  190. if script.ServerModules:FindFirstChild(args[3]) then
  191. loadedAttacks[args[3]] = require(script.ServerModules[args[3]])
  192. end
  193. end
  194. loadedAttacks[args[3]](args[1], nil, args[4], args[5])
  195. end
  196. end
  197.  
  198.  
  199.  
  200. Alternatively, simply paste this code into WeaponHandler, replacing everything
  201. that's already there.
  202. --------------------------------------------------------------------------------
  203.  
  204. local func = game:GetService("ReplicatedStorage"):WaitForChild("WEAPONFUNCTION")
  205.  
  206. game.StarterGui.SkillsGui.WeaponsController.ServerModules:Clone().Parent = script
  207. game.StarterGui.SkillsGui.WeaponsController.ClientModules:Clone().Parent = script
  208. game.StarterGui.SkillsGui.WeaponsController.SubOperations:Clone().Parent = script
  209.  
  210. local loadedAttacks = {}
  211.  
  212. function OnClientConnection(...)
  213. local args = {...}
  214. if args[2] == "RunWeapon" then
  215. if not loadedAttacks[args[3]] then
  216. if script.ServerModules:FindFirstChild(args[3]) then
  217. loadedAttacks[args[3]] = require(script.ServerModules[args[3]])
  218. end
  219. end
  220. loadedAttacks[args[3]](args[1], nil, args[4], args[5])
  221. end
  222. end
  223.  
  224. function func.OnServerInvoke(...)
  225. return OnClientConnection(...)
  226. end
  227.  
  228. --------------------------------------------------------------------------------
  229.  
  230.  
  231.  
  232. That's the hard part done!
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239. Part 3:
  240. You can now run the following code in the command line to implement the system
  241. easily. (The code is a bit further down. It's not up here.)
  242. Basically, it will iterate through all ServerModules in your game and check:
  243.  
  244. 1: Is the move in ASV2?
  245. If no: Move it into a folder for safekeeping. (You, as the developer, can
  246. then check each of them and decide what you want to do with them.) (For
  247. example, if you have LusterPurge in your game, it will go here.)
  248. If yes: Ask question 2.
  249.  
  250. 2: Are the contents of the move's script different from the vanilla code?
  251. If no: Move it into a folder for safekeeping. (For example, if you have
  252. reworked WaterPulse in your game, it will go here.)
  253. If yes: Move it into a folder marked for deletion. You should probably get
  254. rid of this folder, because ASV2 just has a better version of it.
  255.  
  256. After both of those steps are complete, the contents of ASV2 ServerModules are
  257. then pasted into the ServerModules folder of your game.
  258.  
  259.  
  260. Here is the code.
  261. --------------------------------------------------------------------------------
  262.  
  263. local newMoves = game.StarterGui.SkillsGui.WeaponsController.ASV2.ServerModules
  264. local vanillaExamples = game.StarterGui.SkillsGui.WeaponsController.ASV2.VanillaServerModules
  265. local inGameMoves = game.StarterGui.SkillsGui.WeaponsController.ServerModules
  266.  
  267. local uniqueMoves = Instance.new("Folder", inGameMoves) --[[Moves unique to your game]]
  268. uniqueMoves.Name = "MovesYouCreated"
  269. local remadeMoves = Instance.new("Folder", inGameMoves) --[[Moves from vanilla that you remade]]
  270. remadeMoves.Name = "VanillaMovesYouRemade"
  271. local garbage = Instance.new("Folder", inGameMoves) --[[Moves in your game that I remade]]
  272. garbage.Name = "OldMoves (TO DELETE)"
  273.  
  274.  
  275. for i, move in pairs(inGameMoves:GetChildren()) do
  276. if move:IsA("ModuleScript") then
  277. if vanillaExamples:FindFirstChild(move.Name) then
  278. if move.Source==vanillaExamples[move.Name].Source then
  279. move.Parent = garbage
  280. else
  281. move.Parent = remadeMoves
  282. end
  283. else
  284. move.Parent = uniqueMoves
  285. end
  286. end
  287. end
  288.  
  289. for i, newMove in pairs(newMoves:GetChildren()) do
  290. newMove.Parent = inGameMoves
  291. end
  292.  
  293. print("All done!!!")
  294.  
  295. --------------------------------------------------------------------------------
  296.  
  297. After all of that, everything should be implemented properly! Congratulations!
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319. --------------------------------------------------------------------------------
  320. CHAPTER 3
  321. Chapter 3: Closing Thoughts and Reminders
  322. --------------------------------------------------------------------------------
  323.  
  324. Remember to check other moves whenever you aren't sure of something.
  325. Basically, just use them as templates.
  326. Additionally, surrounding particleProperties and lightProperties with brackets
  327. like {} is usually a good plan of action, as most functions accept those
  328. arguments in that manner.
  329.  
  330.  
  331.  
  332. Here is a list of all of the moves contained!
  333.  
  334.  
  335. local allTheMoves = {
  336. "WaterSpout",
  337. "LovelyKiss",
  338. "Rest",
  339. "Explosion",
  340. "Dig",
  341. "PhantomForce",
  342. "PopulationBomb",
  343.  
  344. "Absorb",
  345. "Acid",
  346. "AcidArmor",
  347. "Agility",
  348. "AirCutter",
  349. "AirSlash",
  350. "AncientPower",
  351. "AquaTail",
  352. "AuraSphere",
  353. "AuroraBeam",
  354. "Autotomize",
  355. "Avalanche",
  356. "Bite",
  357. "Blizzard",
  358. "BodySlam",
  359. "BoneClub",
  360. "Boomburst",
  361. "Bounce",
  362. "BraveBird",
  363. "BrickBreak",
  364. "Bubble",
  365. "BubbleBeam",
  366. "BugBite",
  367. "BugBuzz",
  368. "BulletSeed",
  369. "Charge",
  370. "Charm",
  371. "CloseCombat",
  372. "Confusion",
  373. "Crunch",
  374. "Curse",
  375. "DarkPulse",
  376. "DefenseCurl",
  377. "Discharge",
  378. "Double-Edge",
  379. "DoubleHit",
  380. "DragonPulse",
  381. "DragonRage",
  382. "DragonRush",
  383. "DrainPunch",
  384. "DrillPeck",
  385. "EarthPower",
  386. "Earthquake",
  387. "EchoedVoice",
  388. "ElectroBall",
  389. "Ember",
  390. "FakeOut",
  391. "FeintAttack",
  392. "FirePunch",
  393. "FlameBurst",
  394. "FlameWheel",
  395. "Flamethrower",
  396. "FlareBlitz",
  397. "FlashCannon",
  398. "FrostBreath",
  399. "FutureSight",
  400. "GigaDrain",
  401. "GigaImpact",
  402. "Gust",
  403. "HammerArm",
  404. "Harden",
  405. "HealPulse",
  406. "HighJumpKick",
  407. "HornAttack",
  408. "Hurricane",
  409. "HydroPump",
  410. "HyperBeam",
  411. "HyperVoice",
  412. "Hypnosis",
  413. "IceBeam",
  414. "IcePunch",
  415. "IcyWind",
  416. "Inferno",
  417. "Ingrain",
  418. "IronDefense",
  419. "IronHead",
  420. "IronTail",
  421. "JumpKick",
  422. "LastResort",
  423. "LavaPlume",
  424. "LeafStorm",
  425. "Leafage",
  426. "LeechSeed",
  427. "MagicalLeaf",
  428. "MagmaStorm",
  429. "MegaDrain",
  430. "MegaPunch",
  431. "Megahorn",
  432. "MistBall",
  433. "Moonblast",
  434. "Moonlight",
  435. "Mud-Slap",
  436. "MudBomb",
  437. "MudShot",
  438. "MuddyWater",
  439. "NightShade",
  440. "NightSlash",
  441. "Nightmare",
  442. "OriginPulse",
  443. "PayDay",
  444. "Peck",
  445. "PetalBlizzard",
  446. "PinMissile",
  447. "PlayRough",
  448. "PoisonJab",
  449. "PoisonSting",
  450. "Pound",
  451. "PowderSnow",
  452. "Present",
  453. "Psychic",
  454. "PsychoCut",
  455. "Psystrike",
  456. "Psywave",
  457. "Rage",
  458. "RazorLeaf",
  459. "RazorShell",
  460. "Recover",
  461. "RockSlide",
  462. "RockThrow",
  463. "RollingKick",
  464. "Roost",
  465. "SandAttack",
  466. "Scratch",
  467. "SeedBomb",
  468. "Self-Destruct",
  469. "ShadowBall",
  470. "ShadowBone",
  471. "ShadowClaw",
  472. "ShadowSneak",
  473. "SheerCold",
  474. "ShellSmash",
  475. "Sketch",
  476. "SkullBash",
  477. "Slam",
  478. "SludgeBomb",
  479. "Smog",
  480. "Soft-Boiled",
  481. "SolarBeam",
  482. "SonicBoom",
  483. "Spark",
  484. "Splash",
  485. "Spore",
  486. "SteelWing",
  487. "StormThrow",
  488. "StringShot",
  489. "SuckerPunch",
  490. "Superpower",
  491. "Surf",
  492. "Swift",
  493. "Synthesis",
  494. "Tackle",
  495. "TailWhip",
  496. "TakeDown",
  497. "Thunder",
  498. "ThunderPunch",
  499. "ThunderShock",
  500. "Thunderbolt",
  501. "U-turn",
  502. "Venoshock",
  503. "VoltTackle",
  504. "WaterGun",
  505. "WaterPulse",
  506. "WaterShuriken",
  507. "Whirlpool",
  508. "Will-O-Wisp",
  509. "WingAttack",
  510. "Wish",
  511. "Withdraw",
  512. "WoodHammer",
  513. "X-Scissor",
  514. "Yawn",
  515. "ZapCannon",
  516. "ZenHeadbutt"
  517. }
  518.  
  519.  
  520.  
  521. Created by Skit_y as a homage to Primpy's Pokemon Advanced
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement