/***************************************************************************
* Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. *
* *
* Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael *
* Chastain, Michael Quan, and Mitchell Tse. *
* *
* In order to use any part of this Merc Diku Mud, you must comply with *
* both the original Diku license in 'license.diku' as well the Merc *
* license in 'license.merc'. In particular, you may not remove either *
* of these copyright notices. *
* *
* Much time and thought has gone into this software and you are *
* benefitting. We hope that you share your changes too. What goes *
* around, comes around. *
***************************************************************************/
/*
MurkMUD++ - A Windows compatible, C++ compatible Merc 2.2 Mud.
\author Jon A. Lambert
\date 08/30/2006
\version 1.4
\remarks
This source code copyright (C) 2005, 2006 by Jon A. Lambert
All rights reserved.
Use governed by the MurkMUD++ public license found in license.murk++
*/
#include "os.hpp"
#include "config.hpp"
#include "globals.hpp"
#include "io.hpp"
#include "utils.hpp"
#include "mobproto.hpp"
int MobPrototype::top_mob = 0;
MobPrototype::MobPrototype() :
spec_fun(NULL), pShop(NULL), vnum(0), count(0), killed(0),
sex(0), level(0), actflags(0), affected_by(0), alignment(0),
mobprogs(NULL), progtypes(0) {
top_mob++;
}
/*
* Create an instance of a mobile.
*/
Character * MobPrototype::create_mobile ()
{
Character *mob;
if (this == NULL) {
fatal_printf ("Create_mobile: NULL this.");
}
mob = new Character();
mob->pIndexData = this;
mob->name = name;
mob->short_descr = short_descr;
mob->long_descr = long_descr;
mob->description = description;
mob->spec_fun = spec_fun;
mob->prompt = "<%h %m %v>";
mob->level = number_fuzzy (level);
mob->actflags = actflags;
mob->affected_by = affected_by;
mob->alignment = alignment;
mob->sex = sex;
mob->armor = interpolate (mob->level, 100, -100);
mob->max_hit = mob->level * 8 + number_range (mob->level * mob->level / 4,
mob->level * mob->level);
mob->hit = mob->max_hit;
/*
* Insert in list.
*/
char_list.push_back(mob);
count++;
return mob;
}