--- deliantra/server/common/living.C 2008/05/06 17:31:21 1.87 +++ deliantra/server/common/living.C 2008/09/25 04:09:57 1.89 @@ -1444,11 +1444,6 @@ * set the new dragon name after gaining levels or * changing ability focus (later this can be extended to * eventually change the player's face and animation) - * - * Note that the title is written to 'own_title' in the - * player struct. This should be changed to 'ext_title' - * as soon as clients support this! - * Please, anyone, write support for 'ext_title'. */ void set_dragon_name (object *pl, const object *abil, const object *skin) @@ -1476,29 +1471,17 @@ if (atnr_is_dragon_enabled (abil->stats.exp) && abil->resist[abil->stats.exp] >= level) atnr = abil->stats.exp; - level = (int) (level / 25.); - /* now set the new title */ - if (pl->contr) + if (level < 25) sprintf (pl->contr->title, "%s hatchling", attacks[atnr]); + else if (level < 50) sprintf (pl->contr->title, "%s wyrm" , attacks[atnr]); + else if (level < 75) sprintf (pl->contr->title, "%s wyvern" , attacks[atnr]); + else if (level < 100) sprintf (pl->contr->title, "%s dragon" , attacks[atnr]); + else { - if (level == 0) - sprintf (pl->contr->title, "%s hatchling", attacks[atnr]); - else if (level == 1) - sprintf (pl->contr->title, "%s wyrm", attacks[atnr]); - else if (level == 2) - sprintf (pl->contr->title, "%s wyvern", attacks[atnr]); - else if (level == 3) - sprintf (pl->contr->title, "%s dragon", attacks[atnr]); - else - { - /* special titles for extra high resistance! */ - if (skin->resist[atnr] > 80) - sprintf (pl->contr->title, "legendary %s dragon", attacks[atnr]); - else if (skin->resist[atnr] > 50) - sprintf (pl->contr->title, "ancient %s dragon", attacks[atnr]); - else - sprintf (pl->contr->title, "big %s dragon", attacks[atnr]); - } + /* special titles for extra high resistance! */ + if (skin->resist[atnr] > 80) sprintf (pl->contr->title, "legendary %s dragon", attacks[atnr]); + else if (skin->resist[atnr] > 50) sprintf (pl->contr->title, "ancient %s dragon" , attacks[atnr]); + else sprintf (pl->contr->title, "big %s dragon" , attacks[atnr]); } strcpy (pl->contr->own_title, ""); @@ -1575,7 +1558,7 @@ skill_obj = get_archetype_by_skill_name (skill_name, SKILL); if (!skill_obj) { - LOG (llevError, "add_player_exp: couldn't find skill %s\n", skill_name); + LOG (llevError, "give_skill_by_name: couldn't find skill %s\n", skill_name); return NULL; } @@ -1585,14 +1568,10 @@ CLEAR_FLAG (skill_obj, FLAG_CAN_USE_SKILL); skill_obj->stats.exp = 0; skill_obj->level = 1; - insert_ob_in_ob (skill_obj, op); + op->insert (skill_obj); if (player *pl = op->contr) - { - pl->last_skill_ob [skill_obj->subtype] = skill_obj; - if (pl->ns) - pl->ns->last_skill_exp[skill_obj->subtype] = -1;//TODO: should be made superfluous - } + pl->link_skills (); return skill_obj; } @@ -1740,10 +1719,10 @@ skill_obj = op->chosen_skill; else { - for (i = 0; i < NUM_SKILLS; i++) - if (op->contr->last_skill_ob[i] && !strcmp (op->contr->last_skill_ob[i]->skill, skill_name)) + for (object *tmp = op->inv; tmp; tmp = tmp->below) + if (tmp->skill == skill_name && tmp->type == SKILL) { - skill_obj = op->contr->last_skill_ob[i]; + skill_obj = splay (tmp); break; } @@ -1755,7 +1734,7 @@ if (flag == SK_EXP_NONE) return; else if (flag == SK_EXP_ADD_SKILL) - give_skill_by_name (op, skill_name); + skill_obj = give_skill_by_name (op, skill_name); } } }