Clone of popular 90's computer game for C#.
git clone --recursive https://github.com/Maxwolf/OregonTrail.gitMake sure your git client recursively grabs all the sub-modules for the repo. Most Git GUI's (e.g, SourceTree, SmartGit, GitEye) will all do this automatically for you.
You should be able to run the Cake build script by invoking the bootstrapper with a script tailored to the target platform.
build.batIf script execution fail due to the execution policy, you might have to tell PowerShell to allow running scripts. You do this by changing the execution policy.
bash build.shThe list below describes how this clone actually behaves. Where the clone deliberately reimplements a rule from the original 1980s/1990s game differently, that is called out with a (differs from original: …) note.
- The trip is simulated one day at a time; each day the vehicle advances toward the next landmark until it is reached (differs from original, which used fixed two-week segments)
- A turn counter increments once per simulated day; there is no fixed 18-turn cap (differs from original's up-to-18 two-week turns)
- Reaching 246 days (20+ weeks) on the trail forces the end-game routine even if the party has not yet reached Oregon
- Each day's ideal mileage is calculated from the value of the party's oxen plus a small random amount (differs from original's per-two-week ~200 mile projection)
- Mileage is an ideal figure; problems (dead/wandering oxen, floods, fog, hail, illness) subtract from it, floored so the wagon always makes at least a little progress
- The travel screen continuously shows miles traveled (odometer) and distance to the next landmark
- Daily mileage is driven by the oxen-value formula rather than a fixed weekly average (differs from original's ~75 miles/week)
- The going gets harder later in the trip: later locations use harsher climates, and high mountain passes apply a slow-going mileage penalty
- Weather changes day to day; carrying fewer sets of clothing than there are party members raises the chance of illness
- Stopping at a fort dramatically reduces the miles covered on the very next travel turn
- Bad weather is driven by whether a random daily temperature falls at/below the month's average for the region (differs from original's flat 20%)
- Injuries (broken arm, concussion, sprains) occur as random Person-category events (differs from original's flat 5%)
- Random events are selected by context (weather while moving, vehicle events while traveling, river events at crossings, cave-ins/blizzards in the high country)
- Snow appears through the cold-weather climate system, river disasters occur at river crossings, and blizzards occur at high elevations
- Clothing and wagon parts cost 2.5 dollars more at each fort further down the trail
- Food costs 0.10 dollars more and bullets 2.5 dollars more at each fort
- Oxen cost 5 dollars more at each fort
- Resting at a landmark lets sick or injured party members recover (quickly if the party carries medical supplies, slowly otherwise)
- Locations carry a fresh-water flag; a bad-water location doubles the daily chance of contracting dysentery or cholera
- The maximum weight of food that can be carried back from a single hunt is 250 lbs
- The fewer animals you kill while hunting, the cheaper the Shoshoni river guide's price in clothing
- A river configured for an Indian guide will ferry the wagon across for a base of 1-5 sets of clothing (rising with the number of animals killed)
- A random shooting word is selected for the player to type
- Each animal is given a randomized on-screen "targeting" lifetime measured in simulation ticks (differs from original's real-clock start time)
- The player must type the correct shooting word while an animal is targeted
- Reaction speed is measured by how many ticks the animal has been targeted (differs from original's end-minus-start-time subtraction)
- Firing within the first half of the animal's targeting lifetime is a good (successful) shot (differs from original's fixed 2-second threshold)
- Ammunition is consumed on each kill, based on current ammo and a random factor (differs from original's shoot-time-based consumption)
- Food consumption in pounds is calculated from the ration level each day (a higher ration level consumes more food)
- A 0-99 dice roll gates whether a category event fires on a given tick (fires on a roll of 0)
- Which event fires is chosen by cumulative per-event probability weights declared on each event
- Events are laid out on a cumulative number line (e.g. 0-6=eventA, 6-11=eventB, …) and a single roll selects one; equal weights reproduce a uniform pick
- An event typically prints a message and can subtract mileage and destroy supplies
- More complex events (bandits, wild-animal attacks, weather, illness) combine several effects such as item loss, ammo consumption, and passenger death
- Illness risk is checked against the party's clothing count versus the number of living members
- Insufficient clothing for the party triggers the illness routine
- The illness routine is also driven by poor eating (Meager or Bare Bones rations)
- Checks how well the party has been eating (via ration level)
- There is a chance to contract a mild, a bad (moderate), or a very serious illness
- Mild and bad illnesses can be shrugged off; a very serious illness leaves the person infected and needs medical supplies (or lengthy rest) to recover
- Higher elevations risk cave-ins, losing your way, and slow going
- 80% chance of getting stuck when departing South Pass
- 70% chance of getting stuck when departing the Blue Mountains
- Being stuck in the mountains never lasts more than 10 days
- At high elevations, storms are blizzards 90% of the time
- Death can come from running out of food (starvation), lack of clothing (illness), or being sick with no medical supplies; running out of both food and ammunition accelerates starvation
- A short message tells you the cause of death
- How far you traveled and the supplies you had left are shown on the death screen
- Historically fewer than 50% (realistically ~20%) of emigrants completed the journey — flavor only, not modeled in code
- Displays the total time and distance of the journey
- Remaining supplies are shown
