anchor.diff:  
   procedure TKMUnitWarrior.SetActionFight(aAction: TKMUnitActionType; aOpponent: TKMUnit);
   var
  -  Cycle, Step: Byte;
  +  cycle, step: Byte;
   begin
     //Archers should start in the reloading if they shot recently phase to avoid rate of fire exploit
  -  Step := 0; //Default
  -  Cycle := Max(gRes.Units[UnitType].UnitAnim[aAction, Direction].Count, 1);
  -  if (TKMUnitWarrior(Self).IsRanged) and TKMUnitWarrior(Self).NeedsToReload(Cycle) then
  +  step := 0; //Default
  +  cycle := Max(gRes.Units[UnitType].UnitAnim[aAction, Direction].Count, 1);
  +  if (TKMUnitWarrior(Self).IsRanged) and TKMUnitWarrior(Self).NeedsToReload(cycle) then
       //Skip the unit's animation forward to 1 step AFTER firing
  -    Step := (FiringDelay + (gGameParams.Tick - TKMUnitWarrior(Self).LastShootTime)) mod Cycle;
  +    step := (FiringDelay + (gGameParams.Tick - TKMUnitWarrior(Self).LastShootTime)) mod cycle;
   
     if (Action is TKMUnitActionWalkTo) and not TKMUnitActionWalkTo(Action).CanAbandonExternal then
       raise ELocError.Create('Unit fight overrides walk', fPosition);
  -  SetAction(TKMUnitActionFight.Create(Self, aAction, aOpponent), Step);
  +  SetAction(TKMUnitActionFight.Create(Self, aAction, aOpponent), step);
   end;
   
   
  
positive.code: 
  procedure TKMUnitWarrior.Kill(aFrom: TKMHandID; aShowAnimation, aForceDelay: Boolean);
  var
    AlreadyDeadOrDying: Boolean;
  begin
    AlreadyDeadOrDying := IsDeadOrDying; //Inherited will kill the unit
    inherited;
  
    //After inherited so script events can still check which group the warrior is from
    if not AlreadyDeadOrDying then
    begin
      ClearOrderTarget; //This ensures that pointer usage tracking is reset
  
  
negative.code: 
  function TKMUnitWarrior.ObjToString(const aSeparator: String = '|'): String;
  var
    unitStr, houseStr, groupStr: String;
  begin
    groupStr := 'nil';
    unitStr := 'nil';
    houseStr := 'nil';
  
    if fGroup <> nil then
      groupStr := TKMUnitGroup(fGroup).ObjToString(aSeparator);
  
    if fOrderTargetUnit <> nil then
      unitStr := fOrderTargetUnit.ObjToStringShort('; ');
  
    if fOrderTargetHouse <> nil then
      houseStr := fOrderTargetHouse.ObjToStringShort('; ');
  
    Result := inherited ObjToString(aSeparator) +
              Format('%sWarriorOrder = %s%sNextOrder = %s%sNextOrderForced = %s%sOrderLoc = %s%sOrderTargetUnit = [%s]%sOrderTargetHouse = [%s]%sGroup = %s%s',
  