// ****************************************************************************
//
// Logic 2: First room
//
// ****************************************************************************

#include "defines.txt"
#define door o1
#define lever o2
#define trash o3

if (new_room) {
  load.pic(room_no);
  draw.pic(room_no);
  discard.pic(room_no);
  set.horizon(50);

  // The next 6 lines need only be in the first room of the game
  if ((prev_room_no == 244 ||
      prev_room_no == 0)) {
    position(ego,48,121);
    status.line.on();
    accept.input();
    enable.item(menu_about);
    enable.item(menu_help);
    enable.item(menu_save);
    enable.item(menu_seeobject);
    enable.item(menu_joystick);
    enable.item(menu_status);
    enable.item(menu_inventory);

  }


  if (prev_room_no == 249) {
   position(ego,12,119); set(f255);
  }

  draw(ego);
  show.pic();

  animate.obj(door);
  load.view(3);
  set.view(door,3);
  set.cel(door,1);
  set.priority(door,11);
  stop.cycling(door);
  ignore.objs(door);
  position(door,10,102);
  draw(door);

  animate.obj(lever);
  load.view(18);
  set.view(lever,18);
  set.loop(lever,1);
  set.cel(lever,0);
  stop.cycling(lever);
  set.priority(lever,11);
  ignore.objs(lever);
  position(lever,68,89);
  draw(lever);

  animate.obj(trash);
  set.view(trash,18);
  set.loop(trash,2);
  stop.cycling(trash);
  position(trash,96,102);
  draw(trash);

  reset(f252); reset(f251); reset(f250); reset(f249);

}

if (f255) {
  set.loop(door,1); ego_dir = 0;
  erase(ego); program.control();
}
else {
  set.loop(door,0);
  if (!f249) {
    player.control();
  }
}

if (f253) {
  set.cel(door,0);
}
else {
  set.cel(door,1);
}

if (posn(ego,1,116,158,166)) {
  set.priority(ego,12);
}
else {
  release.priority(ego);
}

if (!f249) {
  if (posn(ego,1,60,158,94)) {
    load.view(2);
    set.view(ego, 2);
    set(f16);
  }
  else {
    load.view(0);
    set.view(ego, 0);
    reset(f16);
  }
}

if ((said("open","trash") || said("open","bag") || said("open","can"))) {
  if (posn(ego,80,90,115,116)) {
    print("No, rifling through trash tends to make you stink even more.");
  }
  else {
    print("You're not close enough.");
  }
}

if ((said("look","trash") || said("look","bag") || said("look","can"))) {
  if (trashed) {
    print("The trashcan is empty.  You've done your job.");
  }
  else {
    print("The Fergusons have conveniently placed their garbage on the curb for you to collect.");
  }
}

if ((said("collect","trash","rol") || said("collect","bag","rol") || said("collect","can","rol")
     || said("empty","trash","rol") || said("empty","bag","rol") || said("empty","can","rol")
     || said("use","trash","rol") || said("use","can","rol") || said("use","bag","rol")
     || said("move","trash","rol") || said("move","can","rol") || said("move","bag","rol"))) {
  if (trashed) {
    print("Your job here is done.");
  }
  else {
    if (posn(ego,80,90,115,116)) {
      print("Time to shine."); score++; stop.motion(ego);
      prevent.input(); set(f249); ignore.objs(trash);
      load.view(19); set.view(trash,19); ignore.objs(ego); erase(trash);
      erase(ego); release.loop(trash); set.loop(trash,1); set.cel(trash,0);
      v255 = 1; cycle.time(trash,v255); start.cycling(trash); ignore.blocks(trash);
      draw(trash);
      move.obj(trash,72,112,1,f252);
    }
    else {
      print("You're not close enough.");
    }
  }
}

if (f252) {
  stop.motion(trash); stop.cycling(trash);
  set.view(trash,18); set.loop(trash,3); set.cel(trash,0);
  v255 = 3; cycle.time(trash,v255); reset(f252);
  end.of.loop(trash,f251);
}

if (f251) {
  reset(f251);
  set.view(trash,19); release.loop(trash); v255 = 1; cycle.time(trash,v255);
  start.cycling(trash);
  move.obj(trash,95,102,1,f250);
}

if (f250) {
  reset(f250); set.view(trash,18); set.loop(trash,2); stop.motion(trash);
  reposition.to(ego,96,103); observe.objs(ego); draw(ego);
  player.control(); accept.input(); reset(f249); set(trashed); observe.blocks(trash);
  print("Hmm... heavier than usual.");
  observe.objs(trash);
}

if (said("open","door")) {
  if (posn(ego,48,74,65,80)) {
    print("You're not going inside their house.");
  }
  else {reset(input_parsed);}
}

if ((said("open","door") || said("open","truck"))) {
  if (posn(ego,1,116,33,133)) {
    toggle(f253);
  }
  else {
    print("You're not close enough.");
  }
}

if (said("look","truck")) {
  print("It's your trusty garbage truck, waiting to transport you to wherever you desire.");
}

if (said("look","back truck")) {
  print("You're not interested in the garbage you've collected right now.");
}

if (said("look","lever")) {
  print("The lever on the back of your truck operates the trash compactor.");
}

if ((said("look","tree") || said("look","trees"))) {
  print("Lovely trees...");
}

if (said("look","window")) {
  print("No peaking in windows.");
}

if (said("look","fence")) {
  print("A wooden fence impedes any travel into the Fergusons' backyard.");
}

if (said("look","grass")) {
  print("Well-mowed lawn.  Well-paved street.  What more can you want?");
}

if (said("get in","rol")) {
  if (posn(ego,1,116,33,133)) {
    if (f253) {
      draw(ego);
      ego_dir = 0; toggle(f255);
    }
    else {
      print("The door's closed.");
    }
  }
  else {
    print("You're not close enough.");
  }
}

if ((said("drive","rol") || said("use","car") || said("move","car"))) {
  if ((f255) && (!f253)) {
    if (trashed) {
      new.room(249);
    }
    else {
      print("As a garbageman, you ought to collect the garbage before you leave.");
    }
  }
  else {
    print("Maybe you should be in some kind of vehicle first.");
  }
}

if ((said("look") || said("look","house"))) {
  print("This is the home of the Fergusons, the last house on your route for today.");
}

if ((said("look","mail") || said("look","box") || said("take","mail") || said("open","box"))) {
  print("The mailbox is empty.");
}

if (ego_edge_code == horizon_edge) {
  new.room(2);
}

if (ego_edge_code == right_edge) {
  new.room(2);
}

if (ego_edge_code == bottom_edge) {
  new.room(2);
}

if (ego_edge_code == left_edge) {
  new.room(2);
}

return();