//
// C Implementation: remort
//
// Description:
//
//
// Author: robo <robo@localhost>, (C) 2005
//
//
//
#if defined(macintosh)
#include <types.h>
#include <time.h>
#else
#include <sys/types.h>
#include <sys/time.h>
#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "mud.h"
void update_all_qobjs(CHAR_DATA * ch);
void do_remort( CHAR_DATA *ch, char *argument )
{
char buf[MAX_INPUT_LENGTH];
int vhit, vmana, vmove, wear_loc, value, sn;
OBJ_DATA *obj,*obj_next;
if (IS_NPC(ch))
{
send_to_char("I'm sorry, mobs cannot remort!\n\r",ch);
return;
}
if (ch->level == LEVEL_IMMORTAL)
{
send_to_char("Heros cannot be remorted, sorry!\n\r",ch);
return;
}
if (ch->level > LEVEL_HERO)
{
send_to_char("Immortals cannot be remorted, sorry!\n\r",ch);
return;
}
if (ch->remorts >= 20)
{
send_to_char("This char has already been remorted too many times.\n\r",ch);
return;
}
ch->remorts += 1;
sprintf(buf,
"Having conquered that which has been set before you, you demand that\n\r"
"the immortals buff you up a little more, maybe with eq or a nifty set of\n\r"
"commands. Well it seems your ego has gotten you into some trouble, as\n\r"
"your mind becomes instantly filled with a loud thunder and images of death.\n\r"
"Maybe today was the wrong time to annoy the immortals...\n\r");
send_to_char(buf,ch);
for (wear_loc = WEAR_LIGHT; wear_loc <= MAX_WEAR; wear_loc++)
{
if ((obj = get_eq_char(ch,wear_loc)) == NULL)
continue;
unequip_char(ch,obj);
}
for (obj = ch->first_carrying; obj != NULL; obj = obj_next)
{
obj_next = obj->next_content;
if (xIS_SET(obj->extra_flags, ITEM_QUEST))
continue;
else
{
obj_from_char( obj );
extract_obj(obj);
}
}
do_restore(ch, ch->name);
vhit = ch->hit /= 3;
vmana = ch->mana /= 3;
vmove = ch->move /= 3;
ch->max_hit = vhit;
ch->max_mana = vmana;
ch->max_move = vmove;
ch->hit = vhit;
ch->mana = vmana;
ch->move = vmove;
for ( sn = 0; sn < top_sn; sn++ )
{
/* Fix by Narn to prevent ssetting skills the player shouldn't have. */
if ( skill_table[sn]->name
&& ( ch->level >= skill_table[sn]->skill_level[ch->class]
|| value == 0 ) )
{
ch->pcdata->learned[sn] = 0;
}
}
ch->level = 10;
ch->exp = 0;
ch->perm_str = 13;
ch->perm_con = 13;
ch->perm_cha = 13;
ch->perm_lck = 13;
ch->perm_wis = 13;
ch->perm_int = 13;
ch->perm_dex = 13;
ch->armor = 100;
ch->hitroll = 0;
ch->damroll = 0;
for ( sn = 0; sn < top_sn; sn++ )
{
/* Fix by Narn to prevent ssetting skills the player shouldn't have. */
if ( skill_table[sn]->name
&& ( ch->level >= skill_table[sn]->skill_level[ch->class]
|| value == 0 ) )
{
ch->pcdata->learned[sn] = 0;
}
}
send_to_char("For all your hard work, the immortals wish to bless you with the following skills.\n\r", ch);
if(ch->remorts>4)
{
send_to_char("Eighth Cast\n\r",ch);
ch->pcdata->learned[gsn_eighth_cast] = 1;
}
if(ch->remorts>3)
{
send_to_char("Eighth Attack and Seventh Cast\n\r",ch);
ch->pcdata->learned[gsn_seventh_cast] = 1;
ch->pcdata->learned[gsn_eighth_attack] = 1;
}
if(ch->remorts>2)
{
send_to_char("Sixth Cast\n\r",ch);
ch->pcdata->learned[gsn_sixth_cast] = 1;
}
if(ch->remorts>1)
{
send_to_char("Seventh Attack and Fifth Cast\n\r",ch);
ch->pcdata->learned[gsn_fifth_cast] = 1;
ch->pcdata->learned[gsn_seventh_attack] = 1;
}
if(ch->remorts>0)
{
send_to_char("Combo, Enhanced Dammage and Fourth Cast\n\r",ch);
ch->pcdata->learned[gsn_combo] = 1;
ch->pcdata->learned[gsn_enhanced_damage] = 1;
ch->pcdata->learned[gsn_fourth_cast] = 1;
}
sprintf( buf, "&R[&CANNOUNCEMENT&R]&c:{xAll congratulate {R%s{x, who has just remorted. {x\n\r", ch->name);
talk_info(AT_PURPLE, buf);
do_double(ch, "exp on 60");
update_all_qobjs(ch);
return;
}