what you need is a system that keeps track of significant events and how they affect each other . think of it like a spider web graph with each intersection node being an event and all the connections edges being effects on other events . so you would have have a class that is an event node , that keeps track of data associated with that event i . e . which options exists and which was chosen . The node would also have a list of events that affect it . So in your game when an event comes up , it loads it own node , and all the nodes that affect it . You can then use the node to run any logic you need , and then update it so it can effect other events . feel free to ask for clarification advice as you get implementing . sounds like a fun challenge .