mcloud2/i3/
#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"

void do_gainsymbiote(CHAR_DATA * ch, char *argument)
{
        char      buf[MAX_STRING_LENGTH];
	char arg[MAX_INPUT_LENGTH];

	if (IS_NPC(ch))
	return;
 
  one_argument( argument, arg);  
        
  if (ch->level < 3)
  {
    send_to_char("You must be an avatar to gain a Symbiote.\n\r",ch);
    return;
  }

  if (!IS_NPC(ch) && ch->symbiotetype != 0)
  {   
    send_to_char("You already have a symbiote.\n\r",ch);
    return;
  }

  if (arg[0] == '\0')
  {
  
        send_to_char("type gainsymbiote (name) to choose a Symbiote.\n\r",ch);
	send_to_char("#Y--#CDeath Symbiote\n\r",ch);
        send_to_char("#Y--#CLife Symbiote\n\r",ch);
	send_to_char("Cost: 200,000 Bones\n\r",ch);
        return;
  }



if (!str_cmp(arg,"death"))
{
   if (ch->bones < 200000)
   {
        send_to_char( "You do not have enough bones.\n\r", ch);
        return;
   }
   else
   {
	ch->symbiotetype = SYMBIOTE_DEATH;
	send_to_char( "A Death Symbiote absorbs into your body.\n\r", ch);
	ch->bones -= 200000;
	return;
   }
}        
else if (!str_cmp(arg,"life"))
{
   if (ch->bones < 200000)
   {
        send_to_char( "You do not have enough bones.\n\r", ch);
        return;
   }
   else
   {
	ch->symbiotetype = SYMBIOTE_LIFE;
	send_to_char( "A Life Symbiote absorbs into your body.\n\r", ch);
	ch->bones -= 200000;
	return;
   }
}        
  else do_gainsymbiote(ch,"");   
  return;
}


void do_advancesymbiote(CHAR_DATA * ch, char *argument)
{
        char      buf[MAX_STRING_LENGTH];
	char arg1[MAX_INPUT_LENGTH];
	int sgainexp = 10000 * ch->symbiotelvl;
	int sgainbones = 100 * ch->symbiotelvl;
	int mkills = 1000;

	if (IS_NPC(ch))
	return;

  one_argument( argument, arg1);

  if (ch->level < 3)
  {
    send_to_char("You must be avatar to advance your Symbiote.\n\r",ch);
    return;
  }
  if (ch->symbiotetype < 1)
  {
    send_to_char("You do not have a symbiote.\n\r",ch);
    return;
  }

  if (arg1[0] == '\0')
  {  
  
send_to_char("#R[#0--------------------#R[#7Symbiote Screen#R]#0--------------------#R]#n\n\r", ch);


	if (ch->symbiotetype == 2) stc("Death Symbiote\n\r",ch);
	if (ch->symbiotetype == 1) stc("Life Symbiote\n\r",ch);


    sprintf(buf, "Damroll Modifier: %d  \n\r",ch->symbiotedr);
    send_to_char(buf,ch);
    send_to_char("(damroll) cost 1 point for +5 DR\n\r", ch);
     

    sprintf(buf, "Hitroll Modifier: %d\n\r",ch->symbiotehr);
    send_to_char(buf,ch);
    send_to_char("(hitroll) cost 1 point for +5 HR\n\r", ch);

    sprintf(buf, "AC Modifier: %d\n\r",ch->symbioteac);
    send_to_char(buf,ch);
    send_to_char("(AC) cost 1 point for -10 AC\n\r", ch);

    sprintf(buf, "Damcap Modifier: %d\n\r",ch->symbiotedc);
    send_to_char(buf,ch);
    send_to_char("(damcap) cost 1 point for +10 Damcap\n\r", ch);

    sprintf(buf, "Current Level: %d\n\r",ch->symbiotelvl);
    send_to_char(buf,ch);

    sprintf(buf, "Symbiote Points %d\n\r",ch->symbiotepoints);
    send_to_char(buf, ch);

    sprintf(buf, "Mob kills until next point: %d\n\r",(mkills -= ch->symbiotemkills));
    send_to_char(buf,ch);

    sprintf(buf,"Cost of advancing symbiote's level :%d EXP, %d Bones\n\r", sgainexp, sgainbones);
    send_to_char(buf,ch);

    send_to_char("Symbiote Spells and Skills\n\r",ch);
    send_to_char("Level 0: 2x Exp\n\r",ch);
    send_to_char("Level 15: Spirit Armor\n\r",ch);
    send_to_char("Level 25: Bark Skin\n\r",ch);
    send_to_char("Level 60: Primal Rage\n\r",ch);

	if (ch->symbiotetype == 2)
    send_to_char("Level 80: Death Ray\n\r",ch);
	if (ch->symbiotetype == 1)
    send_to_char("Level 80: Holy Beam\n\r",ch);

/*    if (ch->symbiotetype == 1) 
    {
    send_to_char("Death Symbiote Abilities\n\r", ch);
    send_to_char("
   send_to_char("Superberserk (level 0)\n\r", ch);
    send_to_char("Tremble (level 20)\n\r", ch);
    send_to_char("4xexp (level 25)\n\r", ch);
    send_to_char("Greathelm (level 30)\n\r", ch);
    send_to_char("Mistform (level 50)\n\r", ch);
    send_to_char("Displacerform (level 70)\n\r", ch);
    }
    if (ch->symbiotetype == 2) 
    {
    send_to_char("Life Symbiote Abilities\n\r", ch);
    send_to_char("Thunderhammer (level 0)\n\r", ch);
    send_to_char("4xexp (level 25)\n\r", ch);
    send_to_char("Lifeshield (level 30)\n\r", ch);
    send_to_char("Mistform (level 50)\n\r", ch);
    }

*/
	send_to_char("#R[#0--------------------#R[#7Symbiote Screen#R]#0--------------------#R]#n\n\r", ch);
   return;
}


if (!str_cmp(arg1,"damroll"))
{

	if (ch->symbiotedr > 200)
	{
	send_to_char( "Symbiote Damroll Maxed\n\r", ch);
	return;
	}
	if (ch->symbiotepoints < 1)
	{
	send_to_char( "Not enough symbiote points.\n\r", ch);
	return;
	}
	send_to_char( "Damroll increased by 5.\n\r", ch);
	ch->symbiotedr += 5;
        ch->symbiotepoints -= 1;
	return;
}

if (!str_cmp(arg1,"hitroll"))
{

	if (ch->symbiotehr > 200)
	{
	send_to_char( "Symbiote Hitroll Maxed\n\r", ch);
	return;
	}
        if (ch->symbiotepoints < 1)
        {
        send_to_char( "Not enough symbiote points.\n\r", ch);
        return;
        }
	send_to_char( "Hitroll increased by 5.\n\r", ch);
	ch->symbiotehr += 5;
        ch->symbiotepoints -= 1;
	return;
}
if (!str_cmp(arg1,"damcap"))
{

	if (ch->symbiotedc > 400)
	{
	send_to_char( "Symbiote Damcap Maxed\n\r", ch);
	return;
	}
        if (ch->symbiotepoints < 1)
        {
        send_to_char( "Not enough symbiote points.\n\r", ch);
        return;
        }
	send_to_char( "Damcap increased by 10.\n\r", ch);
	ch->symbiotedc += 10;
        ch->symbiotepoints -= 1;
	return;
}
if (!str_cmp(arg1,"ac"))
{

	if (ch->symbioteac > 400)
	{
	send_to_char( "Symbiote AC Maxed\n\r", ch);
	return;
	}
        if (ch->symbiotepoints < 1)
        {
        send_to_char( "Not enough symbiote points.\n\r", ch);
        return;
        }
	send_to_char( "Armor increased by 10.\n\r", ch);
	ch->symbioteac += 10;
        ch->symbiotepoints -= 1;
	return;
}
if (!str_cmp(arg1,"level"))
{
		
	if( ch->symbiotelvl >= 100 )
	{
        send_to_char( "Already Maximum Symbiote Level.\n\r", ch );
        return;
	}
	if( ch->exp < sgainexp )
	{
        sprintf( buf, "Not enough Experience points, you need %d more.\n\r", ( sgainexp - ch->exp ) );
        send_to_char( buf, ch );
        return;
        }
        if( ch->bones < sgainbones ) 
	{
        sprintf( buf, "Not enough Bones, you need %d more.\n\r", ( sgainbones - ch->bones ) );
        send_to_char( buf, ch );
        return;
        }


        ch->bones -= sgainbones;
        ch->exp -= sgainexp;
        ch->symbiotelvl++;
	ch->symbiotepoints++;
	if (ch->symbiotetype == 2) stc("Your Death Symbiote has gained a level.\n\r",ch);
	if (ch->symbiotetype == 1) stc("Your Life Symbiote has gained a level.\n\r",ch);
}
	

return;
}

void do_consecrate(CHAR_DATA *ch, char *argument)
{
	OBJ_DATA *obj;
	char arg1[MAX_INPUT_LENGTH];
	char arg2[MAX_INPUT_LENGTH];
	char buf[MAX_STRING_LENGTH];
	int livingweap_needed = 0;

	argument = one_argument( argument, arg1 );
	argument = one_argument( argument, arg2 );

	if (arg1[0] == '\0')
	{
	send_to_char("Which item do you wish to consecrate?\n\r", ch);
	return;
	}
	if ( (obj = get_obj_carry(ch, arg1, ch)) == NULL)
	{
	send_to_char("You are not carrying that item.\n\r", ch);
	return;
	}
	if (obj->item_type != ITEM_WEAPON)
	{
	send_to_char("You may only Consecrate weapons.\n\r",ch);
	return;
	}
      else if (obj->item_type == ITEM_WEAPON)
	{
	sprintf( buf, "Weapon Name: %s \n\r", obj->short_descr );
	send_to_char( buf, ch );
        sprintf(buf, "Weapon is of type %s.\n\r", flag_string(weapon_flags, obj->value[3]));
	send_to_char( buf, ch );
	sprintf( buf, "Weapon Damage Min: %d  Max: %d \n\r", obj->value[1], obj->value[2] );
	send_to_char( buf, ch );
	sprintf( buf, "Weapon Level: %d, Weapon Points: %d \n\r", obj->weapon_level, obj->weapon_points);
	send_to_char( buf, ch );
	livingweap_needed = (obj->weapon_level * 100);
	sprintf( buf, "Weapon Experiance: %d, EXP til next Level: %d \n\r", obj->weapon_currentxp, 
	(livingweap_needed - obj->weapon_currentxp));
	send_to_char( buf, ch );
	sprintf( buf, "Earth Level: %d \n\r", obj->earth_level );
	send_to_char( buf, ch );
	sprintf( buf, "Lightning Level: %d \n\r", obj->lightning_level );
	send_to_char( buf, ch );
	sprintf( buf, "Fire Level: %d \n\r", obj->fire_level );
	send_to_char( buf, ch );
	sprintf( buf, "Water Level: %d \n\r", obj->water_level );
	send_to_char( buf, ch );
	springf( buf, "Shocking(5), Flaming(5), Frost(5), Vampiric(5), Poison(5)\n\r",ch);
	send_to_char( buf, ch );
	sprintf( buf, "Souls obtained With %s: %d \n\r",obj->short_descr, obj->soul_level );
	send_to_char( buf, ch );
	send_to_char("Cost of Advancing weapon: 10 Weapon Points\n\r",ch);
	send_to_char("Cost of Min Damage Increase: 1 Cost of Max Damage Increase: 1 \n\r", ch);
	}
	if (!str_cmp(arg2,"flaming"))
	{
		if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s is engulfed in fire.\n\r",obj->short_descr);
		send_to_char(buf,ch);
		SET_BIT(obj->weapflags, WEAPON_FLAMING);
		obj->weapon_points -= 5;
		return;
		}
	}
	if (!str_cmp(arg2,"shocking"))
	{
		if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s is enveloped with Electicity.\n\r",obj->short_descr);
		send_to_char(buf,ch);
		SET_BIT(obj->weapflags, WEAPON_SHOCKING);
		obj->weapon_points -= 5;
		return;
		}
	}
	if (!str_cmp(arg2,"frost"))
	{
		if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s is covered with ice.\n\r",obj->short_descr);
		send_to_char(buf,ch);
		SET_BIT(obj->weapflags, WEAPON_FROST);
		obj->weapon_points -= 5;
		return;
		}
	}
	if (!str_cmp(arg2,"vampiric"))
	{
		if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s absorbs an evil taint.\n\r",obj->short_descr);
		send_to_char(buf,ch);
		SET_BIT(obj->weapflags, WEAPON_VAMPIRIC);
		obj->weapon_points -= 5;
		return;
		}
	}
	if (!str_cmp(arg2,"poison"))
	{
		if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s is coated with poison.\n\r",obj->short_descr);
		send_to_char(buf,ch);
		SET_BIT(obj->weapflags, WEAPON_POISON);
		obj->weapon_points -= 5;
		return;
		}
	}
	if (!str_cmp(arg2,"earth"))
	{
		if (obj->weapon_points < 10)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s earth raised by one.\n\r",obj->short_descr);
		send_to_char(buf,ch);
		obj->earth_level++;
		obj->weapon_points -= 10;
		return;
		}
	}
	if (!str_cmp(arg2,"lightning"))
	{
		if (obj->weapon_points < 10)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s lightning raised by one.\n\r",obj->short_descr);
		send_to_char(buf,ch);
		obj->lightning_level++;
		obj->weapon_points -= 10;
		return;
		}
	}
	if (!str_cmp(arg2,"fire"))
	{
		if (obj->weapon_points < 10)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s fire raised by one.\n\r",obj->short_descr);
		send_to_char(buf,ch);
		obj->fire_level++;
		obj->weapon_points -= 10;
		return;
		}
	}
	if (!str_cmp(arg2,"water"))
	{
		if (obj->weapon_points < 10)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s water raised by one.\n\r",obj->short_descr);
		send_to_char(buf,ch);
		obj->water_level++;
		obj->weapon_points -= 10;
		return;
		}
	}
	if (!str_cmp(arg2,"min"))
	{
		if (obj->weapon_points < 5)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s Min Damage increases!\n\r",obj->short_descr);
		send_to_char(buf,ch);
		obj->value[1]++;
		obj->weapon_points -= 1;
		return;
		}
	}
	if (!str_cmp(arg2,"max"))
	{
		if (obj->weapon_points < 1)
		{
		send_to_char("You dont have enough weapon points.\n\r",ch);
		return;
		}
		else
		{
		sprintf(buf,"%s's Max Damage increases!\n\r",obj->short_descr);
		send_to_char(buf,ch);
		obj->value[2]++;
		obj->weapon_points -= 1;
		return;
		}
	}

}