anchor.diff:      end;
   attempt({#parents{character = Character},
            Props,
  -         {Attacker, calc, Types, damage, Damage, to, Character, with, AttackVector}}) ->
  +         {Attacker, calc, EffectRoll, on, Character, with, Effect}}) ->
       Log = [{?SOURCE, Attacker},
              {?EVENT, calc_damage},
  -           {damage, Damage},
  +           {effect_roll, EffectRoll},
              {?TARGET, Character},
  -           {vector, AttackVector}],
  +           {effect, Effect}],
       case should_defend(Props) of
           true ->
  -            case gerlshmud_modifiers:modifier(Props, defence, damage, Types) of
  -                0 ->
  +            case proplists:get_value(defence_effect_roll, Props, {0, 0}) of
  +                {_Roll = 0, _Base = 0} ->
                       {succeed, false, Props, Log};
  -                Amount ->
  +                {MaybeRoll, Base} ->
  +                    DefenceRoll = roll(MaybeRoll, Base),
                       {succeed,
  -                     {Attacker, calc, Types, damage, Damage - Amount, to, Character, with, AttackVector},
  +                     {Attacker, calc, EffectRoll - DefenceRoll, damage, Character},
                        true,
                        Props,
                        Log}
  
positive.code: %% Defend
  attempt({#parents{character = Character},
           Props,
           {Attacker, calc, Types, hit, Hit, on, Character, with, Attack}}) ->
      Log = [{?SOURCE, Attacker},
             {?EVENT, calc_hit},
             {hit, Hit},
             {?TARGET, Character},
             {vector, AttackVector}],
      case should_defend(Props) of
          true ->
              case gerlshmud_modifiers:modifier(Props, defence, hit, Types) of
              %case proplists:get_value(defence_hit_modifier, Props) of
                  0 ->
                      {succeed, false, Props, Log};
                  Amount ->
                      {succeed,
                       {Attacker, calc, Types, hit, Hit - Amount, on, Character, with, AttackVector},
                       true,
                       Props,
                       Log}
  
negative.code:             {succeed, false, Props, Log}
      end;
  
  attempt({_, _, _Msg}) ->
      undefined.
  
  succeed({Props, _}) ->
      Props.
  