P_TARGET_AREA
*************


NAME
====

   P_TARGET_AREA     "target_area"


DEFINIERT IN
============

   <combat.h>


BESCHREIBUNG
============

   Kann in einem Raum gesetzt werden, um einen anderen, von dort aus mit
   Fernkampfwaffen beschiessbaren Raum als Objekt oder Objektnamen (zu
   einem geladenen Objekt) festzulegen.


BEMERKUNGEN
===========

   Ein Schuetze kann nur in den anderen Raum schiessen, wenn die P_RANGE
   seiner Waffe mindest gleich der P_SHOOTING_AREA des Raums (nicht des
   Zielraums) ist.

   Idealerweise sollte in mit P_TARGET_AREA angegebenen Raeumen auch
   P_NEVER_CLEAN gesetzt sein.


BEISPIELE
=========

   // #1 Ein Baum-Raum (/std/room)
   void create() {
     ::create();
     SetProp(P_INT_SHORT, "Auf einem Baum");
     SetProp(P_INT_LONG, break_string("Du hockst auf einem Baum und kannst "
       "auf die Lichtung unter Dir sehen.\n");

     AddExit("unten", RAEUME("lichtung"));

     SetProp(P_TARGET_AREA, RAEUME("lichtung"));  // Lichtung beschiessbar
     SetProp(P_SHOOTING_AREA, 15);                // 15 Entfernung
   }

   // #2 Ein Elefanten-Transporter (/std/transport)
   // Er trampelt durch mehrere Raeume durch und der Schuetze kann vom
   // Ruecken des Elefanten aus auf Gegner draussen schiessen.
   void create() {
     ::create();
     SetProp(P_NAME, "Kampfelefant");
     AddId(({"elefant", "kampfelefant")});
     SetProp(P_GENDER, MALE);
     SetProp(P_SHORT, "Ein Kampfelefant");
     SetProp(P_INT_SHORT, "Auf einem Kampfelefanten");
     // P_LONG, P_INT_LONG

     SetProp(P_ENTERCMDS, ({"kletter", "erkletter"}));
     SetProp(P_LEAVECMDS, ({"verlass", "verlasse"}));

     SetProp(P_ARRIVEMSG, ({"Der Elefant trampelt in einen Raum.\n",
                            "Ein Kampfelefant trampelt herein.\n"}));
     SetProp(P_DEPARTMSG, ({"Der Elefant trampelt weiter.\n",
                            "Der Kampfelefant trampelt weiter.\n"}));

     SetProp(P_SHOOTING_AREA, 8); // weiter als 8 sollte man schiessen

     AddRoute(RAEUME("schlachtfeld"), 20+random(10), 6, "Schlachtfeld");
     AddRoute(RAEUME("burgtor"), 20+random(10), 6, "Burgtor");
     AddRoute(RAEUME("burghof"), 20+random(10), 6, "Burghof");
     AddRoute(RAEUME("halle"), 20+random(10), 6, "Halle");
     AddRoute(RAEUME("bresche"), 20+random(10), 6, "Bresche");
     // ...

     Start();
   }


SIEHE AUCH
==========

   Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
   Methoden:  FindRangedTarget(L), shoot_dam(L), cmd_shoot(L)
   Gebiet:    P_RANGE, P_SHOOTING_AREA
   Raeume:    P_NEVER_CLEAN
   Sonstiges: fernwaffen

29.Jul 2014 Gloinson
