Something like this maybe?
Strict Type WClass Field Name$ Field Atk#, Str#, Skl# Function Create(_Name$,_Atk#,_Str#,_Skl#) Local newclass:WClass = New WClass newclass.Name$ = _Name$ newclass.Atk = _Atk newclass.Str = _Str newclass.Skl = _Skl ListAddLast(WClassList,newclass) End Function Function Find:WClass(_Name$) For Local c:WClass = EachIn WClassList If c.Name$ = _Name$ Then Return c Next Return Null End Function End Type Type WType Field Name$ Field Speed#, Modif# Function Create(_Name$,_Speed#,_Modif#) Local newtype:WType = New WType newtype.Name$ = _Name$ newtype.Speed = _Speed newtype.Modif = _Modif ListAddLast(WTypeList,newtype) End Function Function Find:WType(_Name$) For Local t:WType = EachIn WTypeList If t.Name$ = _Name$ Then Return t Next Return Null End Function End Type Type WElement Field Name$ Field DamageX2$ Function Create(_Name$,_DamageX2$) Local newelement:WElement = New WElement newelement.Name$ = _Name$ newelement.DamageX2 = _DamageX2 ListAddLast(WElementList,newelement) End Function Function Find:WElement(_Name$) For Local e:WElement = EachIn WElementList If e.Name$ = _Name$ Then Return e Next Return Null End Function End Type Type Weapon Field WeaponName$ Field WeaponClass$ Field WeaponType$ Field WeaponElement$ Function Create:Weapon(_Name$,_WClass$,_WType$,_WElement$) Local newweapon:Weapon = New Weapon newweapon.WeaponName$ = _Name$ newweapon.WeaponClass$ = _WClass$ newweapon.WeaponType$ = _WType$ newweapon.WeaponElement$ = _WElement$ Return newweapon End Function Method Print_Weapon() Print "Name:"+WeaponName Print "Weapon type:" + WeaponClass + " " + WeaponType Print "Atk:" + WClass.Find(WeaponClass).Atk Print "Str:" + WClass.Find(WeaponClass).Str Print "Skl:" + WClass.Find(WeaponClass).Skl Print "Speed:" + WType.Find(WeaponType).Speed Print "Modif:" + WType.Find(WeaponType).Modif Print "Element:" + WeaponElement End Method End Type Global WClassList:TList = CreateList() Global WTypeList:TList = CreateList() Global WElementList:TList = CreateList() 'Create a list of weapon classes WClass.Create("Wood",1,1,1) WClass.Create("Bronz",50,25,2) WClass.Create("Silver",100,66,5) WClass.Create("Gold",255,32,9) 'Create a list of weapon types WType.Create("Sword",5,20) WType.Create("Dagger",2,12) WType.Create("Hammer",1,24) 'Create a list of elements WElement.Create("Fire","Water") WElement.Create("Water","Fire") WElement.Create("Wind","Earth") WElement.Create("Earth","Wind") 'Create some weapons Local Weapon1:Weapon = Weapon.Create("Blade of wrath","Wood","Sword","Fire") Local Weapon2:Weapon = Weapon.Create("Hammer of might","Gold","Hammer","Earth") Local Weapon3:Weapon = Weapon.Create("Watergod's dagger??","Silver","Dagger","Water") Weapon1.Print_Weapon() Print "" Weapon2.Print_Weapon() Print "" Weapon3.Print_Weapon()