
LEGENDS INFO:

The idea of Legends are to make a kindof Superplayer system possible.
Throughout the different kind of guilds and the fix level system, it's
nearly inpossible to make a general Superplayer system.
[ possible jep but who codes it ? ]

The next point is to give a player, who don't want to wiz something
that secures fun and more power for the future and to make leveling
as Superplayer possible.

I did this by doing following steps:

1.) I created the property "monk_legend" for my guild. This works
    with player->add_property("monk_legend",level). I did this
    in the init of my guildsoul. ~whisky/guild/monk_soul.c

2.) The criterium for the level where following:

    a) The player has to have more than 2000000 exp
    b) The query_age of the player has to be higher than 500000
       thats a real playingtime of > 12 days.
    c) The player can only gain Legend levels when she is no wiz.
    d) from 2000000 exp on the player will get any more 500000 exp
       an additional legend level.
 
3.) The power a player gets when she is legend:

    When the player is legend i raise her power a bit and reduce
    the cost for most features.
    Therefore i put 100 levels in I do that very slow with a general
    define _cost and _dam which can be seen under: 
                ~whisky/guild/skills/defs.h

    The confortable think on it is that i only need to set the normal
    value of a restore_spell_points or hit_player in that define to
    get the value of the Legend as:

    monster->hit_player(_dam(value))  or
    player->restore_spell_points(-_cost(costs))

    * Changing this formulas would effect the whole skill system.

4.) Other players should notice that you are a legend:            

    Therefore I used the chat_demon and the extra_look.

    In ~whisky/guild/extra_look.h I added for anyone to see that
    this player is a Monk Legend when someone looks at her.
    
    In ~whisky/guild/skills/monk.c I added to the chatdemon a level
    list of the logedin Legends and their Legendlevels.

    Please don't get irritated of the closure-call apply or funcall.

           apply(call,this_player(),"query_property","monk_legend")

           is just the same as: 

           
           call_other(this_player(),"query_property","monk_legend") or
           this_player()->query_property("monk_legend") 

           just a bit faster code.

    * With man properties you get what you can do with properties general.
      If any questions just feel free to ask.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Oki here is some code for the guildsoul:

 Just put in the init:

void init()
{
  int lev;

   if (!this_player()->query_immortal() &&
       this_player()->query_level()> 25 && 
       this_player()->query_age()> 500000 && 
       (lev = this_player()->query_exp())> 2000000)
   {
       lev = lev / 500000 - 3;
       this_player()->add_property("monk_legend",lev);
   }


 Now you can ever ask:
     int lev;

     if ( (lev = this_player()->query_property("monk_legend"))!=-1)
     {
          write("You are a Monk Legend level "+to_string(lev)+".\n");
     }

     * Be careful when a property in a player doesn't exist it will
       return -1.

                         Much fun and feel free to ask Whisky

  
         

