O problema está na forma que você está fazendo a implementação, está com muito processamento desnecessário e por conta disso a lógica do seu código se enrolou e está falhando, além de estar confuso. Você pode fazer toda checagem e alteração diretamente no loop FOR como eu fiz no exemplo, depois zerar o arquivo e reescrever com a nova lista...
Eu recomendaria você trabalhar com dicionários, já que sempre vai ter uma pontuação (pontos) em uma chave única (jogador), isso até facilita o trabalho pois você consegue mudar diretamente a pontuação procurando a chave na lista.
Mas vamos resolver seu problema com cada linha imprimindo um nome e uma pontuação diferente. O que temos que fazer é checar se o nome é igual e repetir ele na lista, e dizer ao programa que a próxima linha deve ser colocada a nova pontuação desse nome, e caso o nome não deja igual ele simplesmente só recoloca o nome ou pontuação lida na nova lista.
lista.txt:
maracujá
10
banana
20
abacate
30
melancia
40
maçã
50
file = open("lista.txt", 'r+', encoding='utf8')
new_list = []
change_points = False
name = 'melancia'
points = '0'
for word in file:
word = word.strip() #tira os espaços e quebras de linha
if(change_points): #devo alterar a pontuação?
change_points = False #se eu vou alterar agora, não vou precisar alterar mais
new_list.append(points) #escrevo a nova pontuação na lista
continue #pulo para a próxima iteração do loop sem processar o que está baixo pois não preciso escrever mais nada nessa iteração
if(word == name): #nome é igual?
change_points = True #então digo que deve alterar a pontuação que vem a seguir na próxima iteração do FOR
new_list.append(word) #escrevo a string da vez na nova lista
print(new_list)
file.truncate(0)
file.seek(0)
for line in new_list:
file.writelines(line+'\n')
file.close()