Refactor `BattlePokemon` to use prototypes
Refactor `BattlePokemon` to use prototypes

Atwar/http-server-femalehq.rhcloud.com-80.psim.us-,superman8900/Pokemon-Showdown,megaslowbro1/Pokemon-Showdown-Server-for-megaslowbro1,danpantry/Pokemon-Showdown,ShowdownHelper/Saffron,Nineage/Origin,aakashrajput/Pokemon-Showdown,SerperiorBae/PokemonShowdown2,NoahVSGamingYT/Pokemon-Showdown,Alpha-Devs/Alpha-Server,sirDonovan/Pokemon-Showdown,yashagl/yash-showdown,SerperiorBae/Bae-Showdown-2,Irraquated/Showdown-Boilerplate,Parukia/Pokemon-Showdown,Flareninja/Showdown-Boilerplate,AWailOfATail/Pokemon-Showdown,SerperiorBae/BaeShowdown,hayleysworld/serenityserver,Flareninja/Sora,Oiawesome/DPPtServ2,ZeroParadox/ugh,Darkshadow6/git-remote-add-scalingo-git-scalingo.com-pokemoonforums,Oiawesome/DPPtServ2,SerperiorBae/Bae-Showdown-2,svivian/Pokemon-Showdown,Vacate/Pokemon-Showdown,Flareninja/Pokemon-Showdown-1,Atwar/ServerClassroom,TheManwithskills/New-boiler-test,LightningStormServer/Lightning-Storm,Pokemon-Devs/Pokemon-Showdown,Celecitia/Plux-Pokemon-Showdown,xfix/Pokemon-Showdown,TheDiabolicGift/Lumen-Pokemon-Showdown,Flareninja/Pokemon-Showdown-1,jumbowhales/Pokemon-Showdown,KewlStatics/Alliance,Celecitia/Plux-Pokemon-Showdown,Legit99/Lightning-Storm-Server,SerperiorBae/Pokemon-Showdown-1,AnaRitaTorres/Pokemon-Showdown,Nineage/Showdown-Boilerplate,TbirdClanWish/Pokemon-Showdown,InvalidDN/Pokemon-Showdown,zczd/enculer,TheManwithskills/Server,megaslowbro1/Pokemon-Showdown-Server-for-megaslowbro1,danpantry/Pokemon-Showdown,KewlStatics/Showdown-Template,BuzzyOG/Pokemon-Showdown,xfix/Pokemon-Showdown,svivian/Pokemon-Showdown,AvinashSwaminathan/Pokelegends,Sora-Server/Sora,panpawn/Pokemon-Showdown,forbiddennightmare/Pokemon-Showdown-1,sama2/Lumen-Pokemon-Showdown,abrulochp/Lumen-Pokemon-Showdown,Lord-Haji/SpacialGaze,gustavo515/test,TheFenderStory/Pokemon-Showdown,Pikachuun/Pokemon-Showdown-SMCMDM,Evil-kun/Pokemon-Showdown,kuroscafe/Paradox,SerperiorBae/Pokemon-Showdown,SilverTactic/Pokemon-Showdown,theodelhay/test,JellalTheMage/PS-,DalleTest/Pokemon-Showdown,Disaster-Area/Pokemon-Showdown,MasterFloat/LQP-Server-Showdown,abulechu/Lumen-Pokemon-Showdown,Atwar/server-epilogueleague.rhcloud.com,SolarisFox/Pokemon-Showdown,SkyeTheFemaleSylveon/Mudkip-Server,HoeenKid/Pokemon-Showdown-Johto,Mystifi/Exiled,javi501/Lumen-Pokemon-Showdown,EienSeiryuu/Pokemon-Showdown,k3naan/Pokemon-Showdown,CreaturePhil/Pokemon-Showdown,Irraquated/EOS-Master,Extradeath/psserver,Firestatics/Omega-Alpha,Ridukuo/Test2,PauLucario/LQP-Server-Showdown,Ridukuo/Test,SerperiorBae/BaeShowdown,scotchkorean27/Pokemon-Showdown,Pikachuun/Pokemon-Showdown,LegendBorned/PS-Boilerplate,PrimalGallade45/Lumen-Pokemon-Showdown,PrimalGallade45/Lumen-Pokemon-Showdown,comedianchameleon/test,EmmaKitty/Pokemon-Showdown,SerperiorBae/Bae-Showdown-2,Firestatics/omega,TheManwithskills/serenity,Checkinator/Pokemon-Showdown,kupochu/Pokemon-Showdown,Irraquated/Showdown-Boilerplate,MayukhKundu/Technogear,Sora-League/Sora,Darkshadow6/PokeMoon-Creation,kubetz/Pokemon-Showdown,ehk12/clone,xfix/Pokemon-Showdown,ScottehMax/Pokemon-Showdown,gustavo515/batata,hayleysworld/Showdown-Boilerplate,urkerab/Pokemon-Showdown,Breakfastqueen/advanced,MayukhKundu/Pokemon-Domain,SilverTactic/Dragotica-Pokemon-Showdown,SilverTactic/Dragotica-Pokemon-Showdown,Extradeath/advanced,gustavo515/test,LightningStormServer/Lightning-Storm,jd4564/Pokemon-Showdown,Git-Worm/City-PS,SerperiorBae/Bae-Showdown,DarkSuicune/Pokemon-Showdown,hayleysworld/serenity,Psyientist/Showdown-Boilerplate,Kill-The-Noise/BlakJack-Boilerplate,JellalTheMage/Jellals-Server,Sora-League/Sora,ZestOfLife/FestiveLife,Wando94/Spite,xCrystal/Pokemon-Showdown,AbsolitoSweep/Absol-server,Articuno-I/Pokemon-Showdown,RustServer/Pokemon-Showdown,zek7rom/SpacialGaze,MayukhKundu/Flame-Savior,lAlejandro22/lolipoop,SerperiorBae/Bae-Showdown,MayukhKundu/Mudkip-Server,sama2/Viridian-Pokemon-Showdown,panpawn/Pokemon-Showdown,azum4roll/Pokemon-Showdown,sama2/Universe-Pokemon-Showdown,PS-Spectral/Spectral,SilverTactic/Showdown-Boilerplate,Arcticblast/Pokemon-Showdown,KewlStatics/Showdown-Template,comedianchameleon/test,TheManwithskills/serenity,SubZeroo99/Pokemon-Showdown,yashagl/pokecommunity,Neosweiss/Pokemon-Showdown,Firestatics/omega,KewlStatics/Pokeindia-Codes,lFernanl/Pokemon-Showdown,MayukhKundu/Technogear-Final,Atwar/ServerClassroom,lFernanl/Lumen-Pokemon-Showdown,KewlStatics/Shit,Legit99/Lightning-Storm-Server,Pikachuun/Joimmon-Showdown,arkanox/MistShowdown,Fusxfaranto/Pokemon-Showdown,Breakfastqueen/advanced,abulechu/Lumen-Pokemon-Showdown,Sora-Server/Sora,TheManwithskills/Server-2,SSJGVegito007/Vegito-s-Server,Tesarand/Pokemon-Showdown,Disaster-Area/Pokemon-Showdown,SkyeTheFemaleSylveon/Pokemon-Showdown,BlakJack/Kill-The-Noise,scotchkorean27/Pokemon-Showdown,BadSteel/Pokemon-Showdown,miahjennatills/Pokemon-Showdown,PS-Spectral/Spectral,MasterFloat/LQP-Server-Showdown,KaitoV4X/Showdown,CorruptedHelix/Pokemon-Showdown,Ransei1/Alt,Luobata/Pokemon-Showdown,sama2/Universe-Pokemon-Showdown,Pablo000/aaa,LustyAsh/EOS-Master,Vacate/Pokemon-Showdown,EmmaKitty/Pokemon-Showdown,lFernanl/Lumen-Pokemon-Showdown,TheFenderStory/Pokemon-Showdown,Pokemon-Devs/Pokemon-Showdown,Volcos/SpacialGaze,abrulochp/Lumen-Pokemon-Showdown,jumbowhales/Pokemon-Showdown,anubhabsen/Pokemon-Showdown,AWailOfATail/awoat,abrulochp/Dropp-Pokemon-Showdown,Flareninja/Sora,PrimalGallade45/Dropp-Pokemon-Showdown,Pikachuun/Joimmon-Showdown,yashagl/yash-showdown,Darkshadow6/git-remote-add-scalingo-git-scalingo.com-pokemoonforums,javi501/Lumen-Pokemon-Showdown,sama2/Lumen-Pokemon-Showdown,LightningStormServer/Lightning-Storm,ZestOfLife/PSserver,Werfin96/Ultimate,TheManwithskills/New-boiler-test,anubhabsen/Pokemon-Showdown,Flareninja/Hispano-Pokemon-Showdown,SerperiorBae/Pokemon-Showdown-1,abulechu/Dropp-Pokemon-Showdown,DarkSuicune/Kakuja-2.0,panpawn/Gold-Server,BadSteel/Omega-Pokemon-Showdown,Enigami/Pokemon-Showdown,iFaZe/SliverX,comedianchameleon/test,hayleysworld/serenity,TheManwithskills/DS,DesoGit/TsunamiPS,panpawn/Gold-Server,Elveman/RPCShowdownServer,SkyeTheFemaleSylveon/Pokemon-Showdown,AWailOfATail/Pokemon-Showdown,SilverTactic/Pokemon-Showdown,KewlStatics/Pokeindia-Codes,Pikachuun/Pokemon-Showdown,Hidden-Mia/Roleplay-PS,Adithya4Uberz/The-Tsunami-League,svivian/Pokemon-Showdown,MeliodasBH/Articuno-Land,piiiikachuuu/Pokemon-Showdown,Extradeath/advanced,Flareninja/Hispano-Pokemon-Showdown,BuzzyOG/Pokemon-Showdown,sama2/Dropp-Pokemon-Showdown,KewlStatics/Shit,UniversalMan12/Universe-Server,comedianchameleon/servertest1,gustavo515/final,TheManwithskills/Creature-phil-boiler,Irraquated/Pokemon-Showdown,TheFenderStory/Showdown-Boilerplate,SkyeTheFemaleSylveon/Mudkip-Server,kuroscafe/Showdown-Boilerplate,Thiediev/Pokemon-Showdown,MayukhKundu/Technogear-Final,SerperiorBae/BaeShowdown,yashagl/pokemon-showdown,Gold-Solox/Pokemon-Showdown,Checkinator/Pokemon-Showdown,hayleysworld/serenityc9,AvinashSwaminathan/lotus-v2,Lord-Haji/SpacialGaze,PS-Spectral/Spectral,ShowdownHelper/Saffron,AbsolitoSweep/Absol-server,Kokonoe-san/Glacia-PS,arkanox/MistShowdown,gustavo515/batata,hayleysworld/serenityserver,VoltStorm/Server-pokemon-showdown,Zarel/Pokemon-Showdown,Kokonoe-san/Glacia-PS,Tesarand/Pokemon-Showdown,kotarou3/Krister-Pokemon-Showdown,gustavo515/gashoro,Alpha-Devs/OmegaRuby-Server,Darkshadow6/git-remote-add-scalingo-git-scalingo.com-pokemoonforums,lFernanl/Zero-Pokemon-Showdown,QuiteQuiet/Pokemon-Showdown,gustavo515/gashoro,AWailOfATail/Pokemon-Showdown,FakeSloth/wulu,Ecuacion/Lumen-Pokemon-Showdown,DarkSuicune/Pokemon-Showdown,CreaturePhil/Showdown-Boilerplate,hayleysworld/Pokemon-Showdown,aakashrajput/Pokemon-Showdown,Adithya4Uberz/KTN,abulechu/Dropp-Pokemon-Showdown,iFaZe/SilverZ,Zipzapadam/Server,Hopenub/Pokemon-Showdown,comedianchameleon/servertest1,Irraquated/EOS-Master,sirDonovan/Pokemon-Showdown,ZeroParadox/ugh,Elveman/RPCShowdownServer,DarkSuicune/Kakuja-2.0,Wando94/Pokemon-Showdown,Volcos/SpacialGaze,Flareninja/Lumen-Pokemon-Showdown,LustyAsh/EOS-Master,HoeenCoder/SpacialGaze,JennyPRO/Jenny,megaslowbro1/Showdown-Server-again,Irraquated/Pokemon-Showdown,Flareninja/Showdown-Boilerplate,johtooo/PS,Guernouille/Pokemon-Showdown,DalleTest/Pokemon-Showdown,Articuno-I/Pokemon-Showdown,Lord-Haji/SpacialGaze,brettjbush/Pokemon-Showdown,Firestatics/Omega-Alpha,TheManwithskills/COC,TheManwithskills/Dusk--Showdown,k3naan/Pokemon-Showdown,Wando94/Pokemon-Showdown,Tesarand/Pokemon-Showdown,hayleysworld/harmonia,ankailou/Pokemon-Showdown,urkerab/Pokemon-Showdown,TheManwithskills/COC,DesoGit/Tsunami_PS,HoeenCoder/SpacialGaze,CreaturePhil/Showdown-Boilerplate,bai2/Dropp,NoahVSGamingYT/Pokemon-Showdown,AWailOfATail/awoat,Kenny-/Pokemon-Showdown,Sora-Server/Sora,catanatron/pokemon-rebalance,lFernanl/Zero-Pokemon-Showdown,xfix/Pokemon-Showdown,CorruptedHelix/Pokemon-Showdown,kupochu/Pokemon-Showdown,Ecuacion/Pokemon-Showdown,xCrystal/Pokemon-Showdown,ScottehMax/Pokemon-Showdown,JellalTheMage/Jellals-Server,Nineage/Origin,JellalTheMage/PS-,ZestOfLife/FestiveLife,Firestatics/Firestatics46,hayleysworld/asdfasdf,TheManwithskills/Server-2,CharizardtheFireMage/Showdown-Boilerplate,SSJGVegito007/Vegito-s-Server,ankailou/Pokemon-Showdown,ehk12/coregit,DB898/theregalias,panpawn/Gold-Server,MeliodasBH/Articuno-Land,Flareninja/Sora,TheManwithskills/DS,johtooo/PS,Breakfastqueen/advanced,Chespin14/Custom-Platform-Pokemon-Showdown,CharizardtheFireMage/Showdown-Boilerplate,psnsVGC/Wish-Server,gustavo515/final,cadaeic/Pokemon-Showdown,AustinXII/Pokemon-Showdown,TheManwithskills/Creature-phil-boiler,Kill-The-Noise/BlakJack-Boilerplate,ehk12/coregit,MeliodasBH/boarhat,sama2/Viridian-Pokemon-Showdown,Psyientist/Showdown-Boilerplate,Pikachuun/Pokemon-Showdown-SMCMDM,InvalidDN/Pokemon-Showdown,TheManwithskills/Server---Thermal,DesoGit/Tsunami_PS,TheManwithskills/Server-2,Parukia/Pokemon-Showdown,SerperiorBae/Pokemon-Showdown,Enigami/Pokemon-Showdown,TheDiabolicGift/Showdown-Boilerplate,SerperiorBae/Pokemon-Showdown-1,TogeSR/Lumen-Pokemon-Showdown,PrimalGallade45/Dropp-Pokemon-Showdown,xfix/Pokemon-Showdown,ShowdownHelper/Saffron,Kill-The-Noise/BlakJack-Boilerplate,ehk12/bigbangtempclone,Irraquated/Pokemon-Showdown,FakeSloth/Infinite,TheManwithskills/Server,kuroscafe/Paradox,Kevinxzllz/PS-Openshift-Server,DesoGit/Tsunami_PS,SolarisFox/Pokemon-Showdown,bai2/Dropp,KewlStatics/Alliance,yashagl/pokecommunity,Ransei1/Alt,superman8900/Pokemon-Showdown,TheDiabolicGift/Showdown-Boilerplate,Adithya4Uberz/The-Tsunami-League,Sora-League/Sora,Stroke123/POKEMON,SerperiorBae/Bae-Showdown,EienSeiryuu/Pokemon-Showdown,hayleysworld/Showdown-Boilerplate,AvinashSwaminathan/lotus-v3,Kevinxzllz/PS-Openshift-Server,Enigami/Pokemon-Showdown,Wando94/Spite,Mystifi/Exiled,QuiteQuiet/Pokemon-Showdown,kuroscafe/Showdown-Boilerplate,Atwar/server-epilogueleague.rhcloud.com,Legendaryhades/Oblivion,Stroke123/POKEMON,RustServer/Pokemon-Showdown,ZestOfLife/PSserver,BuzzyOG/Pokemon-Showdown,abrulochp/Dropp-Pokemon-Showdown,TheManwithskills/Server---Thermal,HoeenCoder/SpacialGaze,jumbowhales/Pokemon-Showdown,ehk12/clone,AnaRitaTorres/Pokemon-Showdown,Ecuacion/Lumen-Pokemon-Showdown,cadaeic/Pokemon-Showdown,FakeSloth/Infinite,LegendBorned/PS-Boilerplate,xCrystal/Pokemon-Showdown,PauLucario/LQP-Server-Showdown,Syurra/Pokemon-Showdown,BlazingAura/Showdown-Boilerplate,Mystifi/Exiled,MasterFloat/Pokemon-Showdown,miahjennatills/Pokemon-Showdown,hayleysworld/harmonia,AvinashSwaminathan/lotus,Flareninja/Pokemon-Showdown,Raina4uberz/Light-server,Pablo000/aaa,Syurra/Pokemon-Showdown,zczd/enculer,Ridukuo/Test2,brettjbush/Pokemon-Showdown,asdfghjklohhnhn/Pokemon-Showdown,aakashrajput/Pokemon-Showdown,MayukhKundu/Mudkip-Server,forbiddennightmare/Pokemon-Showdown-1,ZeroParadox/BlastBurners,Raina4uberz/Light-server,yashagl/pokemon,Zarel/Pokemon-Showdown,MayukhKundu/Flame-Savior,CreaturePhil/Showdown-Boilerplate,MayukhKundu/Pokemon-Domain,Gold-Solox/Pokemon-Showdown,SerperiorBae/Pokemon-Showdown,Pikachuun/Touhoumon-Showdown,Ridukuo/Test,megaslowbro1/Pokemon-Showdown,megaslowbro1/Showdown-Server-again,ehk12/bigbangtempclone,zek7rom/SpacialGaze,SilverTactic/Showdown-Boilerplate,Guernouille/Pokemon-Showdown,TogeSR/Lumen-Pokemon-Showdown,HoeenCoder/SpacialGaze,CrestfallPS/Pokemon-Showdown,Flareninja/Lumen-Pokemon-Showdown,MayukhKundu/Technogear,DB898/theregalias,asdfghjklohhnhn/Pokemon-Showdown,AustinXII/Pokemon-Showdown,SubZeroo99/Pokemon-Showdown,megaslowbro1/Pokemon-Showdown,Neosweiss/Pokemon-Showdown,svivian/Pokemon-Showdown,Bryan-0/Pokemon-Showdown,Enigami/Pokemon-Showdown,Alpha-Devs/Alpha-Server,piiiikachuuu/Pokemon-Showdown,Extradeath/psserver,kubetz/Pokemon-Showdown,UniversalMan12/Universe-Server,Johto-Serverr/Werfin-Boilerplate,Zarel/Pokemon-Showdown,Lauc1an/Perulink-Showdown,Parukia/Pokemon-Showdown,TbirdClanWish/Pokemon-Showdown,lFernanl/Pokemon-Showdown,Lauc1an/Perulink-Showdown,TheDiabolicGift/Lumen-Pokemon-Showdown,ZeroParadox/BlastBurners,DesoGit/TsunamiPS,BlazingAura/Showdown-Boilerplate,Yggdrasil-League/Yggdrasil,psnsVGC/Wish-Server,QuiteQuiet/Pokemon-Showdown,lFernanl/Mudkip-Server,hayleysworld/Pokemon-Showdown,azum4roll/Pokemon-Showdown,Alpha-Devs/OmegaRuby-Server,lFernanl/Mudkip-Server,hayleysworld/asdfasdf,SerperiorBae/PokemonShowdown2,CreaturePhil/Pokemon-Showdown,MasterFloat/Pokemon-Showdown,TheFenderStory/Showdown-Boilerplate,Flareninja/Pokemon-Showdown,UniversalMan12/Universe-Server,Yggdrasil-League/Yggdrasil,yashagl/pokemon,Evil-kun/Pokemon-Showdown,yashagl/pokemon-showdown,sirDonovan/Pokemon-Showdown,Atwar/http-server-femalehq.rhcloud.com-80.psim.us-,Firestatics/Firestatics46,Git-Worm/City-PS,urkerab/Pokemon-Showdown,MeliodasBH/boarhat,TheManwithskills/Dusk--Showdown,Ecuacion/Pokemon-Showdown,svivian/Pokemon-Showdown,Bryan-0/Pokemon-Showdown,Darkshadow6/PokeMoon-Creation,hayleysworld/serenityc9,KaitoV4X/Showdown,kotarou3/Krister-Pokemon-Showdown,AustinXII/Pokemon-Showdown,jd4564/Pokemon-Showdown,sama2/Dropp-Pokemon-Showdown,catanatron/pokemon-rebalance,theodelhay/test,Zipzapadam/Server,Darkshadow6/PokeMoon-Creation,lAlejandro22/lolipoop,Hidden-Mia/Roleplay-PS,JennyPRO/Jenny,BasedGod7/PH