/***************************************************************************
* _/_/_/_/ _/ _/ _/_/_/_/ _/_/_/_/ AckFUSS is modified ACK!MUD 4.3.1 *
* _/ _/ _/ _/ _/ copyright Matt Goff (Kline) 2008 *
* _/_/ _/ _/ _/_/_/_/ _/_/_/_/ *
* _/ _/ _/ _/ _/ Support for this code is provided *
* _/ _/_/_/_/ _/_/_/_/ _/_/_/_/ at www.ackmud.net -- check it out!*
***************************************************************************/
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "globals.h"
#ifndef DEC_DB_H
#include "h/db.h"
#endif
#ifndef DEC_HASH_H
#include "hash.h"
#endif
#ifndef DEC_MONEY_H
#include "h/money.h"
#endif
#ifndef DEC_SSM_H
#include "h/ssm.h"
#endif
affect_data::affect_data()
{
bitvector = 0;
caster = NULL;
duration = -1;
is_free = false;
level = 0;
location = -1;
modifier = 0;
next = NULL;
prev = NULL;
type = -1;
//affect_list.push_back(this); -- Added manually when allocing new perm affects on first boot. --Kline
}
area_data::area_data()
{
age = 15;
area_num = 0;
can_read = &str_empty[0];
can_write = &str_empty[0];
control = NULL;
filename = &str_empty[0];
flags.reset();
first_area_mobile = NULL;
first_area_object = NULL;
first_area_room = NULL;
first_area_shop = NULL;
first_reset = NULL;
gold = 0;
keyword = &str_empty[0];
last_area_mobile = NULL;
last_area_object = NULL;
last_area_room = NULL;
last_area_shop = NULL;
last_reset = NULL;
level_label = str_dup("[ None ]");
max_level = 1;
max_vnum = 0;
modified = false;
min_level = 1;
min_vnum = 0;
name = str_dup("New Area");
owner = &str_empty[0];
reset_msg = str_dup("The area resets. How mystical...");
reset_rate = 15;
area_list.push_back(this);
}
ban_data::ban_data()
{
name = &str_empty[0];
banned_by = &str_empty[0];
newbie = false;
ban_list.push_back(this);
}
board_data::board_data()
{
vnum = 0;
first_message = NULL;
last_message = NULL;
min_read_lev = 0;
min_write_lev = 0;
expiry_time = 0;
clan = 0;
board_list.push_back(this);
}
brand_data::brand_data()
{
branded = &str_empty[0];
branded_by = &str_empty[0];
dt_stamp = &str_empty[0];
message = &str_empty[0];
priority = &str_empty[0];
}
buf_data_struct::buf_data_struct()
{
is_free = false;
next = NULL;
prev = NULL;
ch = NULL;
dest = NULL;
buf = &str_empty[0];
returnfunc = NULL;
returnparm = NULL;
old_char_pos = 0;
}
build_data_list::build_data_list()
{
is_free = false;
next = NULL;
prev = NULL;
data = NULL;
build_dat_list.push_back(this);
}
char_data::char_data()
{
act.reset();
act_build = 0;
ac_mod = 0;
adept_level = 0;
affected_by = 0;
alignment = 0;
armor = 100;
balance = 0;
bank_money = new MONEY_TYPE;
build_vnum = 0;
carry_number = 0;
carry_weight = 0;
cast = 0;
clan = 0;
current_brand = NULL;
damroll = 5;
def = 0;
deaf.reset();
death_cnt = 0;
desc = NULL;
description = &str_empty[0];
dr_mod = 0;
exp = 0;
extract_timer = 0;
fighting = NULL;
first_affect = NULL;
first_carry = NULL;
first_saved_aff = NULL;
first_shield = NULL;
gold = 0;
hit = 50;
hitroll = 5;
hr_mod = 0;
hunting = NULL;
hunt_flags = 0;
hunt_for = NULL;
hunt_home = NULL;
hunt_obj = NULL;
incog = 0;
invis = 0;
intell_exp = 0;
in_room = NULL;
is_free = false;
is_quitting = false;
last_affect = NULL;
last_carry = NULL;
last_note = 0;
last_saved_aff = NULL;
last_shield = NULL;
leader = NULL;
level = 0;
login_sex = -1;
logon = current_time;
long_descr = &str_empty[0];
long_descr_orig = &str_empty[0];
for( short i = 0; i < MAX_CLASS; i++ )
lvl[i] = 0;
for( short i = 0; i < MAX_CLASS; i++ )
lvl2[i] = 0;
mana = 50;
master = NULL;
max_hit = 50;
max_mana = 50;
max_move = 50;
money = new MONEY_TYPE;
move = 50;
name = &str_empty[0];
next_in_room = NULL;
npc = false;
npcdata = NULL;
num_followers = 0;
old_body = NULL;
old_prompt = &str_empty[0];
pcdata = NULL;
played = 0;
pnote = NULL;
poly_level = 0;
position = POS_STANDING;
practice = 21;
prev_in_room = NULL;
prompt = &str_empty[0];
p_class = 0;
race = 0;
race_mods = 0;
reply = NULL;
rider = NULL;
riding = NULL;
save_time = 0;
saving_throw = 0;
searching = &str_empty[0];
sentence = 0;
sex = SEX_NEUTRAL;
sitting = NULL;
for( short i = 0; i < MAX_SPEED; i++ )
speed[i] = 0;
stance = STANCE_WARRIOR;
stance_ac_mod = 0;
stance_dr_mod = 0;
stance_hr_mod = 0;
stun_timer = 0;
switched = false;
target = &str_empty[0];
timer = 0;
trust = 0;
using_named_door = false;
wait = 0;
was_in_room = NULL;
wimpy = 0;
wizbit = false;
char_list.push_back(this);
}
descriptor_data::descriptor_data()
{
}
disabled_data::disabled_data()
{
command = NULL;
disabled_by = &str_empty[0];
level = 0;
disabled_list.push_back(this);
}
exit_data::exit_data()
{
description = &str_empty[0];
exit_info.reset();
is_free = false;
key = 0;
keyword = &str_empty[0];
next = NULL;
to_room = NULL;
vnum = 0;
exit_list.push_back(this);
}
extra_descr_data::extra_descr_data()
{
is_free = false;
description = &str_empty[0];
keyword = &str_empty[0];
next = NULL;
prev = NULL;
exdesc_list.push_back(this);
}
fight_data::fight_data()
{
is_free = false;
ch = NULL;
next = NULL;
prev = NULL;
}
generic_list::generic_list()
{
data = NULL;
}
hash_entry_tp::hash_entry_tp()
{
is_free = false;
next = NULL;
reference = NULL;
key = 0;
}
magic_shield::magic_shield()
{
is_free = false;
next = NULL;
prev = NULL;
type = 0;
harmful = false;
attack_dam = 0;
percent = 0;
hits = 0;
sn = 0;
absorb_message_room = &str_empty[0];
absorb_message_victim = &str_empty[0];
absorb_message_self = &str_empty[0];
name = &str_empty[0];
wearoff_room = &str_empty[0];
wearoff_self = &str_empty[0];
}
mark_data::mark_data()
{
room_vnum = 0;
message = &str_empty[0];
author = &str_empty[0];
duration = 0;
type = 0;
}
message_data::message_data()
{
is_free = false;
next = NULL;
prev = NULL;
board = NULL;
datetime = 0;
author = &str_empty[0];
title = &str_empty[0];
message = &str_empty[0];
}
mob_index_data::mob_index_data()
{
act.reset();
ac_mod = 0;
affected_by = 0;
alignment = 0;
area = NULL;
cast = 0;
clan = 0;
def = 0;
description = &str_empty[0];
dr_mod = 0;
hr_mod = 0;
hunt_flags = 0;
is_free = false;
killed = 0;
for( short i = 0; i < MAX_SKILL; i++ )
learned[i] = 0;
level = 1;
long_descr = &str_empty[0];
next = NULL;
player_name = &str_empty[0];
position = 0;
pShop = NULL;
p_class = 0;
race = 0;
race_mods = 0;
resist = 0;
sex = 0;
short_descr = &str_empty[0];
skills = 0;
spec_fun = NULL;
for( short i = 0; i < MAX_SPEED; i++ )
speed[i] = 0;
strong_magic = 0;
suscept = 0;
target = &str_empty[0];
vnum = 0;
weak_magic = 0;
mob_index_list.push_back(this);
}
money_type::money_type()
{
for( short i = 0; i < MAX_CURRENCY; i++ )
cash_unit[i] = 0;
}
note_data::note_data()
{
date = &str_empty[0];
date_stamp = 0;
sender = &str_empty[0];
subject = &str_empty[0];
text = &str_empty[0];
to_list = &str_empty[0];
note_list.push_back(this);
}
npc_data::npc_data()
{
ngroup = NULL;
pIndexData = NULL;
reset = NULL;
resist = 0;
short_descr = &str_empty[0];
skills = 0;
spec_fun = NULL;
strong_magic = 0;
suscept = 0;
weak_magic = 0;
}
npc_group_data::npc_group_data()
{
enemies = &str_empty[0];
first_follower = NULL;
is_free = false;
last_fighting = NULL;
last_follower = NULL;
leader = NULL;
needs = &str_empty[0];
next = NULL;
prev = NULL;
seek_room = NULL;
state = 0;
wants = &str_empty[0];
}
obj_data::obj_data()
{
is_free = false;
extra_flags.reset();
wear_flags.reset();
reset = NULL;
next_in_carry_list = NULL;
prev_in_carry_list = NULL;
first_in_carry_list = NULL;
last_in_carry_list = NULL;
next_in_room = NULL;
prev_in_room = NULL;
first_in_room = NULL;
last_in_room = NULL;
first_content = NULL;
last_content = NULL;
next_content = NULL;
prev_content = NULL;
in_obj = NULL;
obj_fun = NULL;
carried_by = NULL;
first_exdesc = NULL;
last_exdesc = NULL;
first_apply = NULL;
last_apply = NULL;
pIndexData = NULL;
in_room = NULL;
owner = &str_empty[0];
name = &str_empty[0];
short_descr = &str_empty[0];
long_descr = &str_empty[0];
item_type = 0;
item_apply = 0;
wear_loc = 0;
weight = 0;
cost = 0;
level = 0;
timer = 0;
for( short i = 0; i < MAX_OBJ_VALUE; i++ )
value[i] = 0;
durability = 0;
max_durability = 0;
money = new MONEY_TYPE;
speed = 1.00;
obj_list.push_back(this);
}
obj_index_data::obj_index_data()
{
area = NULL;
durability = max_durability;
extra_flags.reset();
first_apply = NULL;
first_exdesc = NULL;
first_trigger = NULL;
is_free = false;
item_apply = 1;
item_type = 1;
last_apply = NULL;
last_exdesc = NULL;
last_trigger = NULL;
level = 1;
long_descr = &str_empty[0];
max_durability = number_range(2,100);
name = &str_empty[0];
next = NULL;
obj_fun = NULL;
owner = &str_empty[0];
short_descr = &str_empty[0];
speed = number_speed();
for( short i = 0; i < MAX_OBJ_VALUE; i++ )
value[i] = 0;
vnum = 0;
wear_flags.reset();
weight = 1;
obj_index_list.push_back(this);
}
pc_data::pc_data()
{
for( short i = 0; i < MAX_ALIASES; i++ )
{
alias[i] = &str_empty[0];
alias_name[i] = &str_empty[0];
}
assist_msg = &str_empty[0];
bamfin = &str_empty[0];
bamfout = &str_empty[0];
for( short i = 0; i < MAX_COND; i++ )
condition[i] = 0;
for( short i = 0; i < MAX_COLOR; i++ )
color[i] = 0;
dimcol = '\0';
email_address = &str_empty[0];
failures = 0;
header = &str_empty[0];
hicol = '\0';
host = str_dup("Unknown!");
hp_from_gain = 0;
for( short i = 0; i < MAX_IGNORES; i++ )
ignore_list[i] = &str_empty[0];
#ifdef IMC
imcchardata = NULL;
#endif
is_free = false;
lastlogin = str_dup("Unknown!");
for( short i = 0; i < MAX_SKILL; i++ )
learned[i] = 0;
load_msg = &str_empty[0];
mana_from_gain = 0;
max_con = 0;
max_dex = 0;
max_int = 0;
max_str = 0;
max_wis = 0;
message = &str_empty[0];
mod_con = 0;
mod_dex = 0;
mod_int = 0;
mod_str = 0;
mod_wis = 0;
monitor.reset();
move_from_gain = 0;
movement = 0;
next = NULL;
for( short i = 0; i < MAX_CLASS; i++ )
order[i] = 0;
pagelen = 0;
pedit_state = &str_empty[0];
for( short i = 0; i < MAX_PEDIT; i++ )
pedit_string[i] = &str_empty[0];
perm_con = 0;
perm_dex = 0;
perm_int = 0;
perm_str = 0;
perm_wis = 0;
prev = NULL;
pwd = &str_empty[0];
quest_info = new QUEST_INFO;
quest_points = 0;
recall_vnum = 0;
records = new RECORD_DATA;
room_enter = &str_empty[0];
room_exit = &str_empty[0];
ruler_rank = 0;
super = new SUPER_DATA;
term_columns = 0;
term_rows = 0;
title = &str_empty[0];
valid_email = false;
who_name = str_dup("off");;
}
quest_info::quest_info()
{
for( short i = 0; i < QUEST_MAX_DATA; i++ )
{
amount[i] = 0;
quest_hint[i] = false;
quest_item_vnum[i] = 0;
quest_mob_vnum[i] = 0;
}
is_questing = false;
quest_complete = false;
for( short i = 0; i < QUEST_MAX_REWARD; i++ )
quest_reward[i] = 0;
quest_type = 0;
time_left = 0;
wait_time = 0;
}
record_data::record_data()
{
crusade = 0;
mdam_amt = 0;
mdam_gsn = 0;
pdam_amt = 0;
pdam_gsn = 0;
pd = 0;
pk = 0;
md = 0;
mk = 0;
mquest_c = 0;
mquest_f = 0;
qp = 0;
qp_tot = 0;
}
reset_data::reset_data()
{
is_free = false;
next = NULL;
prev = NULL;
command = '\0';
arg1 = 0;
arg2 = 0;
arg3 = 0;
notes = &str_empty[0];
count = 0;
reset_list.push_back(this);
}
room_affect_data::room_affect_data()
{
is_free = false;
next = NULL;
prev = NULL;
duration = 0;
level = 0;
type = 0;
bitvector = 0;
applies_spell = 0;
modifier = 0;
location = 0;
caster = NULL;
}
room_index_data::room_index_data()
{
affected_by = 0;
area = NULL;
description = &str_empty[0];
for( short i = 0; i < MAX_DIR; i++ )
exit[i] = 0;
first_content = NULL;
first_exdesc = NULL;
first_person = NULL;
first_room_affect = NULL;
first_room_reset = NULL;
is_free = false;
last_content = NULL;
last_exdesc = NULL;
last_person = NULL;
last_room_affect = NULL;
last_room_reset = NULL;
light = 0;
mark_list.clear();
name = str_dup("New Room");
next = NULL;
room_flags.reset();
sector_type = SECT_INSIDE;
treasure = new MONEY_TYPE;
vnum = 0;
room_index_list.push_back(this);
}
shop_data::shop_data()
{
for( short i = 0; i < MAX_TRADE; i++ )
buy_type[i] = 0;
close_hour = 0;
keeper = 0;
open_hour = 0;
profit_buy = 1;
profit_sell = 1;
shop_list.push_back(this);
}
super_data::super_data()
{
bloodline = 0;
energy = 0;
energy_max = 0;
exp = 0;
generation = 0;
level = 0;
skills_learned = 0;
skills_max = 0;
pracs = 0;
}