#pragma save_binary /* handles the indirection needed for living objects... */ #include "money.h" varargs int adjust_money( mixed i, string type ) { object ob; int val; ob = present( "Some Money For Me", this_object() ); if( !ob ) { ob = clone_object( MONEY_OBJECT ); ob->move( this_object() ); } val = (int)ob->query_value(); ob->adjust_money( i, type ); val = (int)ob->query_value() - val; return val; } mixed *query_money_array() { object ob; ob = present( "Some Money For Me", this_object() ); if( !ob ) { ob = clone_object( MONEY_OBJECT ); ob->move( this_object() ); } return( mixed * ) ob->query_money_array(); } void set_money_array( mixed *arr ) { object ob; ob = present( "Some Money For Me", this_object() ); if( !ob ) { ob = clone_object( MONEY_OBJECT ); ob->move( this_object() ); } ob->set_money_array( arr ); } int query_value() { object ob; ob = present( "Some Money For Me", this_object() ); if( !ob ) { ob = clone_object( MONEY_OBJECT ); ob->move( this_object() ); } return( int ) ob->query_value(); } int query_money( string type ) { object ob; ob = present( "Some Money For Me", this_object() ); if( !ob ) { ob = clone_object( MONEY_OBJECT ); ob->move( this_object() ); } return( int ) ob->query_money( type ); } int pay_money( mixed *m_array ) { int i, j, val; mixed *m_a; object ob; ob = present( "Some Money For Me", this_object() ); if( !ob ) { ob = clone_object( MONEY_OBJECT ); ob->move( this_object() ); } val = (int)ob->query_value(); for( i = 0; i < sizeof( m_array ); i += 2 ) { m_a = (mixed *)MONEY_HAND->make_payment( m_array[ i ], m_array[ i + 1 ], this_object() ); for( j = 0; j < sizeof( m_a[ 0 ] ); j += 2 ) ob->adjust_money( -m_a[ 0 ][ j + 1 ], m_a[ 0 ][ j ] ); for( j = 0; j < sizeof( m_a[ 1 ] ); j += 2 ) ob->adjust_money( m_a[ 1 ][ j + 1 ], m_a[ 1 ][ j ] ); } val = (int)ob->query_value() - val; return val; }