/*
* Copyright Matt Goff (Kline) 2009
* If you use my code, please give credit where it is due.
* Support provided at www.ackmud.net
*/
#include "h/areaconvert.h"
#include "h/extern.h"
void write_ackfuss( ofstream &file, int type )
{
write_ackfuss_area(file,type);
write_ackfuss_room(file,type);
write_ackfuss_npc(file,type);
write_ackfuss_obj(file,type);
write_ackfuss_shop(file,type);
write_ackfuss_reset(file,type);
file << "#$" << endl; /* the end */
return;
}
void write_ackfuss_area( ofstream &file, int type )
{
char delim = '~';
int i = 0;
file << "#AREA" << endl;
file << "Revision " << area.revision << endl;
file << "CanRead " << area.can_read << delim << endl;
file << "CanWrite " << area.can_write << delim << endl;
file << "Flags ";
for( i = 0; i < MAX_BITSET; i++ )
if( area.bitset_flags_out.test(i) )
file << i << " ";
file << "EOL" << endl;
file << "Keyword " << area.keyword << delim << endl;
file << "LevLabel " << area.level_label << delim << endl;
file << "LevRange " << area.min_level << " " << area.max_level << endl;
file << "Name " << area.name << delim << endl;
file << "Owner " << area.owner << delim << endl;
file << "ResetMsg " << area.reset_msg << delim << endl;
file << "ResetRate " << area.reset_rate << endl;
file << "VnumRange " << area.min_vnum << " " << area.max_vnum << endl;
file << "End" << endl;
return;
}
void write_ackfuss_room( ofstream &file, int type )
{
char delim = '~';
list<room_data *>::iterator rt;
list<extra_data *>::iterator et;
room_data *room;
extra_data *extra;
int i = 0, x = 0;
for( rt = room_list.begin(); rt != room_list.end(); rt++ )
{
room = *rt;
file << "#ROOM" << endl;
file << "Vnum " << room->vnum << endl;
file << "Desc " << room->description << delim << endl;
file << "Flags ";
for( i = 0; i < MAX_BITSET; i++ )
if( room->bitset_flags_out.test(i) )
file << i << " ";
file << "EOL" << endl;
file << "Name " << room->name << delim << endl;
file << "Sect " << room->sector << endl;
file << "End" << endl;
for( i = 0; i < MAX_EXIT; i++ )
{
if( room->exit[i] )
{
file << "#DOOR" << endl;
file << "Dir " << i << endl; /* Must be first for sanity checks --Kline */
file << "Desc " << room->exit[i]->description << delim << endl;
file << "Flags ";
for( x = 0; x < MAX_BITSET; x++ )
if( room->exit[i]->bitset_flags_out.test(x) )
file << x << " ";
file << "EOL" << endl;
file << "Key " << room->exit[i]->key << endl;
file << "Keyword " << room->exit[i]->keyword << delim << endl;
file << "Vnum " << room->exit[i]->vnum << endl;
file << "End" << endl;
}
}
for( et = room->extra_list.begin(); et != room->extra_list.end(); et++ )
{
extra = *et;
file << "#REXTRA" << endl;
file << "Desc " << extra->description << delim << endl;
file << "Keyword " << extra->keyword << delim << endl;
file << "End" << endl;
}
}
return;
}
void write_ackfuss_npc( ofstream &file, int type )
{
char delim = '~';
list<npc_data *>::iterator nt;
npc_data *npc;
int i = 0;
for( nt = npc_list.begin(); nt != npc_list.end(); nt++ )
{
npc = *nt;
file << "#MOBILE" << endl;
file << "Vnum " << npc->vnum << endl;
file << "AcMod " << npc->ac_mod << endl;
file << "Act ";
for( i = 0; i < MAX_BITSET; i++ )
if( npc->bitset_act_flags_out.test(i) )
file << i << " ";
file << "EOL" << endl;
file << "Affected " << 0 << endl;
file << "Alignment " << npc->alignment << endl;
file << "Cast " << npc->cast << endl;
file << "Clan " << npc->clan << endl;
file << "Class " << npc->pclass << endl;
file << "Def " << npc->def << endl;
file << "Desc " << npc->description << delim << endl;
file << "DrMod " << npc->dr_mod << endl;
file << "HrMod " << npc->hr_mod << endl;
file << "Level " << npc->level << endl;
file << "LongDesc " << npc->long_descr << delim << endl;
file << "PlrName " << npc->player_name << delim << endl;
file << "Position " << npc->position << endl;
file << "Race " << npc->race << endl;
file << "RaceMods " << npc->race_mod << endl;
file << "Resist " << npc->resist << endl;
file << "Sex " << npc->sex << endl;
file << "ShortDesc " << npc->short_descr << delim << endl;
file << "Skills " << npc->skills << endl;
file << "SMagic " << npc->strong_magic << endl;
file << "Suscept " << npc->suscept << endl;
file << "WMagic " << npc->weak_magic << endl;
file << "End" << endl;
}
return;
}
void write_ackfuss_obj( ofstream &file, int type )
{
char delim = '~';
list<obj_data *>::iterator ot;
list<affect_data *>::iterator at;
list<extra_data *>::iterator et;
obj_data *obj;
affect_data *aff;
extra_data *extra;
int i = 0;
for( ot = obj_list.begin(); ot != obj_list.end(); ot++ )
{
obj = *ot;
file << "#OBJECT" << endl;
file << "Vnum " << obj->vnum << endl;
file << "ExtraFlags ";
for( i = 0; i < MAX_BITSET; i++ )
if( obj->bitset_extra_flags_out.test(i) )
file << i << " ";
file << "EOL" << endl;
file << "ItemApply " << obj->int_item_apply_out << endl;
file << "Level " << obj->level << endl;
file << "LongDesc " << obj->long_descr << delim << endl;
file << "Name " << obj->name << delim << endl;
file << "ShortDesc " << obj->short_descr << delim << endl;
file << "Type " << obj->type << endl;
file << "Values ";
for( i = 0; i < MAX_OBJ_VALUE; i++ )
file << obj->value[i] << " ";
file << endl;
file << "WearFlags ";
for( i = 0; i < MAX_BITSET; i++ )
if( obj->bitset_wear_flags_out.test(i) )
file << i << " ";
file << "EOL" << endl;
file << "Weight " << obj->weight << endl;
file << "End" << endl;
for( at = obj->apply_list.begin(); at != obj->apply_list.end(); at++ )
{
aff = *at;
file << "#OAFFECT" << endl;
file << "Location " << aff->int_location_out << endl;
file << "Modifier " << aff->modifier << endl;
file << "End" << endl;
}
for( et = obj->extra_list.begin(); et != obj->extra_list.end(); et++ )
{
extra = *et;
file << "#OEXTRA" << endl;
file << "Desc " << extra->description << delim << endl;
file << "Keyword " << extra->keyword << delim << endl;
file << "End" << endl;
}
}
return;
}
void write_ackfuss_shop( ofstream &file, int type )
{
list<shop_data *>::iterator st;
shop_data *shop;
int i = 0;
for( st = shop_list.begin(); st != shop_list.end(); st++ )
{
shop = *st;
file << "#SHOP" << endl;
file << "Keeper " << shop->keeper << endl;
file << "BuyType ";
for( i = 0; i < MAX_TRADE; i++ )
file << shop->buy_type[i] << " ";
file << endl;
file << "HourClose " << shop->hour_close << endl;
file << "HourOpen " << shop->hour_open << endl;
file << "ProfBuy " << shop->prof_buy << endl;
file << "ProfSell " << shop->prof_sell << endl;
file << "End" << endl;
}
return;
}
void write_ackfuss_reset( ofstream &file, int type )
{
list<reset_data *>::iterator rt;
reset_data *reset;
file << "#RESETS" << endl;
for( rt = reset_list.begin(); rt != reset_list.end(); rt++ )
{
reset = *rt;
file << reset->command << " " << reset->arg1 << " " << reset->arg2 << " ";
if( reset->command[0] == 'G' || reset->command[0] == 'R' )
file << reset->notes << endl;
else
file << reset->arg3 << " " << reset->notes << endl;
}
file << "S" << endl;
return;
}