Lpc Manpages

P_TMP_ATTACK_MOD

NAME:
    P_TMP_ATTACK_MOD               "attack_mod"

DEFINIERT IN:
    /sys/new_skills.h

BESCHREIBUNG:
    Mindestens 3-elementiges Array ({zeitpunkt, objekt, funktion, ...}).
    Die Funktion wird im 'objekt' mit einem Infomapping {*} als Parameter
    fast am Ende von 'Attack' (des Lebewesens) aufgerufen, wenn der 'zeit-
    punkt' noch nicht ueberschritten ist. Wenn die Funktion 0 zurueckgibt,
    wird 'Attack' abgebrochen, ansonsten wird als Rueckgabe ein Infomapping
    mit einem oder mehreren Eintraegen von SI_SKILLDAMAGE, SI_SKILLDAMAGE_TYPE
    und SI_SPELL erwartet, diese (eventuell veraenderten) Parameter werden
    dann weiterverwendet. Ueber optionale Arrayelemente koennen der Funktion
    weitere Parameter uebergeben werden. Diese Parameter muss sich die
    Funktion allerdings selbst aus dem Array herausholen.
    --------
    {*} Keys: SI_ENEMY (Feind), SI_SKILLDAMAGE_TYPE (Schadenstyp/en),
              SI_SKILLDAMAGE (Schaden), SI_SPELL (Spell), P_WEAPON
              (Waffenobjekt), P_WEAPON_TYPE (Waffentyp)
    Das Rueckgabemapping entspricht den ersten 3 Parametern von 'Defend'.

DOKUMENTIERT:
    14.07.1996 von Mupfel
    05.02.2005 geaendert von Mupfel

BEISPIEL:
    In einem Spellbook wird ein Attack-Mod gesetzt. Der Hook-Funktion
    wird zusaetzlich noch ein Parameter uebergeben (in diesem Falle
    ein int).

    SetProp(P_TMP_ATTACK_MOD, ({ time()+60,
                                 this_object(),
                                 "hook_func",
                                 zusatz_parameter })

    mapping hook_func(mapping ainfo)
    {
      mixed res;
      object pl;
      int parm;

      if (!pl=previous_object() || !living(pl))
        return 0;

      if (!res=pl->QueryProp(P_TMP_ATTACK_MOD))
        return 0;

      if (sizeof(res)<4) || !intp(parm=res[3]))
        return 0;

      // Mach was.... "parm" ist der optionale Parameter
      ...

      dam = ainfo[SI_SKILLDAMAGE];

      return ([ SI_SKILLDAMAGE : dam * 2 ]);  // Schaden verdoppeln
    }


SIEHE AUCH:
    P_TMP_ATTACK_HOOK, P_TMP_DEFEND_HOOK