/* /lib/props/carry.c * From the Dead Souls LPC Library * Object for handling carried goods * Created by Descartes of Borg 950324 * Version: @(#) carry.c 1.10@(#) * Last modified: 96/12/22 */ #include <config.h> static int CarriedMass = 0; int MaxCarry = 0; int CanCarry(int amount); int AddCarriedMass(int x){ if( !CanCarry(x) ){ return -1; } CarriedMass += x; if( CarriedMass < 0 ){ CarriedMass = 0; } return CarriedMass; } int GetCarriedMass(){ return CarriedMass ; } int GetCarriedWeight(){ object env; float h = DEFAULT_GRAVITY; if( env = environment() ){ h = env->GetGravity(); } return to_int( GetCarriedMass() * h ); } int GetMaxCarry(){ return MaxCarry; } int GetLivingMaxCarry(){ return MaxCarry; } int SetMaxCarry(int x){ return (MaxCarry = x); } int CanCarry(int amount){ object env; float h; if( amount < 1 ) return 1; if( env = environment() ){ if( !(living(env)) ){ h = (float)env->GetGravity(); } else { h = DEFAULT_GRAVITY; } } else { h = DEFAULT_GRAVITY; } if( ((GetCarriedMass() + amount) * h) > GetMaxCarry() ){ return 0; } else { return 1; } }