shoot_dam()
===========

FUNKTION
--------
::

    static int shoot_dam(mapping shoot)

DEFINIERT IN
------------
::

    /std/ranged_weapon.c

ARGUMENTE
---------
::

    mapping shoot - Schussdaten

BESCHREIBUNG
------------
::

    Erhaelt von /std/ranged_weapon::cmd_shoot() die Schussdaten und berechnet
    den Schaden der Waffe, basierend auf den P_SHOOTING_WC von Waffe und
    Munition sowie der Geschicklichkeit des Schuetzen. HitFuncs der Munition
    und Skills werden hier ebenfalls beruecksichtigt.

RUECKGABEWERT
-------------
::

    Schaden. Ebenfalls in 'shoot' unter SI_SKILLDAMAGE aktualisiert.

BEMERKUNGEN
-----------
::

    'shoot' enthaelt normalerweise folgende Eintraege:
    * Key P_WEAPON:       die Schusswaffe
    * Key P_WEAPON_TYPE:  P_AMMUNITION, also die Munitions-ID
    * Key P_STRETCH_TIME: P_STRETCH_TIME der Waffe
    * Key P_WC:           P_SHOOTING_WC der Waffe
    * Key P_SHOOTING_WC:  P_SHOOTING_WC der Munition
    * Key P_AMMUNITION:   Munitionsobjekt (eventuell Unit)
    * Key SI_ENEMY:       gueltigen Gegner
    * Key SI_SKILLDAMAGE_TYPE:  Schaden (aus P_DAM_TYPE der Munition)
    * Key SI_SKILLDAMAGE_MSG/2: Munitionsname

SIEHE AUCH
----------
::

    Generell:  P_AMMUNITION, P_SHOOTING_WC, P_STRETCH_TIME
    Methoden:  FindRangedTarget(L), cmd_shoot(L)
    Skills:    UseSkill(L), SkillResTransfer(L)
    Attribute: QueryAttribute
    Sonstiges: fernwaffen, HitFunc

28.Jul 2014 Gloinson

