/**************************
* 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;
}