/*Origional code by Ghreth, of Criminals passing*/
/*triton.darkstarllc.com 6005*/
/*This is my morph_weapon code, follow all licences where applicable:)
What this code does is allows you to flag weapons as 'morph', when
wielding a morphing weapon you have the option of changing its actual
type, for example: It can start off as any type, we will say exotic,
you can then morph the weapon into a sword, or if your favorite weapon
is a mace then morph it into a mace. There is also a penalty I added
for the weapon, morphing will take its toll. All the shifting and changing
earns the weapons -3 condition for each successful morph, and a -1 for an
unsuccessful morph. The only time a morph is unsuccessful is if you
dont type in a proper weapon type. And thats it, have fun!*/
/*In merc.h along with the rest of your WEAPON_ defines.*/
#define WEAPON_MORPH (N)
/*In handler.c with the rest of the WEAPON_ */
{ "morph", WEAPON_MORPH, TRUE },
/*In tables.c, you know where by now:)*/
if (weapon_flags & WEAPON_MORPH ) strcat(buf, " morph");
/*Add to act_obj.c or where you feel it should go.*/
void do_morph_weapon( CHAR_DATA *ch, char *argument )
{
OBJ_DATA *obj;
char buf[MSL];
char arg1[MIL], arg2[MIL];
if (IS_NPC(ch))
{
send_to_char( "Huh?\n\r", ch );
return;
}
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
obj = get_eq_char(ch, WEAR_WIELD);
if(obj == NULL)
{
send_to_char( "You are not wielding a weapon to morph.\n\r", ch );
return;
}
if (!IS_WEAPON_STAT(obj, WEAPON_MORPH))
{
send_to_char( "You do not possess morphing weapon.\n\r", ch );
return;
}
if ( arg1[0] == '\0' || arg2[0] == '\0' )
{
send_to_char( "Syntax: morph <weapon> <type>\n\r", ch );
return;
}
if ( ( obj = get_eq_char( ch, WEAR_WIELD ) ) == NULL )
{
send_to_char( "You do not seem to be wielding that.\n\r", ch );
return;
}
obj->condition -= 3;
if (obj->condition < 2)
{
act("$p crumbles under the stress!",ch,obj,NULL,TO_ALL);
extract_obj( obj );
return;
}
if ( !str_cmp( arg2, "exotic" ) )
{
obj->value[0] = WEAPON_EXOTIC;
sprintf( buf, "You fiddle with $p and morph it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_CHAR );
sprintf( buf, "$n fiddles with $p and morphs it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_ROOM );
return;
}
else if ( !str_cmp( arg2, "sword" ) )
{
obj->value[0] = WEAPON_SWORD;
sprintf( buf, "You fiddle with $p and morph it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_CHAR );
sprintf( buf, "$n fiddles with $p and morphs it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_ROOM );
return;
}
else if ( !str_cmp( arg2, "dagger" ) )
{
obj->value[0] = WEAPON_DAGGER;
sprintf( buf, "You fiddle with $p and morph it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_CHAR );
sprintf( buf, "$n fiddles with $p and morphs it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_ROOM );
return;
}
else if ( !str_cmp( arg2, "spear" ) )
{
obj->value[0] = WEAPON_SPEAR;
sprintf( buf, "You fiddle with $p and morph it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_CHAR );
sprintf( buf, "$n fiddles with $p and morphs it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_ROOM );
return;
}
else if ( !str_cmp( arg2, "staff" ) )
{
obj->value[0] = WEAPON_STAFF;
sprintf( buf, "You fiddle with $p and morph it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_CHAR );
sprintf( buf, "$n fiddles with $p and morphs it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_ROOM );
return;
}
else if ( !str_cmp( arg2, "mace" ) )
{
obj->value[0] = WEAPON_MACE;
sprintf( buf, "You fiddle with $p and morph it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_CHAR );
sprintf( buf, "$n fiddles with $p and morphs it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_ROOM );
return;
}
else if ( !str_cmp( arg2, "axe" ) )
{
obj->value[0] = WEAPON_AXE;
sprintf( buf, "You fiddle with $p and morph it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_CHAR );
sprintf( buf, "$n fiddles with $p and morphs it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_ROOM );
return;
}
else if ( !str_cmp( arg2, "flail" ) )
{
obj->value[0] = WEAPON_FLAIL;
sprintf( buf, "You fiddle with $p and morph it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_CHAR );
sprintf( buf, "$n fiddles with $p and morphs it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_ROOM );
return;
}
else if ( !str_cmp( arg2, "whip" ) )
{
obj->value[0] = WEAPON_WHIP;
sprintf( buf, "You fiddle with $p and morph it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_CHAR );
sprintf( buf, "$n fiddles with $p and morphs it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_ROOM );
return;
}
else if ( !str_cmp( arg2, "polearm" ) )
{
obj->value[0] = WEAPON_POLEARM;
sprintf( buf, "You fiddle with $p and morph it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_CHAR );
sprintf( buf, "$n fiddles with $p and morphs it into a %s.",
flag_string( weapon_class, obj->value[0] ) );
act( buf, ch, obj, NULL, TO_ROOM );
return;
}
else
obj->condition += 2;
sprintf( buf, "You fiddle with $p for a moment.");
act( buf, ch, obj, NULL, TO_CHAR );
sprintf( buf, "$n fiddles with $p for a moment, then stares off into the sky.");
act( buf, ch, obj, NULL, TO_ROOM );
return;
}