13     private static void InitializeHash()
 
   17         AddArrowTypeToHash(
"Ammo_HuntingBolt");
 
   18         AddArrowTypeToHash(
"Ammo_ImprovisedBolt_1");
 
   19         AddArrowTypeToHash(
"Ammo_ImprovisedBolt_2");
 
   20         AddArrowTypeToHash(
"Ammo_ImprovisedBolt_3");
 
   23     private static void AddArrowTypeToHash(
string ArrowType)
 
   25         m_TypeHashTable.Insert(ArrowType.Hash(), ArrowType.ToType());
 
   28     private static typename GetArrowTypeFromHash(
int hash)
 
   30         return m_TypeHashTable.Get(hash);
 
   36         int count = m_Arrows.Count();
 
   39         for (i = count - 1; i >= 0; i--)
 
   46         count = m_Arrows.Count();
 
   50         for (i = 0; i < count; i++)
 
   54             string type = arrow.GetType();
 
   55             ctx.Write(type.Hash());
 
   57             vector angle = arrow.GetLocalYawPitchRoll();
 
   58             vector pos = arrow.GetLocalPosition();
 
   67             int pivot = arrow.GetHierarchyPivot();
 
   78         if (!ctx.Read(version))
 
   89         for (
int i = 0; i < count; i++)
 
  104                 if (!ctx.Read(value))
 
  110                 if (!ctx.Read(value))
 
  116                 if (!ctx.Read(value))
 
  122                 if (!ctx.Read(value))
 
  128                 if (!ctx.Read(value))
 
  134                 if (!ctx.Read(value))
 
  143                 angle = 
vector.ArrayToVec(angleF);
 
  144                 pos = 
vector.ArrayToVec(posF);
 
  147                 if (!ctx.Read(pivot))
 
  160                     typename arrowType = GetArrowTypeFromHash(hash);
 
  164                         arrow.SetQuantityToMinimum();
 
  165                         arrow.SetYawPitchRoll(angle);
 
  166                         m_Owner.AddChild(arrow, pivot);