Cannot add box to beach - TADS3.1

Once again, I’m trying to add a wooden box and a metal sign to my beach location. The game compiles with no errors. However, when the game runs, the box doesn’t show up at the beach but the sign does show up and works properly when reading it. The mystery to me is that the sign is after the box in the code. Here’s the code. don’t want to go further until this problem is solved. I have no idea what is going on with this.














/* Room0001: The Actor Starts Game Here. **************************************/

  Beach : OutdoorRoom 'At The Beach' 'At The Beach'
  roomFirstDesc()
  { "This is first description.";
  }
  shortDesc = "You are at the sandy beach.";
 
/* Add wooden box to beach. ***************************************************/

+box: ComplexContainer, Fixture 'large slatted wooden (wood) box*boxes' 'large
 slatted-wood box' 
 "The large wooden box, left here from a precious helicopter flight, lies on
  some small rocks. At its top, there is a metal hasp that can be turned to
  unlock or lock the box."
 //cannotTakeMsg = (backpack.seen ? 'The backpack would be a more convenient
//container. You would be better off using that instead.' : 'The box is much too
// heavy to lift or carry around.')
  initSpecialMsg = "A large slatted-wood box is lying nearby on some small
                    rocks."
subContainer: ComplexComponent, LockableContainer{}
;
++Component 'combination lock*locks' 'lock'
;

/* Add HELP sign to beach. ****************************************************/

class Sign : Readable
;
+sign: Sign, Fixture 'large metal sign' 'metal sign'
  "The sizeable metal sign is firmly attached to a tree near the start of the
   eastern path. It is quite rusty and worn but the printing on it can still be
   read. It just might provide some information about The Magic Forest."
 initSpecialDesc = "Attached to a tree at the beginning of the eastern path is
   a large metal sign."
 cannotTakeMSG = 'Sorry, but it is very rigidly attached to the tree. Besides,
   there is no reason to take it with you.'
 readDesc = "The sign is written in both English and Spanish and  it reads:
   'DANGER! Restricted property beyond this point. Enter at your own risk.'\b
   Property Manager,\b
   Melenkurian\b"
 dobjFor(Read)
 {
  action()
  {
   readsignAchievement.awardPointsOnce();
   inherited;
  }
 } 
 readsignAchievement : Achievement { +5 "reading the sign at the beach" }
;

Once again, I’m in trouble and could use some help :neutral_face: :neutral_face:

The box is there, as far as I can see. Have you tried ‘x box’? I copied your code and it works for me. The box is not being shown in the room description because you didn’t give it an initSpecialDesc or a specialDesc.

Thanks to you, the problem is solved. The box was there. Instead of typing ‘InitSpecialDesc’ I had typed in 'InitSpecialMesg! It sure is easy to get completely confused.

RonG

Yeah, this is one of the easier mistakes to make in T3. If you create your own property for an object – such as, let’s say, initspecialDesc, omitting the capital ‘S’ – the compiler won’t complain, it will just give your object a unique property that will never get called by the library code.