/* /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;
}
}