Advertisement
Ultimate_69

FightServer

May 21st, 2025 (edited)
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.99 KB | None | 0 0
  1. local ReplicatedStorage = game:GetService("ReplicatedStorage").ReplicatedStoragePackage
  2. local ServerScriptService = game:GetService("ServerScriptService").ServerScriptServicePackage
  3. local ServerStorage = game:GetService("ServerStorage").ServerStoragePackage
  4.  
  5. local CustomEnum = require(ReplicatedStorage.Modules.CustomEnum)
  6. local PlayerStats = require(ServerScriptService.Modules.PlayerStats)
  7. local FightModule = require(ServerScriptService.Modules.FightModule)
  8. local FighterDetails = require(ServerScriptService.Parent.FighterDetails)
  9. local Types = require(ReplicatedStorage.Modules.Types)
  10.  
  11. local fightRemote = ReplicatedStorage.Remotes.FightRemote
  12. local abilityFetcher = ReplicatedStorage.Remotes.AbilityFetcher
  13. local turnInfoBindable = ServerStorage.Bindables.GetTurnInfo
  14.  
  15. local function CheckValidRequest(player, playerTurns, playedTurns, fighter)
  16.     if playerTurns[playedTurns] ~= player.UserId then return false end
  17.     if fighter.isAttacking or fighter.isBlocking then return false end
  18.     return true
  19. end
  20.  
  21. abilityFetcher.OnServerInvoke = function(player)
  22.     if PlayerStats[player.UserId].fighter.transformed then
  23.         return FighterDetails[PlayerStats[player.UserId].fighter.id].AbilitiesTransformed
  24.     end
  25.     return FighterDetails[PlayerStats[player.UserId].fighter.id].Abilities
  26. end
  27.  
  28. fightRemote.OnServerEvent:Connect(function(player, AttackType, ability: number)
  29.     local playerTurns, playedTurns = turnInfoBindable:Invoke()
  30.     local fighter: Types.Fighter = PlayerStats[player.UserId].fighter
  31.    
  32.     if not CheckValidRequest(player, playerTurns, playedTurns, fighter) then return end -- sanity check
  33.  
  34.     if AttackType == CustomEnum.AttackType.Attack then
  35.         FightModule.Attack(player, PlayerStats[player.UserId].fighter)
  36.     elseif AttackType == CustomEnum.AttackType.Skip then
  37.         FightModule.SkipTurn()
  38.     elseif AttackType == CustomEnum.AttackType.Ability then
  39.         FightModule.Ability(player, fighter, ability)
  40.     elseif AttackType == CustomEnum.AttackType.Defend then
  41.         FightModule.Defend(player, fighter)
  42.     end
  43. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement