#[ MyGame.Example.Ability
  Automatically generated by the FlatBuffers compiler, do not modify.
  Or modify. I'm a message, not a cop.

  flatc version: 25.9.23

  Declared by  : 
  Rooting type : MyGame.Example.Monster ()
]#

import flatbuffers

type Ability* = object of FlatObj
func id*(self: Ability): uint32 =
  return Get[uint32](self.tab, self.tab.Pos + 0)
func `id=`*(self: var Ability, n: uint32): bool =
  return self.tab.Mutate(self.tab.Pos + 0, n)
func distance*(self: Ability): uint32 =
  return Get[uint32](self.tab, self.tab.Pos + 4)
func `distance=`*(self: var Ability, n: uint32): bool =
  return self.tab.Mutate(self.tab.Pos + 4, n)
proc AbilityCreate*(self: var Builder, id: uint32, distance: uint32): uoffset =
  self.Prep(4, 8)
  self.Prepend(distance)
  self.Prepend(id)
  return self.Offset()
