/* ================ sdDeclDamageFilter::ParseFilter ================ */ bool sdDeclDamageFilter::ParseFilter( damageFilter_t& filter, idParser& src ) { idToken token; if( !src.ReadToken( &token ) || token.Cmp( "{" ) ) { return false; } while ( true ) { if ( !src.ReadToken( &token ) ) { return false; } if ( !token.Cmp( "}" ) ) { break; } if( !token.Icmp( "damage" ) ) { bool error; filter.damage = src.ParseFloat( &error ); if ( error ) { src.Error( "sdDeclDamageFilter::ParseLevel Invalid Parm for 'damage'" ); return false; } if ( src.PeekTokenString( "%" ) ) { src.ReadToken( &token ); filter.mode = DFM_PERCENT; } else { filter.mode = DFM_NORMAL; } } else if( !token.Icmp( "target" ) ) { if ( !src.ReadToken( &token ) ) { src.Error( "sdDeclDamageFilter::ParseLevel Missing Parm for 'target'" ); return false; } filter.target = gameLocal.declTargetInfoType.LocalFind( token, false ); if ( !filter.target ) { src.Error( "sdDeclDamageFilter::ParseLevel Invalid Target '%s'", token.c_str() ); return false; } } else if( !token.Icmp( "noScale" ) ) { filter.noScale = true; } else { src.Error( "sdDeclDamageFilter::ParseLevel Unknown Parameter %s", token.c_str() ); return false; } } return true; }