cotn25/area/
cotn25/src/
/**************************
 * Fuse Code by Xrakisis  * 
 **************************/


#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"


/*
Demon/DRAGON- Shadow Dragon       Demon/Assassin    - Hell's Soldier
Demon/Wraith   - Shadow Fiend        Vampire/Werewolf  - Undead Lycan
Werewolf/Drow  - Stalker             Werewolf/Elemental- Gaia Wolf
Drow/Wraith    - Shadowborn          Drow/Assassin     - Black Assassin
Vampire/Tan    - Succubus            Vampire/Wraith    - Vampyric Mist
Tan/Elemental  - Deva                Tan/Hydra         - Ba'atezu
UK/Hydra       - Nazgul              UK/Assassin       -Undead Assassin
UK/Elemental   - Necromancer         Angel/Paladin     - Heaven's Soldier
Angel/DRAGON- Silver Dragon       Angel/Hydra       -Dragon Rider
Paladin/Draco  - Dragoon             Paladin/Elemental - Druid

Drow: done
Assassin: demon(Hells sold), uk (undead ass), drow black ass
Were: Drow, stalk  vamp, UL  Elem, Gaia wolf
Demon: drac (shaddrag), Wraith (shad fiend), Ass (hells sold)

Tan: elem-DEVA, vamp-Succubus, Hydra-Baatezu
Pal: Draco-Golddrag, angel-Heav soldier, elem-druid
elem: pal-druid, uk-necro, tan-deva
wraith: dem-shadfiend, drow-shadborn, vamp vamp mist
vamp: tan-hellspawn, were-UL, wraith-mist
uk: hydra-nazgul, elem-necro, ass-undead ass
hydra: uk-nazgul, angel-typhon, tan-baatezu
angel: drac-silver drag, hydra-typhon, pal-heav soldier
DRAGON: pal:gold drag, demon-shadow drag, angel-silver drag


*/

void do_fuse( CHAR_DATA *ch, char *argument )
{
  char buf[MAX_STRING_LENGTH];
  CHAR_DATA *gch;
  if (IS_NPC(ch)) return;
  if (ch->pStatus < 5)
  {
    send_to_char("You need at least 5 status to remort.\n\r",ch);
    return;
  }

// drow... wraith(suc) were(stalk) assassin(BA)

  if (IS_CLASS(ch, CLASS_DROW))
  {
    if (ch->oldclass == CLASS_WEREWOLF)
    {
      clearshit(ch);
      ch->class = CLASS_STALKER; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Stalker.\n\r",ch);
      sprintf(buf,"%s The Drow, Former Class Werewolf, Has Fused into a Stalker.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_WRAITH)
    {
      clearshit(ch);
      ch->class = CLASS_HELL_SPAWN; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Hell Spawn.\n\r",ch);
      sprintf(buf,"%s The Drow, Former Class Wraith, Has Fused into a Hell Spawn.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_ASSASSIN)
    {
      clearshit(ch);
      ch->class = CLASS_BLACK_ASSASSIN; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Black Assassin.\n\r",ch);
      sprintf(buf,"%s The Drow, Former Class Assassin, Has Fused into a Black Assassin.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    return;
  }

// Assassin: demon(Hells sold), uk (undead ass), drow black ass

  if (IS_CLASS(ch, CLASS_ASSASSIN))
  {
    if (ch->oldclass == CLASS_DROW)
    {
      clearshit(ch);
      ch->class = CLASS_BLACK_ASSASSIN; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Black Assassin.\n\r",ch);
      sprintf(buf,"%s The Assassin, Former Class Drow, Has Fused into a Black Assassin.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_DEMON)
    {
      clearshit(ch);
      ch->class = CLASS_HELLS_SOLDIER; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Hell's Soldier.\n\r",ch);
      sprintf(buf,"%s The Assassin, Former Class Demon, Has Fused into a Hell's Soldier.\n\r",ch->pcdata->switchname);
      do_info(ch,buf); 
      set_learnable_disciplines(ch);
    }
    else if (ch->oldclass == CLASS_UNDEAD_KNIGHT)
    {
      clearshit(ch);
      ch->class = CLASS_UNDEAD_ASSASSIN; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now An Undead Assassin.\n\r",ch);
      sprintf(buf,"%s The Assassin, Former Class UK, Has Fused into an Undead Assassin.\n\r",ch->pcdata->switchname);
      do_info(ch,buf); 
    }
    return;
  }

// Were: Drow, stalk  vamp, UL  Elem, Gaia wolf

  if (IS_CLASS(ch, CLASS_WEREWOLF))
  {
    if (ch->oldclass == CLASS_DROW)
    {
      clearshit(ch);
      ch->class = CLASS_STALKER; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Stalker.\n\r",ch);
      sprintf(buf,"%s The Werewolf, Former Class Drow, Has Fused into a Stalker.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    else if (ch->oldclass == CLASS_VAMPIRE)
    {
      clearshit(ch);
      ch->class = CLASS_UNDEAD_LYCAN; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Undead Lycan.\n\r",ch);
      sprintf(buf,"%s The Werewolf, Former Class Vampire, Has Fused into an Undead Lycan.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    else if (ch->oldclass == CLASS_ELEMENTAL)
    {
      clearshit(ch);
      ch->class = CLASS_GAIA_WOLF; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Gaia Wolf.\n\r",ch);
      sprintf(buf,"%s The Werewolf, Former Class Elemental, Has Fused into a Gaia Wolf.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    return;
  }

// Demon: drac (shaddrag), Wraith (shad fiend), Ass (hells sold)

  if (IS_CLASS(ch, CLASS_DEMON))
  {
    if (ch->oldclass == CLASS_DRAGON)
    {
      clearshit(ch);
      ch->class = CLASS_SHADOW_DRAGON; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Shadow Dragon.\n\r",ch);
      sprintf(buf,"%s The Demon, Former Class DRAGON, Has Fused into a Shadow Dragon.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    else if (ch->oldclass == CLASS_WRAITH)
    {
      clearshit(ch);
      ch->class = CLASS_SHADOW_FIEND; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Shadow Fiend.\n\r",ch);
      sprintf(buf,"%s The Demon, Former Class Wraith, Has Fused into a Shadow Fiend.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    else if (ch->oldclass == CLASS_ASSASSIN)
    {
      clearshit(ch);
      ch->class = CLASS_HELLS_SOLDIER; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Hells Soldier.\n\r",ch);
      sprintf(buf,"%s The Demon, Former Class Assassin, Has Fused into a Hells Soldier.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    return;
  }

// Tan: elem-DEVA, vamp-Succubus, Hydra-Baatezu

  if (IS_CLASS(ch, CLASS_TANARRI))
  {
    if (ch->oldclass == CLASS_ELEMENTAL)
    {
      clearshit(ch);
      ch->class = CLASS_DEVA; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Deva.\n\r",ch);
      sprintf(buf,"%s The Tanarri, Former Class Elemental, Has Fused into a Deva.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_VAMPIRE)
    {
      clearshit(ch);
      ch->class = CLASS_HELL_SPAWN; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Hell Spawn.\n\r",ch);
      sprintf(buf,"%s The Tanarri, Former Class Vampire, Has Fused into a Hell Spawn.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    else if (ch->oldclass == CLASS_HYDRA)
    {
      clearshit(ch);
      ch->class = CLASS_BAATEZU; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Ba'atezu.\n\r",ch);
      sprintf(buf,"%s The Tanarri, Former Class Hydra, Has Fused into a Ba'atezu.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    return;
  }

// Pal: Draco-Golddrag, angel-Heav soldier, elem-druid

  if (IS_CLASS(ch, CLASS_PALADIN))
  {
    if (ch->oldclass == CLASS_DRAGON)
    {
      clearshit(ch);
      ch->class = CLASS_GOLD_DRAGON; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Gold Dragon.\n\r",ch);
      sprintf(buf,"%s The Paladin, Former Class DRAGON, Has Fused into a Gold Dragon.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_ANGEL)
    {
      clearshit(ch);
      ch->class = CLASS_HEAVENS_SOLDIER; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Heavens Soldier.\n\r",ch);
      sprintf(buf,"%s The Paladin, Former Class Angel, Has Fused into a Heavens Soldier.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_ELEMENTAL)
    {
      clearshit(ch);
      ch->class = CLASS_DRUID; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Druid.\n\r",ch);
      sprintf(buf,"%s The Paladin, Former Class Elemental, Has Fused into a Druid.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    return;
  }

// elem: pal-druid, uk-necro, tan-deva

  if (IS_CLASS(ch, CLASS_ELEMENTAL))
  {
    if (ch->oldclass == CLASS_PALADIN)
    {
      clearshit(ch);
      ch->class = CLASS_DRUID; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Druid.\n\r",ch);
      sprintf(buf,"%s The Elemental, Former Class Paladin, Has Fused into a Druid.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_UNDEAD_KNIGHT)
    {
      clearshit(ch);
      ch->class = CLASS_NECROMANCER; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Necromancer.\n\r",ch);
      sprintf(buf,"%s The Elemental, Former Class UK, Has Fused into a Necromancer.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_TANARRI)
    {
      clearshit(ch);
      ch->class = CLASS_DEVA; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Deva.\n\r",ch);
      sprintf(buf,"%s The Elemental, Former Class Tanar'ri, Has Fused into a Deva.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    return;
  }

// wraith: dem-shadfiend, drow-shadborn, vamp vamp mist

  if (IS_CLASS(ch, CLASS_WRAITH))
  {
    if (ch->oldclass == CLASS_DEMON)
    {
      clearshit(ch);
      ch->class = CLASS_SHADOW_FIEND; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Shadow Fiend.\n\r",ch);
      sprintf(buf,"%s The Wraith, Former Class Demon, Has Fused into a Shadowfiend.\n\r",ch->pcdata->switchname);
      set_learnable_disciplines(ch);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_DROW)
    {
      clearshit(ch);
      ch->class = CLASS_SHADOWBORN; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Shadowborn.\n\r",ch);
      sprintf(buf,"%s The Wraith, Former Class Drow, Has Fused into a Shadowborn.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_VAMPIRE)
    {
      clearshit(ch);
      ch->class = CLASS_VAMPIRIC_MIST; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Vampyric Mist.\n\r",ch);
      sprintf(buf,"%s The Wraith, Former Class Vampire, Has Fused into a Vampyric Mist.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    return;
  }

// vamp: tan-hellspawn, were-UL, wraith-mist

  if (IS_CLASS(ch, CLASS_VAMPIRE))
  {
    if (ch->oldclass == CLASS_TANARRI)
    {
      clearshit(ch);
      ch->class = CLASS_HELL_SPAWN; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Hell Spawn.\n\r",ch);
      sprintf(buf,"%s The Vampire, Former Class Tanar'ri, Has Fused into a Hell Spawn.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    else if (ch->oldclass == CLASS_WEREWOLF)
    {
      clearshit(ch);
      ch->class = CLASS_UNDEAD_LYCAN; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now An Undead Lycan.\n\r",ch);
      sprintf(buf,"%s The Vampire, Former Class Werewolf, Has Fused into an Undead Lycan.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    else if (ch->oldclass == CLASS_WRAITH)
    {
      clearshit(ch);
      ch->class = CLASS_VAMPIRIC_MIST; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Vampyric Mist.\n\r",ch);
      sprintf(buf,"%s The Vampire, Former Class Wraith, Has Fused into a Vampyric Mist.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    return;
  }

// uk: hydra-nazgul, elem-necro, ass-undead ass

  if (IS_CLASS(ch, CLASS_UNDEAD_KNIGHT))
  {
    if (ch->oldclass == CLASS_HYDRA)
    {
      clearshit(ch);
      ch->class = CLASS_NAZGUL; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Nazgul.\n\r",ch);
      sprintf(buf,"%s The UK, Former Class Hydra, Has Fused into a Nazgul.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      return;
    }
    else if (ch->oldclass == CLASS_ELEMENTAL)
    {
      clearshit(ch);
      ch->class = CLASS_NECROMANCER; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Necromancer.\n\r",ch);
      sprintf(buf,"%s The UK, Former Class Elemental, Has Fused into a Necromancer.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      return;
    }
    else if (ch->oldclass == CLASS_ASSASSIN)
    {
      clearshit(ch);
      ch->class = CLASS_UNDEAD_ASSASSIN; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Undead Assassin.\n\r",ch);
      sprintf(buf,"%s The UK, Former Class Assassin, Has Fused into a Undead Assassin.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      return;
    }
    return;
  }

// hydra: uk-nazgul, angel-typhon, tan-baatezu

  if (IS_CLASS(ch, CLASS_HYDRA))
  {
    if (ch->oldclass == 5)
    {
      clearshit(ch);
      ch->class = CLASS_BAATEZU;
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Ba'atezu.\n\r",ch);
      sprintf(buf,"%s The Hydra, Former Class Tanar'ri, Has Fused into a Ba'atezu.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      return;
    }
    else if (ch->oldclass == 6)
    {
      clearshit(ch);
      ch->class = CLASS_TYPHON;
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Typhon.\n\r",ch);
      sprintf(buf,"%s The Hydra, Former Class Angel, Has Fused into a Typhon.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      return;
    }
    else if (ch->oldclass == 7)
    {
      clearshit(ch);
      ch->class = CLASS_NAZGUL; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Nazgul.\n\r",ch);
      sprintf(buf,"%s The Hydra, Former Class UK, Has Fused into a Nazgul.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      return;
    }
    else
    {
      stc("You could not achieve fusion!\n\r", ch);
      return;
    }
  
  }

// angel: drac-silver drag, hydra-typhon, pal-heav soldier

  if (IS_CLASS(ch, CLASS_ANGEL))
  {
    if (ch->oldclass == CLASS_DRAGON)
    {
      clearshit(ch);
      ch->class = CLASS_SILVER_DRAGON; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Silver Dragon.\n\r",ch);
      sprintf(buf,"%s The Angel, Former Class DRAGON, Has Fused into a Silver Dragon.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_HYDRA)
    {
      clearshit(ch);
      ch->class = CLASS_TYPHON; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Typhon.\n\r",ch);
      sprintf(buf,"%s The Angel, Former Class Hydra, Has Fused into a Typhon .\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_PALADIN)
    {
      clearshit(ch);
      ch->class = CLASS_HEAVENS_SOLDIER; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Heavens Soldier.\n\r",ch);
      sprintf(buf,"%s The Angel, Former Class Paladin, Has Fused into a Heavens Soldier.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    return;
  }

// DRAGON: pal:gold drag, demon-shadow drag, angel-silver drag


  if (IS_CLASS(ch, CLASS_DRAGON))
  {
    if (ch->oldclass == CLASS_PALADIN)
    {
      clearshit(ch);
      ch->class = CLASS_GOLD_DRAGON; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Gold Dragon.\n\r",ch);
      sprintf(buf,"%s The DRAGON, Former Class Paladin, Has Fused into a Gold Dragon.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    else if (ch->oldclass == CLASS_DEMON)
    {
      clearshit(ch);
      ch->class = CLASS_SHADOW_DRAGON; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Shadow Dragon.\n\r",ch);
      sprintf(buf,"%s The DRAGON, Former Class Demon, Has Fused into a Shadow Dragon.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
      set_learnable_disciplines(ch);
    }
    else if (ch->oldclass == CLASS_ANGEL)
    {
      clearshit(ch);
      ch->class = CLASS_SILVER_DRAGON; 
      SET_BIT(ch->immune, IMM_HYBRID);
      send_to_char("You Are Now A Silver Dragon.\n\r",ch);
      sprintf(buf,"%s The DRAGON, Former Class Angel, Has Fused into a Silver Dragon.\n\r",ch->pcdata->switchname);
      do_info(ch,buf);
    }
    return;
  }
  return;
}