A missing include is not causing a crash but a compiler error. What I would do now:

- Remove line by line of grass_shot. E.g. start with:

Code:
function glass_shot()
{
  beep();
}



then add:

Code:
function glass_shot()
{
  if(event_type == EVENT_SHOOT)
  {
    beep();
  }
}



And so on. This is called debugging wink

Next step would be to read the manual which says that all pointers are only valid until the next wait call. What you do is
that you call a wait(1); and then the ent_remove(me) but the "me" might be empty or point to another entity already. So try to
save your me pointer in a temporaty pointer and call a delete on that one.