Lpc Manpages

NAME:
  Skills

BESCHREIBUNG:
  Es gibt alte und neue Skills. Zur Zeit sind die alten noch in der
  Ueberzahl. Die werden in P_NEW_SKILLS (sic!) gespeichert.
  Die neuen stehen in P_SKILLS...

  Warum eigentlich neue Skills?

  Die bisherigen Skills sind so unuebersichtlich, dass es nur wenige Leute 
  gibt, die da annaehernd durchsehen. Mir ist es einfach viel zu durcheinander.
  Dazu kommt, dass es fuer den unbedarften Beobachter kein erkennbares
  einheitliches System gibt, ausserdem hat es den Anschein, als ob im jetzigen
  System ziemlich viel gerechnet wird, es ist also eine 'gewachsene Struktur',
  die man am besten nicht mehr anfaesst.

  Nun ist es aber so, dass wir ja vielleicht doch irgendwann einmal Gilden 
  haben wollen, die sich moeglicherweise von der MG-Vorgabe unterscheiden.
  Und an Gilden haengen nun mal auch Faehigkeiten mehr oder weniger direkt
  dran...


  Was sollen die neuen Skills tun?

  - Die Skills sollen *im Groben* die alten ersetzen.

  - Die Skills sollen *sehr* einfach gehalten sein, dafuer soll es ziemlich 
    viele geben. Eigentlich einen fuer jede einigermassen haeufig auftretende
    Taetigkeit. klettern, schwimmen, angriff mit schwert, abwehr mit schild...
   
  Wie werden die Skills 'angewandt'?

  In erster Naeherung: durch die Funktion 'UseNSkill(mixed what)'
  'what' ist der Name des Skills oder der Skill selbst.

  Bei Erstbenutzung eines Skills durch einen Spieler kann ein Defaultskill
  *fuer diesen Spieler* generiert werden. Dort koennen Rassen- und sonstige
  Abhaengigkeiten eingebracht werden. Die Werte, die fuer den Skill erzeugt 
  werden bleiben im Prinzip konstant (wenn nicht was Besonderes passiert).

  Der eigentliche Wert des Skills (eine Zahl zwischen S_LOWER_LIMIT und 
  S_UPPER_LIMIT) dagegen aendert sich natuerlich, und zwar im wesentlichen 
  auf zwei Arten:
  Bei der Anwendung des Skills lernt man dazu und in jedem Spielerreset
  wird der Skillwert erniedrigt, d.h. man verlernt.

  Die entsprechenden Lernwerte koennen bei der Generierung des Skills
  individuell gesetzt werden und stehen dann ebenfalls im Wesentlichen fest.
  Im Unterschied zu den alten Skills koennen diese Werte auch von Spieler
  zu Spieler unterschiedlich sein, ein Fluch koennte zum Beispiel bewirken,
  dass man einen Skill nicht weiter lernen kann.

  So, etwas technischer:


  P_SKILLS       -> ([ skillname                   : skill, ... ])

  skill          -> ([ S_NAME                     : skillname,
           S_VALUE                    : skillvalue
           S_COST                     : mapping
           S_MOD_ON_RESET             : diffvalue 
           S_MOD_ON_USE               : diffvalue 
           S_LOWER_LIMIT              : <val>
           S_UPPER_LIMIT              : <val>
           S_MODIFIER                 : skillmodifier
           S_RESTRICTIONS             : skillrestrictions
        ])


  skillmodifier  -> ({ ({ nextmodtime, <value> }), ... })

  skillrestrictions  -> ([ <propertie>: <value>;<groesser/kleiner>, ... ])

  skillname      -> Name des Skills

  skillvalue     -> Aktueller Wert des Skills

  diffvalue      -> Wert, um den S_VALUE im jedem Reset 
        bzw. bei jeder Benutzung geaendert wird


SIEHE AUCH:
        /std/living/nskills.c