. - :) , 12.12.2000 19:04 MSK
type
TMyMajesty = class(TMyMajesty)
private
FBeer: Cardinal;
FMoney: ShortInt;
FWorkEfficiency: Integer;;
// FFreeTime: Integer;

procedure SetBeer(Value: Cardinal);
procedure SetMoney(Value: ShortInt);
procedure WorkEfficiency(Value: Integer);
protected
procedure MyWife(var Satisfacted: Boolean); virtual;
published
property Beer: Cardinal read FBeer write SetBeer stored False;
property Money: ShortInt read FMoney write SetMoney default 0;
property WorkEfficiency: Integer read FWorkEfficiency write SetWorkEfficiency default MaxInt;
// property FreeTime: Integer read FFreeTime write FFreeTime default 0;
end;

implementation

procedure TMyMajesty.SetBeer(Value: Cardinal);
begin
if FBeer > Value then // :))
begin
Inc(WorkEfficiency, Value - FBeer);
FBeer := Value;

// however
if FBeer > 500 * 5 then // 5 bottles by 0,5l
WorkEfficiency := 500 * 5 - FBeer;
end;
end;

procedure TMyMajesty.SetMoney(Value: ShortInt);
begin
if FMoney < > Value then
begin
FMoney := Value;
if FMoney > 100 then inc(FBeer);
end;
end;

procedure TMyMajesty.WorkEfficiency(Value: Integer);
begin
if FWorkEfficiency < > Value then
begin
Inc(FMoney, Value - FWorkEfficiency);
FWorkEfficiency := Value;
end;
end;

procedure TMyMajesty.MyWife(var Satisfied: Boolean);
begin
// SKIPPED & CENSORED !!

dec(FMoney);
Satisfied := FMoney > 0;
end;
   . - :) , 12.12.2000 19:04 MSK