public override bool HandleEvent(EndTurnEvent E)
 {
     if (CheckConstrictedBy())
     {
         SerpentineForm part = ConstrictedBy.GetPart <SerpentineForm>();
         part.ProcessTurnConstricted(Object, ++TurnsConstricted);
     }
     return(true);
 }
 public void ApplyChangesCore()
 {
     if (ChangesWereApplied)
     {
         UnapplyChangesCore();
     }
     if (ConstrictedBy != null)
     {
         SerpentineForm part = ConstrictedBy.GetPart <SerpentineForm>();
         if (part != null)
         {
             foreach (var kv in part.PropertyMap)
             {
                 // Alternate method of Dictionary, loop over keyvalue pair
                 Object.ModIntProperty(kv.Key, kv.Value, true);
             }
         }
     }
     ChangesWereApplied = true;
 }
        private void UnapplyChangesCore()
        {
            if (!ChangesWereApplied)
            {
                return;
            }
            if (ConstrictedBy == null)
            {
                return;
            }
            SerpentineForm part = ConstrictedBy.GetPart <SerpentineForm>();

            if (part == null)
            {
                return;
            }
            foreach (var kv in part.PropertyMap)
            {
                // Alternate method of Dictionary, loop over keyvalue pair
                Object.ModIntProperty(kv.Key, -kv.Value, true);
            }
            ChangesWereApplied = false;
        }