Snippet – Random Weapon Generator

Snippet – Random Weapon Generator

This snippet (compatible with the latest version S of Dawn of Time) will allow you to have mobs load up a random weapon through use of a MUDprog like this:

mob random_weapon 
wield all

weapons.cpp

// *** Random Weapon Generator ***********************************************                                           
// This is part of a series of random item generators designed to load armor,*
// weapons, treasure, and pickpocket loot on sentient humanoid NPCs for      *
// Lands of Oneiro.  LoO is based on Dawn of Time version S beta 6.          *
// *************************************************** Melissa Moritz 2019 ***
#include "include.h" // dawn standard includes
#include "olc.h"
#include "nanny.h"
#include "tables.h"

void do_random_weapon( char_data *ch, char * ){
	OBJ_DATA *rand_weapon;		// the random weapon we'll be creating
	int class_dice;				// which type of weapon is it?
	int special_dice;			// did we score a magical weapon?
	int total_mod = 0;			// add up all the modification factors
    char buf[MSL]; 
	
	// security check to prevent players from creating free loot
	if (!IS_NPC(ch)){
		ch->println("Only NPCs may create random weapons.");
		return;
	}
		
	
	// if the template item is does not exist, full stop.
	if ( get_obj_index(OBJ_VNUM_OUTFIT_MACE) == NULL )  {
		ch->println("Error, missing OUTFIT_MACE! Submit bug report.");
		return;
	}
   
	// load the newbie outfit_mace vnum 400 as our template then modify it.
	rand_weapon = create_object(get_obj_index(OBJ_VNUM_OUTFIT_MACE));
	rand_weapon->item_type		= ITEM_WEAPON;
	rand_weapon->wear_flags		= OBJWEAR_TAKE + OBJWEAR_WIELD;
	rand_weapon->level			= ch->level;								// make item the NPC's level
	rand_weapon->relative_size	= ch->size;									// sized to fit the NPC
	rand_weapon->cost			= ( ch->level * 25 );						// base item cost
	rand_weapon->extra_flags	= OBJEXTRA_NO_DEGRADE;
	
	//  choose a random Weapon Class [V0]
	class_dice = dice(1,11);
	switch (class_dice) {
	case 1:
		rand_weapon->name        = str_dup( "axe" );
		rand_weapon->value[0] = WEAPON_AXE;
		rand_weapon->value[3] = DAM_SLASH;
		total_mod = 3;
		break; 
	case 2:
		rand_weapon->name        = str_dup( "dagger" );
		rand_weapon->value[0] = WEAPON_DAGGER;
		rand_weapon->value[3] = DAM_PIERCE;
		total_mod = -8;
		break;
	case 3:
		rand_weapon->name        = str_dup( "flail" );
		rand_weapon->value[0] = WEAPON_FLAIL;
		rand_weapon->value[3] = DAM_BASH;
		total_mod = -2;
		break;
	case 4:
		rand_weapon->name        = str_dup( "mace" );
		rand_weapon->value[0] = WEAPON_MACE;
		rand_weapon->value[3] = DAM_BASH;
		total_mod = 6;
		break;
	case 5:
		rand_weapon->name        = str_dup( "polearm" );
		rand_weapon->value[0] = WEAPON_POLEARM;
		rand_weapon->value[3] = DAM_SLASH;
		total_mod =  8;
		break;
	case 6:
		rand_weapon->name        = str_dup( "sickle" );
		rand_weapon->value[0] = WEAPON_SICKLE;
		rand_weapon->value[3] = DAM_SLASH;
		total_mod = 9;
		break;
	case 7:
		rand_weapon->name        = str_dup( "spear" );
		rand_weapon->value[0] = WEAPON_SPEAR;
		rand_weapon->value[3] = DAM_PIERCE;
		total_mod = 3;
		break;
	case 8:
		rand_weapon->name        = str_dup( "staff" );
		rand_weapon->value[0] = WEAPON_STAFF;
		rand_weapon->value[3] = DAM_BASH;
		total_mod = 3;
		break;
	case 9:
		rand_weapon->name        = str_dup( "sword" );
		rand_weapon->value[0] = WEAPON_SWORD;
		rand_weapon->value[3] = DAM_SLASH;
		total_mod = 6;
		break;
	case 11:
		rand_weapon->name        = str_dup( "whip" );
		rand_weapon->value[0] = WEAPON_WHIP;
		rand_weapon->value[3] = DAM_SLASH;
		total_mod = -3;
		break;
	}
	
	// roll to see if we got a SPECIAL WEAPONTYPE [V4]
	special_dice = dice(1,40);
	switch (special_dice) {
	case 32:
	    if ( !str_cmp( rand_weapon->name, "staff" ) || !str_cmp( rand_weapon->name, "spear" )
	    || !str_cmp( rand_weapon->name, "mace" ) || !str_cmp( rand_weapon->name, "flail" )
	    || !str_cmp( rand_weapon->name, "whip" ) ){
		    rand_weapon->value[4] = WEAPON_ANNEALED;
		    total_mod = -3;
	    }
		else{ 
		    rand_weapon->value[4] = WEAPON_SHARP; }
		    total_mod = -3;
		break; 
	case 33:
	    rand_weapon->extra_flags	= OBJEXTRA_NO_DEGRADE + OBJEXTRA_MAGIC;
		rand_weapon->value[4] = WEAPON_POISON;
		total_mod = -4;
		break; 
	case 34:
	    rand_weapon->extra_flags	= OBJEXTRA_NO_DEGRADE + OBJEXTRA_MAGIC;
		and_weapon->value[4] = WEAPON_FLAMING;
		total_mod = -4;
		break; 		
	case 35:
	    rand_weapon->extra_flags	= OBJEXTRA_NO_DEGRADE + OBJEXTRA_MAGIC;
		rand_weapon->value[4] = WEAPON_FROST;
		total_mod = -4;
		break;
	case 36:
	    rand_weapon->extra_flags	= OBJEXTRA_NO_DEGRADE + OBJEXTRA_MAGIC;
		rand_weapon->value[4] = WEAPON_VAMPIRIC;
		total_mod = -4;
		break;		
	case 37:
	    rand_weapon->extra_flags	= OBJEXTRA_NO_DEGRADE + OBJEXTRA_MAGIC;
		rand_weapon->value[4] = WEAPON_VAMPIRIC;
		total_mod = -4;
		break;	
	case 38:
	    rand_weapon->extra_flags	= OBJEXTRA_NO_DEGRADE + OBJEXTRA_MAGIC;
		rand_weapon->value[4] = WEAPON_VORPAL;
		total_mod = -4;
		break;	
	case 39:
	    rand_weapon->extra_flags	= OBJEXTRA_NO_DEGRADE + OBJEXTRA_MAGIC;
		rand_weapon->value[4] = WEAPON_SHOCKING;
		total_mod = -4;
		break;	
	case 40:
	    rand_weapon->extra_flags	= OBJEXTRA_NO_DEGRADE + OBJEXTRA_MAGIC;
		rand_weapon->value[4] = WEAPON_ENERVATE;
		total_mod = -4;
		break;
	}
		
	// change the item level based on the modifiers
	total_mod = (rand_weapon->level + total_mod);
	
	// calculate the weapon dice based on total_mod
	if (total_mod < 1 ){ rand_weapon->value[1] = 1;	rand_weapon->value[2] = 4;	}
	if (total_mod == 1){ rand_weapon->value[1] = 1;	rand_weapon->value[2] = 6;	}
	if (total_mod == 2){ rand_weapon->value[1] = 2;	rand_weapon->value[2] = 3;	}
	if (total_mod == 3){ rand_weapon->value[1] = 1;	rand_weapon->value[2] = 8;	}
	if (total_mod == 4){ rand_weapon->value[1] = 2;	rand_weapon->value[2] = 4; 	}
	if (total_mod == 5){ rand_weapon->value[1] = 1;	rand_weapon->value[2] = 10; }
	if (total_mod == 6){ rand_weapon->value[1] = 3;	rand_weapon->value[2] = 3; 	}
	if (total_mod == 7){ rand_weapon->value[1] = 1;	rand_weapon->value[2] = 12; }
	if (total_mod == 8){ rand_weapon->value[1] = 2;	rand_weapon->value[2] = 6; 	}
	if (total_mod == 9){ rand_weapon->value[1] = 3;	rand_weapon->value[2] = 4; 	}
	if (total_mod == 10){ rand_weapon->value[1] = 2;	rand_weapon->value[2] = 7; 	}
	
	if (total_mod == 11){ rand_weapon->value[1] = 4; 	rand_weapon->value[2] = 3; 	}
	if (total_mod == 12){ rand_weapon->value[1] = 2; 	rand_weapon->value[2] = 8; 	}
	if (total_mod == 13){ rand_weapon->value[1] = 3; 	rand_weapon->value[2] = 4; 	}
	if (total_mod == 14){ rand_weapon->value[1] = 5; 	rand_weapon->value[2] = 3; 	}
	if (total_mod == 15){ rand_weapon->value[1] = 3; 	rand_weapon->value[2] = 6; 	}
	if (total_mod == 16){ rand_weapon->value[1] = 2; 	rand_weapon->value[2] = 10; }
	if (total_mod == 17){ rand_weapon->value[1] = 3; 	rand_weapon->value[2] = 7; 	}
	if (total_mod == 18){ rand_weapon->value[1] = 6; 	rand_weapon->value[2] = 3; 	}
	if (total_mod == 19){ rand_weapon->value[1] = 5; 	rand_weapon->value[2] = 4; 	}
	if (total_mod == 20){ rand_weapon->value[1] = 2; 	rand_weapon->value[2] = 12; }
	
	if (total_mod == 21){ rand_weapon->value[1] = 3; 	rand_weapon->value[2] = 8; 	}
	if (total_mod == 22){ rand_weapon->value[1] = 4; 	rand_weapon->value[2] = 6; 	}
	if (total_mod == 23){ rand_weapon->value[1] = 7; 	rand_weapon->value[2] = 3; 	}
	if (total_mod == 24){ rand_weapon->value[1] = 5; 	rand_weapon->value[2] = 5; 	}
	if (total_mod == 25){ rand_weapon->value[1] = 6; 	rand_weapon->value[2] = 4; 	}
	if (total_mod == 26){ rand_weapon->value[1] = 4; 	rand_weapon->value[2] = 7; 	}
	if (total_mod == 27){ rand_weapon->value[1] = 3; 	rand_weapon->value[2] = 10; }
	if (total_mod == 28){ rand_weapon->value[1] = 2; 	rand_weapon->value[2] = 16; }
	if (total_mod == 29){ rand_weapon->value[1] = 7; 	rand_weapon->value[2] = 4; 	}
	if (total_mod == 30){ rand_weapon->value[1] = 6; 	rand_weapon->value[2] = 5; 	}
	
	if (total_mod == 31){ rand_weapon->value[1] = 9; 	rand_weapon->value[2] = 3; 	}
	if (total_mod == 32){ rand_weapon->value[1] = 2; 	rand_weapon->value[2] = 18; }
	if (total_mod == 33){ rand_weapon->value[1] = 3; 	rand_weapon->value[2] = 12; }
	if (total_mod == 34){ rand_weapon->value[1] = 8; 	rand_weapon->value[2] = 4; 	}
	if (total_mod == 35){ rand_weapon->value[1] = 10; 	rand_weapon->value[2] = 3; 	}
	if (total_mod == 36){ rand_weapon->value[1] = 6; 	rand_weapon->value[2] = 6; 	}
	if (total_mod == 37){ rand_weapon->value[1] = 7; 	rand_weapon->value[2] = 5; 	}
	if (total_mod == 38){ rand_weapon->value[1] = 11; 	rand_weapon->value[2] = 3; 	}
	if (total_mod == 39){ rand_weapon->value[1] = 9; 	rand_weapon->value[2] = 4; 	}
	if (total_mod == 40){ rand_weapon->value[1] = 2; 	rand_weapon->value[2] = 22; }

	if (total_mod == 41){ rand_weapon->value[1] = 3; 	rand_weapon->value[2] = 15; }
	if (total_mod == 42){ rand_weapon->value[1] = 12; 	rand_weapon->value[2] = 3; 	}
	if (total_mod == 43){ rand_weapon->value[1] = 7; 	rand_weapon->value[2] = 6; 	}
	if (total_mod == 44){ rand_weapon->value[1] = 10; 	rand_weapon->value[2] = 4; 	}
	if (total_mod == 45){ rand_weapon->value[1] = 3; 	rand_weapon->value[2] = 16; }
	if (total_mod == 46){ rand_weapon->value[1] = 4; 	rand_weapon->value[2] = 12; }
	if (total_mod == 47){ rand_weapon->value[1] = 13; 	rand_weapon->value[2] = 3; 	}
	if (total_mod == 48){ rand_weapon->value[1] = 9; 	rand_weapon->value[2] = 5; 	}
	if (total_mod == 49){ rand_weapon->value[1] = 11; 	rand_weapon->value[2] = 4; 	}
	if (total_mod == 50){ rand_weapon->value[1] = 14; 	rand_weapon->value[2] = 3; 	}

	if (total_mod == 51){ rand_weapon->value[1] = 3; 	rand_weapon->value[2] = 18;	}
	if (total_mod == 52){ rand_weapon->value[1] = 4; 	rand_weapon->value[2] = 14;	}
	if (total_mod == 53){ rand_weapon->value[1] = 2; 	rand_weapon->value[2] = 29;	}
	if (total_mod == 54){ rand_weapon->value[1] = 10; 	rand_weapon->value[2] = 5;	}
	if (total_mod == 55){ rand_weapon->value[1] = 15; 	rand_weapon->value[2] = 3;	}
	if (total_mod == 56){ rand_weapon->value[1] = 2; 	rand_weapon->value[2] = 30;	}
	if (total_mod == 57){ rand_weapon->value[1] = 9; 	rand_weapon->value[2] = 6;	}
	if (total_mod == 58){ rand_weapon->value[1] = 16; 	rand_weapon->value[2] = 3;	}
	if (total_mod == 59){ rand_weapon->value[1] = 13; 	rand_weapon->value[2] = 4;	}
	if (total_mod == 60){ rand_weapon->value[1] = 6; 	rand_weapon->value[2] = 10;	}

	if (total_mod == 61){ rand_weapon->value[1] = 11; 	rand_weapon->value[2] = 5;	}
	if (total_mod == 62){ rand_weapon->value[1] = 27; 	rand_weapon->value[2] = 3;	}
	if (total_mod == 63){ rand_weapon->value[1] = 3; 	rand_weapon->value[2] = 22;	}
	if (total_mod == 64){ rand_weapon->value[1] = 10; 	rand_weapon->value[2] = 6;	}
	if (total_mod == 65){ rand_weapon->value[1] = 14; 	rand_weapon->value[2] = 4;	}
	if (total_mod == 66){ rand_weapon->value[1] = 12; 	rand_weapon->value[2] = 5;	}
	if (total_mod == 67){ rand_weapon->value[1] = 18; 	rand_weapon->value[2] = 3;	}
	if (total_mod == 68){ rand_weapon->value[1] = 5; 	rand_weapon->value[2] = 14;	}
	if (total_mod == 69){ rand_weapon->value[1] = 15; 	rand_weapon->value[2] = 4;	}
	if (total_mod == 70){ rand_weapon->value[1] = 19; 	rand_weapon->value[2] = 3;	}

	if (total_mod == 71){ rand_weapon->value[1] = 11; 	rand_weapon->value[2] = 6;	}
	if (total_mod == 72){ rand_weapon->value[1] = 6; 	rand_weapon->value[2] = 12;	}
	if (total_mod == 73){ rand_weapon->value[1] = 13; 	rand_weapon->value[2] = 5;	}
	if (total_mod == 74){ rand_weapon->value[1] = 20; 	rand_weapon->value[2] = 3;	}
	if (total_mod == 75){ rand_weapon->value[1] = 3; 	rand_weapon->value[2] = 26;	}
	if (total_mod == 76){ rand_weapon->value[1] = 9; 	rand_weapon->value[2] = 8;	}
	if (total_mod == 77){ rand_weapon->value[1] = 15; 	rand_weapon->value[2] = 5;	}
	if (total_mod == 78){ rand_weapon->value[1] = 21; 	rand_weapon->value[2] = 3;	}
	if (total_mod == 79){ rand_weapon->value[1] = 5; 	rand_weapon->value[2] = 16;	}
	if (total_mod == 80){ rand_weapon->value[1] = 17; 	rand_weapon->value[2] = 4;	}

	if (total_mod == 81){ rand_weapon->value[1] = 3; 	rand_weapon->value[2] = 28;	}
	if (total_mod == 82){ rand_weapon->value[1] = 11; 	rand_weapon->value[2] = 7;	}
	if (total_mod == 83){ rand_weapon->value[1] = 22; 	rand_weapon->value[2] = 3;	}
	if (total_mod == 84){ rand_weapon->value[1] = 18; 	rand_weapon->value[2] = 4;	}
	if (total_mod == 85){ rand_weapon->value[1] = 13; 	rand_weapon->value[2] = 6;	}
	if (total_mod == 86){ rand_weapon->value[1] = 4; 	rand_weapon->value[2] = 22;	}
	if (total_mod == 87){ rand_weapon->value[1] = 23; 	rand_weapon->value[2] = 3;	}
	if (total_mod == 88){ rand_weapon->value[1] = 5; 	rand_weapon->value[2] = 18;	}
	if (total_mod == 89){ rand_weapon->value[1] = 19; 	rand_weapon->value[2] = 4;	}
	if (total_mod == 90){ rand_weapon->value[1] = 16; 	rand_weapon->value[2] = 5;	}

	if (total_mod == 91){ rand_weapon->value[1] = 24; 	rand_weapon->value[2] = 3;	}
	if (total_mod == 92){ rand_weapon->value[1] = 14; 	rand_weapon->value[2] = 6;	}
	if (total_mod == 93){ rand_weapon->value[1] = 22; 	rand_weapon->value[2] = 9;	}
	if (total_mod == 94){ rand_weapon->value[1] = 20; 	rand_weapon->value[2] = 4;	}
	if (total_mod == 95){ rand_weapon->value[1] = 25; 	rand_weapon->value[2] = 3;	}
	if (total_mod == 96){ rand_weapon->value[1] = 6; 	rand_weapon->value[2] = 16;	}
	if (total_mod == 97){ rand_weapon->value[1] = 17; 	rand_weapon->value[2] = 5;	}
	if (total_mod == 98){ rand_weapon->value[1] = 26; 	rand_weapon->value[2] = 3;	}
	if (total_mod == 99){ rand_weapon->value[1] = 15; 	rand_weapon->value[2] = 6;	}
	if (total_mod > 99 ){ rand_weapon->value[1] = 21; 	rand_weapon->value[2] = 4;	}


	// LEATHER MATERIALS
	if ( !str_cmp( rand_weapon->name, "whip" ) ){
		if (total_mod > 100){rand_weapon->material = str_dup( "cosmic dragonscale" );}
		if (total_mod < 101){rand_weapon->material = str_dup( "radianthide" );}
		if (total_mod < 96){rand_weapon->material = str_dup( "phantasmal leather" );}		
		if (total_mod < 91){rand_weapon->material = str_dup( "nightmare hide" );}
		if (total_mod < 86){rand_weapon->material = str_dup( "fatescale" );}
		if (total_mod < 81){rand_weapon->material = str_dup( "spectral leather" );}
		if (total_mod < 76){rand_weapon->material = str_dup( "chronohide" );}
		if (total_mod < 71){rand_weapon->material = str_dup( "demonhide" );}
		if (total_mod < 66){rand_weapon->material = str_dup( "shadowhide" );}
		if (total_mod < 61){rand_weapon->material = str_dup( "ghoulskin" );}
		if (total_mod < 56){rand_weapon->material = str_dup( "dragonscale" );}
		if (total_mod < 51){rand_weapon->material = str_dup( "wyrmhide" );}
		if (total_mod < 46){rand_weapon->material = str_dup( "alligator leather" );}
		if (total_mod < 41){rand_weapon->material = str_dup( "crocodile skin" );}
		if (total_mod < 36){rand_weapon->material = str_dup( "snakeskin" );}
		if (total_mod < 31){rand_weapon->material = str_dup( "lizardskin" );}
		if (total_mod < 26){rand_weapon->material = str_dup( "braided leather" );}
		if (total_mod < 21){rand_weapon->material = str_dup( "boiled leather" );}
		if (total_mod < 16){rand_weapon->material = str_dup( "thick leather" );}
		if (total_mod < 11){rand_weapon->material = str_dup( "soft leather" );}
		if (total_mod < 6){rand_weapon->material = str_dup( "doeskin" );}
	}

	// WOOD MATERIALS
	if ( !str_cmp( rand_weapon->name, "staff" ) || !str_cmp( rand_weapon->name, "spear" ) ){
		if (total_mod > 100){rand_weapon->material = str_dup( "lightheart" );}
		if (total_mod < 101){rand_weapon->material = str_dup( "shadow elm" );}
		if (total_mod < 96){rand_weapon->material = str_dup( "manawood" );}		
		if (total_mod < 91){rand_weapon->material = str_dup( "lifethorne" );}
		if (total_mod < 86){rand_weapon->material = str_dup( "greenheart" );}
		if (total_mod < 81){rand_weapon->material = str_dup( "memory willow" );}
		if (total_mod < 76){rand_weapon->material = str_dup( "black locust" );}
		if (total_mod < 71){rand_weapon->material = str_dup( "cherrywood" );}
		if (total_mod < 66){rand_weapon->material = str_dup( "maple" );}
		if (total_mod < 61){rand_weapon->material = str_dup( "hickory" );}
		if (total_mod < 56){rand_weapon->material = str_dup( "hedge apple" );}
		if (total_mod < 51){rand_weapon->material = str_dup( "ebony" );}
		if (total_mod < 46){rand_weapon->material = str_dup( "birch" );}
		if (total_mod < 41){rand_weapon->material = str_dup( "white ash" );}
		if (total_mod < 36){rand_weapon->material = str_dup( "rosewood" );}
		if (total_mod < 31){rand_weapon->material = str_dup( "white oak" );}
		if (total_mod < 26){rand_weapon->material = str_dup( "ironwood" );}
		if (total_mod < 21){rand_weapon->material = str_dup( "purpleheart" );}
		if (total_mod < 16){rand_weapon->material = str_dup( "hawthorn" );}
		if (total_mod < 11){rand_weapon->material = str_dup( "red oak" );}
		if (total_mod < 6){rand_weapon->material = str_dup( "northern pine" );}
	}

	// METAL MATERIALS
	if ( str_cmp( rand_weapon->name, "staff" ) && str_cmp( rand_weapon->name, "spear" ) && str_cmp( rand_weapon->name, "whip" )){
		if (total_mod > 100){rand_weapon->material = str_dup( "luminous aetherite" );}
		if (total_mod < 101){rand_weapon->material = str_dup( "veiled aetherite" );}
		if (total_mod < 96){rand_weapon->material = str_dup( "celestial bronze" );}		
		if (total_mod < 91){rand_weapon->material = str_dup( "pandemonite" );}
		if (total_mod < 86){rand_weapon->material = str_dup( "glomsteel" );}
		if (total_mod < 81){rand_weapon->material = str_dup( "imperial gold" );}
		if (total_mod < 76){rand_weapon->material = str_dup( "star iron" );}
		if (total_mod < 71){rand_weapon->material = str_dup( "coronium" );}
		if (total_mod < 66){rand_weapon->material = str_dup( "orichalcum" );}
		if (total_mod < 61){rand_weapon->material = str_dup( "adamantine" );}
		if (total_mod < 56){rand_weapon->material = str_dup( "mithril" );}
		if (total_mod < 51){rand_weapon->material = str_dup( "recondite" );}
		if (total_mod < 46){rand_weapon->material = str_dup( "titanium" );}
		if (total_mod < 41){rand_weapon->material = str_dup( "steel" );}
		if (total_mod < 36){rand_weapon->material = str_dup( "cold iron" );}
		if (total_mod < 31){rand_weapon->material = str_dup( "iron" );}
		if (total_mod < 26){rand_weapon->material = str_dup( "silver" );}
		if (total_mod < 21){rand_weapon->material = str_dup( "bronze" );}
		if (total_mod < 16){rand_weapon->material = str_dup( "brass" );}
		if (total_mod < 11){rand_weapon->material = str_dup( "tin" );}
		if (total_mod < 6){rand_weapon->material = str_dup( "copper" );}
	}
    // check if the material begins with a vowel and choose appropriate article
    if ( !str_cmp( rand_weapon->material, "ironwood" ) || !str_cmp( rand_weapon->material, "ebony" )       
	|| !str_cmp( rand_weapon->material, "imperial gold" ) || !str_cmp( rand_weapon->material, "orichalcum" )
	|| !str_cmp( rand_weapon->material, "admantine" ) || !str_cmp( rand_weapon->material, "iron" ) )
	{
		sprintf ( buf, "an %s %s", (rand_weapon->material), rand_weapon->name);
		rand_weapon->short_descr = str_dup( buf );
 
	}else{
		sprintf ( buf, "a %s %s", rand_weapon->material, rand_weapon->name );
		rand_weapon->short_descr = str_dup( buf );	
	}

	ch->println( "You have created a random weapon!" );
	obj_to_char(rand_weapon,ch);
	return;
}

Add to interp.cpp:

 { "random_weapon",      do_random_weapon,       POS_DEAD,      0,       LOG_NORMAL,     1 },

Add to interp.h:

DECLARE_DO_FUN( do_random_weapon       );

Add to mp_commands near the top:

DECLARE_DO_FUN( do_random_weapon );

Add to mp_commands near the other commands:

{"random_weapon",do_random_weapon,"Generates and loads a level appropriate weapon."},

Add weapons.o to the makefile.

Leave a Reply