
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
