
 FERNWAFFEN

  a. Allgemeines
     Fernwaffen sind eine relativ neue Ergaenzung zum Kampfsystem dieses Muds, 
     die mit der Einfuehrung des Teamkampfes erst moeglich wurde.
     Schon bisher gab es einzelne Fernwaffen (z.B. Robins Bogen), die aber
     Inselloesungen und Sonderfaelle waren. Das neue Standardobjekt fuer 
     Fernwaffen ist nun /std/ranged_weapon.c, das die noetige Funktionalitaet 
     bietet und leicht ueber Properties zu konfigurieren ist. Mit Fernwaffen 
     sind uebrigens ausnahmslos Waffen gemeint, die Munition benoetigen, 
     nicht etwa Speere oder dergleichen.

  ** Bisher sind alle Fernwaffen ausnahmslos genehmigungspflichtig, das  **
  ** gilt auch fuer jegliche Munition.                                   **
     
  b. Properties
     P_WC
        Vorsicht mit dieser Property. Bei Fernwaffen gibt sie _nur_ den
        Schaden bei Zweckentfremdung der Waffe als Knueppel an. 
        Dementsprechend ist dieser Wert extrem niedrig zu halten.
        Standardwert ist hier 30, der auch nur in Ausnahmefaellen 
        ueberschritten werden sollte. Kaum eine Armbrust oder ein Bogen 
        taugt nunmal als grossartige Nahkampfwaffe.

     P_QUALITY
        Wird nur beim Nahkampf mit der Waffe beachtet. Standardmaessig auf
        100 gesetzt, da Boegen und Armbrueste leicht beschaedigt werden,
        wenn man damit auf jemanden einpruegelt.

     P_HIT_FUNC 
        HitFunc fuer den _Nahkampf_. Hat beim Schuss mit der Waffe keinen
        Einfluss. 
                
     P_NR_HANDS
        Boegen und Armbrueste sind in jedem Fall zweihaendig. Einhaendige
        Fernwaffen sind aber denkbar (Schlingen zum Schleudern kleiner 
        Steine z.B.)
        
     P_SHOOTING_WC
        Die Basis-Waffenklasse der Fernwaffe. Zu ihr wird die Waffenklasse
        der Munition addiert, um den endgueltigen Angriffswert beim Schuss
        zu berechnen.
     
     P_RANGE 
        Reichweite der Waffe in Metern. Wichtig, wenn aus Containern 
        (Wachtuermen, Schiffen, etc.) nach aussen geschossen wird.
        Damit das funktioniert, muss dieser Wert hoeher sein als der
        im Container definierte (steht dort in der P_SHOOTING_AREA).
    
     P_STRETCH_TIME
        Anzahl der Runden, die zum Laden/Spannen der Waffe benoetigt
        werden. 1 ist hier der Standardwert, das bedeutet, es kann jede
        Runde geschossen werden.
     
     P_AMMUNITION
        Benoetigter Munitionstyp. Hier ist eine der moeglichen Konstanten
        (MUN_*) einzusetzen (z.B. MUN_ARROW fuer Boegen).
     
     P_NOGET
        Hat bei Fernwaffen eine zusaetzliche Bedeutung. Wenn gesetzt, muss
        die Waffen nicht gezueckt werden, um sie abfeuern zu koennen. Das
        ist z.B. fuer Katapulte gedacht, die im Raum stehen.
        
     Fuer die Munition gibt es kein Standardobjekt. Wichtig ist nur, dass 
     die entsprechenden Properties gesetzt sind. Normalerweise sollte die 
     Munition natuerlich eine Unit sein, aber auch Einzelobjekte (ein
     besonderer Pfeil oder ein grosser Stein fuer ein Katapult) sind 
     moeglich.

     Properties fuer die Munition sind:
     
     P_SHOOTING_WC
        Die Waffenklasse der Munition. Wird zur WC der Waffe addiert.
        
     P_DAM_TYPE
        Schadenstyp der Munition. Sollte normalerweise DT_PIERCE fuer 
        Pfeile aller Art und DT_BLUDGEON fuer stumpfe Munition wie Steine
        sein. Magische Schadensarten sind aber natuerlich moeglich.
        
     P_HIT_FUNC
        HitFunc, die beim Schuss mit der Munition benutzt wird.
        
     Ausserdem muss in der Munition mittels AddId() der entsprechende
     Munitionstyp gesetzt werden, z.B. MUN_ARROW.

  c. Spezialwaffen/Fernwaffen mit Sonderfunktionen
  
     Siehe Hinweise zu entsprechenden Nahkampfwaffen.
     
  d. Genehmigungsgrenzen
     Alle Waffen dieser Art sind grundsaetzlich genehmigungspflichtig.
     Folgende Werte sollten allerdings Obergrenzen darstellen, die
     im Normalfall nicht zu Ueberschreiten sind:
     
     Waffe kann jede Runde abgefeuert werden:  P_SHOOTING_WC 100
     Waffe braucht eine Ladezeit            :  P_SHOOTING_WC 130
     
     Die Obergrenze fuer Munition liegt bei :  P_SHOOTING_WC 60.

  e. Nachbemerkung
     Seid bitte vorsichtig mit P_SHOOTING_AREA in Raeumen/Containern. 
     Bisher ist dieses Schiessen von Raum zu Raum weitestgehend ungetestet,
     und es ist nicht klar, welche Probleme das verursachen kann. Wenn 
     eventuelle Ziele keine Moeglichkeit haben, sich zu wehren oder 
     wegzulaufen, ist schnell jegliche Balance dahin. Die Regionsmagier
     haben bei Abnahme von Gebieten darauf zu achten, dass diese Property
     nur in wenigen, gut begruendeten Raeumen gesetzt wird.
  
 SIEHE AUCH

     balance, ruestungen, waffen, uniques, npcs, grenzwerte,
     attributsveraenderungen, resistenzen, kampfobjekte,
     fernkampfwaffen

------------------------------------------------------------------------------
 LETZTE AeNDERUNG:
    Don, 10.08.2000, 22:30:00 von Paracelsus
