static bool Lua_Scenery_Valid(int32 index) { if (index < 0 || index >= MAXIMUM_OBJECTS_PER_MAP) return false; object_data *object = GetMemberWithBounds(objects, index, MAXIMUM_OBJECTS_PER_MAP); if (SLOT_IS_USED(object)) { if (GET_OBJECT_OWNER(object) == _object_is_scenery) return true; else if (GET_OBJECT_OWNER(object) == _object_is_normal) { // check to make sure it's not a player's legs or torso for (int player_index = 0; player_index < dynamic_world->player_count; player_index++) { player_data *player = get_player_data(player_index); monster_data *monster = get_monster_data(player->monster_index); if (monster->object_index == index) return false; else { object_data *object = get_object_data(monster->object_index); if (object->parasitic_object == index) return false; } } return true; } } return false; }
bool Lua_Effect_Valid(int32 index) { if (index < 0 || index >= MAXIMUM_EFFECTS_PER_MAP) return false; effect_data *effect = GetMemberWithBounds(effects, index, MAXIMUM_EFFECTS_PER_MAP); return SLOT_IS_USED(effect); }
bool Lua_Item_Valid(int32 index) { if (index < 0 || index >= MAXIMUM_OBJECTS_PER_MAP) return false; object_data *object = GetMemberWithBounds(objects, index, MAXIMUM_OBJECTS_PER_MAP); return (SLOT_IS_USED(object) && GET_OBJECT_OWNER(object) == _object_is_item); }
int Lua_Monster_Valid(int16 index) { if (index < 0 || index >= MAXIMUM_MONSTERS_PER_MAP) return false; monster_data *monster = GetMemberWithBounds(monsters, index, MAXIMUM_MONSTERS_PER_MAP); return (SLOT_IS_USED(monster)); }
// LP change: moved down here to use the projectile definitions projectile_definition *get_projectile_definition( short type) { projectile_definition *definition = GetMemberWithBounds(projectile_definitions,type,NUMBER_OF_PROJECTILE_TYPES); vassert(definition, csprintf(temporary, "projectile type #%d is out of range", type)); return definition; }
projectile_data *get_projectile_data( const short projectile_index) { struct projectile_data *projectile = GetMemberWithBounds(projectiles,projectile_index,MAXIMUM_PROJECTILES_PER_MAP); vassert(projectile, csprintf(temporary, "projectile index #%d is out of range", projectile_index)); vassert(SLOT_IS_USED(projectile), csprintf(temporary, "projectile index #%d (%p) is unused", projectile_index, projectile)); return projectile; }
static sound_behavior_definition *get_sound_behavior_definition( const short sound_behavior_index) { return GetMemberWithBounds(sound_behavior_definitions,sound_behavior_index,NUMBER_OF_SOUND_BEHAVIOR_DEFINITIONS); }
// Item-definition accessor item_definition *get_item_definition(const short type) { return GetMemberWithBounds(item_definitions,type,NUMBER_OF_DEFINED_ITEMS); }
OGL_FogData *OGL_GetFogData(int Type) { return GetMemberWithBounds(FogData,Type,OGL_NUMBER_OF_FOG_TYPES); }