why when my loops change, some of my value did't change.

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By potatobanana

why my traits_dis did’t change when i get traits_ID == previous_trait_id, but traits_ID change.

when i print my traits_ID, it change, but my traits_dis**$character_stat/VBoxContainer/traits_note.set_text(traits_name + " : "+traits_dis)** did’t change.

example:
traits_ID:
1
2
3

traits_dis:
6 int, 3dex
5con, 1int
1 wis

when first click i get
**traits_ID 1** then my **traits_dis** should be **6 int,3dex**
when next click i get same traits_ID, and my loop working.
**traits_ID 3** then my **traits_dis** should be **1wis**

but i get 
**traits_ID 3** then my **traits_dis**   is  **6 int,3dex**

my traits_ID change but not my traits_dis


what should i do?

what i want to is  , i dont want to get same traits in row, for example if i click three time , i dont want it to be **traits 1,traits 1,traits 3** or **traits 3,traits 1,traits 1**.  i dont mind if become like **traits 3,traits 1,traits 3** or **traits 3,traits 1,traits 3**.

```
var previous_trait_id = -1
func traits():
	randomize()
	var traits_ID = randi() % (ImportData.traits_data.size()) + 1
	var traits_dis = ImportData.traits_data[str(traits_ID)].traits_discription
	var traits_name = ImportData.traits_data[str(traits_ID)].traits_name
	var traits_Value = ImportData.traits_data[str(traits_ID)]
	

	while traits_ID == previous_trait_id:
		traits_ID = randi() % (ImportData.traits_data.size()) + 1
	previous_trait_id = traits_ID
	
	$character_stat/VBoxContainer/traits_note.set_text(traits_name + " : "+traits_dis) 

	print("traits_dis ",traits_dis)
	print("traits_ID ", traits_ID)


func _on_traits_pressed() -> void:
	traits()
```
:bust_in_silhouette: Reply From: sebsays

Well you need to modify like :

    var previous_trait_id = -1
func traits():
    randomize()
    var traits_ID = randi() % (ImportData.traits_data.size()) + 1
    var traits_dis = ImportData.traits_data[str(traits_ID)].traits_discription
    var traits_name = ImportData.traits_data[str(traits_ID)].traits_name
    var traits_Value = ImportData.traits_data[str(traits_ID)]


    while traits_ID == previous_trait_id:
        traits_ID = randi() % (ImportData.traits_data.size()) + 1
        traits_dis = ImportData.traits_data[str(traits_ID)].traits_discription
        traits_name = ImportData.traits_data[str(traits_ID)].traits_name
        traits_Value = ImportData.traits_data[str(traits_ID)]

    previous_trait_id = traits_ID

    $character_stat/VBoxContainer/traits_note.set_text(traits_name + " : "+traits_dis) 

    print("traits_dis ",traits_dis)
    print("traits_ID ", traits_ID)


func _on_traits_pressed() -> void:
    traits()

i thought i just need to update ID only. thanks

potatobanana | 2021-02-18 06:22