if you simply mean in-code ~ in-game-file organization:
I see you quickly realized how cumbersome~bad the use of booleans~flags are... lol (unfortunately, they're so simple to use... sighs)
A better design I have realized is to do this (using string lists or whatever list~dictionary):
(though it involves understand of lists and~or dictionaries, which isn't noobie-friendly)
Game Using As Booleans~Flags:
while so simple to use and understand, they quickly pile up... you literally need a boolean for everything, lol
Tagging ("Creation"):
<object name="Object_Name">
-> <Attribute_Name type="Attribute_Type">Attribute_Value</Attribute_Name>
</object>
Scripting ("Action"):
player.flying=false_or_true
player.running=false_or_true
player.swimming=false_or_true
player.jumping=false_or_true
player.sneaking=false_or_true
monster.dead=false_or_true
player.poisoned=false_or_true
player.blinded=false_or_true
player.defending=false_or_true
player.resting=false_or_true
player.male_boolean=false_or_true
player.female_boolean=false_or_true
etc etc etc
a better way is to use String Lists and Strings:
(this is a bit advanced code design~organization though)
Tagging ("Creation"):
<object name="player">
-> <inherit name="editor_object" />
-> <inherit name="editor_player" />
-> <locomotion_string_list type="simplestringlist">walking;bipedal</locomotion_string_list>
-> <status_effect_string type="simplestringlist">none</status_effect_string>
-> <gender_string type="string">male</gender_string>
-> etc etc etc
</object>
<object name="global_data_object">
-> <inherit name="editor_object" />
-> <locomotion_string_list type="simplestringlist">walking;running;jumping;falling;flying;floating;swimming;jogging;crawling;climbing;gliding;bipedal;quadripedal</locomotion_string_list>
-> <status_effect_string_list type="simplestringlist">poisoned;silenced;asleep;blinded;confused;stunned;petrified;paralyzed;cursed;blessed</status_effect_string_list>
</object>
-> <status_condition_string_list type="simplestringlist">dead;healthy;wounded;unconcious;critically_wounded</status_condition_string_list>
-> gender_string_list type="simplestringlist">male;female</gender_string_list>
-> etc etc etc
</object>
Scripting ("Action"):
(an single example)
// you just drank a "flying_potion"
list add (player.locomotion_string_list, "flying")
// you are trying to take a magical key floating high up in the air above you
if (ListContains (player.locomation_string_list, "flying") {
-> msg ("Now being able to fly, you easily get the key")
-> key.parent = player
} else {
-> msg ("What?! Did you think you can fly?")
}
----------------
and for organizing and~or storage (within the Game File or Library File), I've shown a great method above already, but here it is in detail:
"data objects"
<asl version="540">
<include ref="English.aslx"/>
<include ref="Core.aslx"/>
<game name="Testing Game Stuff">
<gameid>d67ec73f-f879-4911-9d88-c02ea527c534</gameid>
<version>1.0</version>
<firstpublished>2013</firstpublished>
</game>
<object name="room">
<inherit name="editor_room" />
<object name="player">
<inherit name="editor_object" />
<inherit name="editor_player" />
</object>
</object>
<object name="character_attribute_data_object">
<inherit name="editor_object" />
<strength_integer type="int">0</strength_integer>
<endurance_integer type="int">0</endurance_integer>
<dexterity_integer type="int">0</dexterity_integer>
<agility_integer type="int">0</agility_integer>
<speed_integer type="int">0</speed_integer>
<piety_integer type="int">0</piety_integer>
<intelligence_integer type="int">0</intelligence_integer>
<spirituality_integer type="int">0</spirituality_integer>
<mentality_integer type="int">0</mentality_integer>
<luck_integer type="int">0</luck_integer>
<perception_integer type="int">0</perception_integer>
<personality_integer type="int">0</personality_integer>
<charisma_integer type="int">0</charisma_integer>
<leadership_integer type="int">0</leadership_integer>
<alignment_integer type="int">0</alignment_integer>
<level_integer type="int">0</level_integer>
<experience_integer type="int">0</experience_integer>
<cash_integer type="int">0</cash_integer>
</object>
<object name="date_and_time_data_object">
<inherit name="editor_object" />
<day_string type="string"></day_string>
<month_string type="string"></month_string>
<season_string type="string"></season_string>
<second_integer type="int">0</second_integer>
<minute_integer type="int">0</minute_integer>
<hour_integer type="int">0</hour_integer>
<day_integer type="int">0</day_integer>
<week_integer type="int">0</week_integer>
<month_integer type="int">0</month_integer>
<year_integer type="int">0</year_integer>
</object>
// etc "Data Objects"
</asl>
and they can be used (in Scripting):
if (date_and_time_data_object.month_string="january") {
-> msg ("It is " + date_and_time_data_object.month_string +".")
// outputs~displays: It is january.