Ejemplo n.º 1
0
/**
* Determines the scale level for a obj, with a character target as a backup
* for unscaled objects.
*
* @param obj_data *obj The object to check.
* @param char_data *targ Optional: A character target.
* @return int A scale level.
*/
int get_obj_scale_level(obj_data *obj, char_data *targ) {
	struct instance_data *inst;
	int level = 1;
	room_data *orm = obj_room(obj);
	
	if (GET_OBJ_CURRENT_SCALE_LEVEL(obj) > 0) {
		level = GET_OBJ_CURRENT_SCALE_LEVEL(obj);
	}
	else if (orm && COMPLEX_DATA(orm) && (inst = COMPLEX_DATA(orm)->instance)) {
		if (inst->level) {
			level = inst->level;
		}
		else if (GET_ADV_MIN_LEVEL(inst->adventure) > 0) {
			level = GET_ADV_MIN_LEVEL(inst->adventure);
		}
		else if (GET_ADV_MAX_LEVEL(inst->adventure) > 0) {
			level = GET_ADV_MAX_LEVEL(inst->adventure) / 2; // average?
		}
	}
	
	if (!level && targ) {
		// backup
		level = get_approximate_level(targ);
	}
	
	return level;
}
/**
* Determines the scale level for a vehicle, with a character target as a backup
* for unscaled vehicles.
*
* @param vehicle_data *veh The vehicle to check.
* @param char_data *targ Optional: A character target.
* @return int A scale level.
*/
int get_vehicle_scale_level(vehicle_data *veh, char_data *targ) {
	struct instance_data *inst;
	int level = 1;
	room_data *orm = IN_ROOM(veh);
	
	if (VEH_SCALE_LEVEL(veh) > 0) {
		level = VEH_SCALE_LEVEL(veh);
	}
	else if (orm && COMPLEX_DATA(orm) && (inst = COMPLEX_DATA(orm)->instance)) {
		if (inst->level) {
			level = inst->level;
		}
		else if (GET_ADV_MIN_LEVEL(inst->adventure) > 0) {
			level = GET_ADV_MIN_LEVEL(inst->adventure);
		}
		else if (GET_ADV_MAX_LEVEL(inst->adventure) > 0) {
			level = GET_ADV_MAX_LEVEL(inst->adventure) / 2; // average?
		}
	}
	
	if (!level && targ) {
		// backup
		level = get_approximate_level(targ);
	}
	
	return level;
}
Ejemplo n.º 3
0
/**
* Determines the scale level for a room, with a character target as a backup
* for unscaled rooms.
*
* @param room_data *room The room to check.
* @param char_data *targ Optional: A character target.
* @return int A scale level.
*/
int get_room_scale_level(room_data *room, char_data *targ) {
	struct instance_data *inst;
	int level = 1;
	
	if (COMPLEX_DATA(room) && (inst = COMPLEX_DATA(room)->instance)) {
		if (inst->level) {
			level = inst->level;
		}
		else if (GET_ADV_MIN_LEVEL(inst->adventure) > 0) {
			level = GET_ADV_MIN_LEVEL(inst->adventure);
		}
		else if (GET_ADV_MAX_LEVEL(inst->adventure) > 0) {
			level = GET_ADV_MAX_LEVEL(inst->adventure) / 2; // average?
		}
	}
	// backup
	if (!level && targ) {
		level = get_approximate_level(targ);
	}
	
	return level;
}