Add comments for all A Classic Fairytale missions to summarize the story in a flow chart-like fashion
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/backstab.lua Sat Oct 28 17:48:54 2017 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/backstab.lua Sun Oct 29 00:53:11 2017 +0200
@@ -1,3 +1,53 @@
+--[[
+A Classic Fairytale: Backstab
+
+= SUMMARY =
+It is revealed that there's a traitor among the natives.
+Player decides whether to kill him or not.
+After the natives must defeat 3 waves of cannibals.
+
+= FLOW CHART =
+
+== Linear events ==
+
+- Cut scene: startScene (traitor is revealed)
+- Player is instructed to decide what to do with the traitor
+| Player kills traitor
+ - Cut scene: afterChoiceAnim
+| Player spares traitor
+ - Cut scene: afterChoiceAnim (different)
+| Player kills any other hog or own hog
+ > Game over
+- First turn of cannibals
+- TBS
+- First wave of cannibals dead
+- Cut scene: wave2Anim
+- Spawn 2nd cannibal wave
+- TBS
+- 2nd wave dead
+- Cut scene: wave2DeadAnim
+- All natives but one are encaged
+- 7 turns till arrival of 3rd wave
+- Arrival points are marked with circles
+- One hero is deployed near the circles
+- Player now only controls the hero, switch hog is removed
+- TBS
+- 3rd wave appears
+- TBS
+- 3rd wave dead
+- Final cut scene
+> Victory
+
+=== The traitor ===
+The traitor is chosen based on the past player decisions in the campaign.
+
+== Non-linear events ==
+
+| Any native hog dies after traitor decision:
+ - Another hog (if alive) mourns the loss
+
+]]
+
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/dragon.lua Sat Oct 28 17:48:54 2017 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/dragon.lua Sun Oct 29 00:53:11 2017 +0200
@@ -1,3 +1,31 @@
+--[[
+A Classic Fairytale: Dragon's Lair
+
+= SUMMARY =
+Hero must collect an utility crate on the other side of the river.
+To accomplish that, hero must first collect a series of crates with
+the rope and wipe out the cyborgs.
+
+= GOALS =
+- Mission goal (leads to immediate victory): Collect utility crate at the right side of the river
+- First sub-goal: Collect (or destroy) a series of crates (all other utility crates)
+- Second sub-goal: Wipe out the cyborgs
+
+= FLOW CHART =
+- Cut scene: Intro
+- TBS
+| Player accomplishes first sub-goal first:
+ - Cut scene: Cyborg reveals second goal
+| Player accomplshed second sub-goal first:
+ - Hero reminds player to collect/destroy remaining crates
+- Player accomplished both goals
+- Cut scene: Cyborg teleports hero and congrats hero and reveals portal gun
+- A teleporter crate appears, allowing the player to complete the mission
+- Player takes final crate at the very right
+> Victory
+
+]]
+
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/enemy.lua Sat Oct 28 17:48:54 2017 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/enemy.lua Sun Oct 29 00:53:11 2017 +0200
@@ -1,3 +1,21 @@
+--[[
+A Classic Fairytale: The enemy of my enemy
+
+= SUMMARY =
+Simple deathmatch on the Islands map.
+
+= GOAL =
+Wipe out the Hedge-cogs and Leader teams
+
+= FLOW CHART =
+- Cut scene: startAnim
+- TBS
+- Goal completed
+- Cut scene: finalAnim
+> Victory
+
+]]
+
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/epil.lua Sat Oct 28 17:48:54 2017 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/epil.lua Sun Oct 29 00:53:11 2017 +0200
@@ -1,3 +1,44 @@
+--[[
+A Classic Fairytale: Epilogue
+
+= SUMMARY =
+The epilogue, a final animated sequence (with 4 possible endings),
+plus a sandbox mode.
+
+= GOALS =
+You only need to finish the cut scene and quit.
+The cut scene can be skipped, this is OK, too.
+
+= FLOW CHART =
+== Linear events ==
+- Long cut scene. This is one of four possible endings.
+- The chosen ending depends on the enemy leader chosen in ACF8:
+| ACF8 leader: Dense Cloud
+ - Dense Cloud is the traitor and in prison
+ - See SetupAnimDense
+| ACF8 leader: Fell from Heaven
+ - Fell from Heaven is the traitor
+ - See SetupAnimPrincess
+| ACF8 leader: Fiery Water
+ - Fiery Water is the traitor and in prison
+ - See SetupAnimWater
+| ACF8 leader: Nancy Screw (cyborg)
+ - No traitors
+ - See SetupAnimCyborg
+- Mission is marked as completed after cut scene, but does not exit
+- Mission panel with congratulation message appears
+- Sandbox mode activated
+- All hogs except the traitor are now playable
+
+Note: This mission does not exit on its own.
+The player has either to kill everyone or use the Esc key.
+
+== Non-linear events ==
+| All hogs except the traitor are dead
+ - It's the traitor's turn now
+
+]]
+
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/family.lua Sat Oct 28 17:48:54 2017 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/family.lua Sun Oct 29 00:53:11 2017 +0200
@@ -1,3 +1,30 @@
+--[[
+A Classic Fairytale: Family Reunion
+
+= GOALS =
+Kill all visible cyborgs (not the princess).
+Then move hero to princess and Ramon and Spike Cheese to the surface.
+
+= FLOW CHART =
+== Linear events ==
+
+- Cut scene: Intro
+- First goal: Kill all visible cyborgs (princess is not a cyborg)
+- First goal completed
+- Cut scene: Cyborg reveals second goal
+- A ton of 5s mines spawn on the surface
+- Second goal: Hero must reach princess; Ramon and Spiky Cheese must reach the surface
+- Second goal completed
+> Victory
+
+== Non-linear events ==
+| Princess dead:
+ > Game over
+| Ramon, Spiky Cheese or hero dead:
+ > Game over
+
+]]
+
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/first_blood.lua Sat Oct 28 17:48:54 2017 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/first_blood.lua Sun Oct 29 00:53:11 2017 +0200
@@ -1,3 +1,90 @@
+--[[
+A Classic Fairytale: First Blood
+
+= SUMMARY =
+Simple introduction to the most basic aspects of gameplay.
+Basically a story-driven mini-tutorial. Does not replace
+a real tutorial, however.
+
+= GOAL =
+To complete the various tasks the chief gives to the player.
+
+= FLOW CHART =
+This section explains how this mission is (roughly)
+*supposed* to work, with a step-to-step list.
+Use this to hunt down bugs or for testing.
+
+All other missions in ACF will have the same section.
+
+These symbols are used:
+- Event
+| Choice (only one of these can happen)
+> End of mission
+: Go to another event in the flow chart
+
+“TBS” stands for “Turn-Based Stragegy”. It is used when the game switches from
+heavily scripted events to the default turn-based stragegy gameplay. This
+is not used in the first mission, however.
+
+== Linear events ==
+This is the expected course of events in chronological order.
+
+- Introduction; movement (left/right/jump) instructions
+- Player moves to mushroom
+- Double jump instructions, move to flower
+- Collect first crate (rope)
+- Rope instructions
+- Parachute crate appears in the right pit
+- Player collects parachute
+- Instruct player to move to mole head
+| If player stopped on mole head:
+ - Cut scene
+ - Place girder to block off right pit
+ - Spawn rope crate in left pit
+ - Player must collect crate safely
+ - If hurt: Reset player to mole head
+| If player skipped the mole (e.g. by roping) and instead went down the pit left from the mole:
+ - Different cut scene
+ - Place girder to block off right pit
+ - Spawn rope crate in left pit
+ - Player must collect this crate
+- Shoryuken crate spawns
+- Player destroys all targets
+- Rope challenge
+ - Player chooses rope challenge difficulty
+ - Crates spawn, one-by-one, while player collects them
+ | If player collects all crates in time:
+ - Proceed
+ | If player fails to collect all crates in time:
+ : Rope challenge restarts
+- Deagle crate spawns
+- Player collects deagle crate
+- Deagle targets spawn
+- Deagle targets destroyd
+- Cannibal and lots of ammo crates appear
+| Player kills cannibal
+ > Victory
+| Player moves close to cannibal
+ - Many weapon crates with melee weapons spawn
+ - Cut scene
+ - Player kills cannibal
+ > Victory
+
+== Non-linear events ==
+These events can be triggered at (theoretically) any time and interrupt
+the normal flow. Obvious events like “all player hogs dead” are omitted here.
+
+- Player hog damages princess:
+ - Princess complains
+- Player hog damages chief
+ - Chief complains
+- Player hog, Princess or Chief dead:
+ > Game over
+- Player hurt itself without dying:
+ - Chief mocks player
+
+]]
+
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/journey.lua Sat Oct 28 17:48:54 2017 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/journey.lua Sun Oct 29 00:53:11 2017 +0200
@@ -1,3 +1,106 @@
+--[[
+A Classic Fairytale: The Journey Back
+
+= SUMMARY =
+This is a very complex and heavily scripted mission with
+2 major gameplay variants and 2 sub-variants each.
+
+This mission is mostly about movement and overcoming obstacles,
+and not much about fighting.
+
+The player has either 1 or 2 hogs (depending on previous mission)
+and must reach the left coast. The cyborg will show up from time
+to time and constantly annoys the heroes with obstacles and additional
+challenges.
+
+The mission's gameplay is affected by whether Dense Cloud survived
+in the previous mission. The mission's dialogues are affected by
+the decision of the player in the previous mission.
+
+= GOALS =
+- Collect the crate at the left coast
+- (Need to accomplish various sub-goals before this is possible)
+- Then kill the cyborg
+
+= FLOW CHART =
+== Linear events ==
+
+Note: This mission's gameplay is significantly affected by the choices of the previous mission (The Shadow Falls).
+There are two major paths, and each of them has two variants.
+
+=== PATH ONE (AL) ===
+Condition: Cyborg's offer in ACF2 accepted and Dense Cloud survived.
+
+- Mission starts with Dense Cloud and Leaks a Lot
+- Mines time: 5s
+- Cut scene: startAnimAL (initial instructions)
+- Hog moves past flower (via teamwork)
+- Animation: pastFlowerAnimAL
+- Player jumps up the tree
+- Cut scene: outPutAnimAL
+- Cyborg teleports one hog to the pit, while the other hog remains
+- TBS
+- Trapped hog walks out of pit
+- Cut scene: midAnimAL
+- Trapped hog is teleported below bridge (and trapped again)
+- A huge barricade at the bridge is erected, and mines spawn on bridge
+- Now any hog needs to collect the final crate
+- TBS
+- Final crate collected
+- Cut scene: endAnimAL
+- Cyborg and princess apear, player must kill cyborg
+| Cyborg killed
+ - Cut scene: winAnim
+ > Victory
+| Princess killed
+ - Cut scene: endFailAnim
+ > Game over
+
+=== PATH TWO (AD) ===
+Condition: Cyborg's offer in ACF2 accepted, but Dense Cloud died afterwards.
+
+- Mission starts with Leaks a Lot only
+- Cut scene: startAnimAD (initial instructions)
+- Hog moves past flower (via blowtorch)
+- Animation: pastFlowerAnimAD
+- TBS
+- Hog proceeds all the way to the bridge
+- Cut scene: outPutAnimAD (the “Princess Game”)
+- Hog is teleported to the pit
+- TBS
+- Hog must reach goal crate within a given number of turns
+| Hog reaches goal crate within the turn limit
+ - Cut scene: endAnimAD
+ - Cyborg and princess spawn
+ | Cyborg killed
+ - Cut scene: winAnim
+ > Victory
+ | Princess killed
+ - Cut scene: endFailAnim
+ > Game over
+| Turn limit exceeded
+ - Cut scene: failAnimAD (princess is caged and killed by cyborg)
+ > Game over
+
+=== PATH THREE (RL) ===
+Condition: Cyborg's offer in ACF2 rejected.
+
+This is almost identical to Path One, only the dialogues differ.
+All AL animations are replaced with RL animations.
+
+=== PATH FOUR (attacked) ===
+Condition: Cyborg from ACF2 was attacked.
+
+This is almost identical to Path Two, only the dialogues differ.
+Uses startAnim and midAnim from SetupAnimAttacked.
+
+
+== Non-linear events ==
+- Any of the Natives dies
+ > Game over
+
+]]
+
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/queen.lua Sat Oct 28 17:48:54 2017 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/queen.lua Sun Oct 29 00:53:11 2017 +0200
@@ -1,3 +1,34 @@
+--[[
+A Classic Fairytale: Long live the Queen
+
+= SUMMARY =
+Deathmatch against a leader of a pack of cyborgs with 4 different storylines (but mostly identical gameplay).
+
+= GOALS =
+Defeat Biomechanic Team.
+
+= FLOW CHART =
+- Show one of 4 possible storylines which affect the choice of the enemy leader (only minor effect on gameplay):
+ | 1) If offer accepted in ACF2 and traitor not executed in ACF5: Dense Cloud
+ | 2) Otherwise: If offer accepted in ACF2: Nancy Screw (cyborg)
+ | 3) Otherwise: If traitor was executed in ACF5: Fell from Heaven
+ | 4) Otherwise: Fiery Water
+- Cut scene: startAnim
+- TBS
+- Biomechanic Team defeated.
+- Cut scene: finalAnim
+> Victory
+
+== Non-linear events ==
+| Leader dead
+ - Cut scene: leaderDeadAnim
+| Played more than 6 rounds and leader is still in game
+ - Cut scene: fleeAnim
+ - Leader flees
+ - Instructions: Kill remaining enemies
+
+]]
+
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/shadow.lua Sat Oct 28 17:48:54 2017 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/shadow.lua Sun Oct 29 00:53:11 2017 +0200
@@ -1,3 +1,64 @@
+--[[
+A Classic Fairytale: The Shadow Falls
+
+= SUMMARY =
+Dense Cloud and Leaks a Lot fight against waves of cannibals. Then a
+cyborg shows up and offers one of the natives goodies in exchange for
+betraying his tribe.
+
+The decision affects the rest of the story. The survival of Dense
+Cloud is important for the gameplay of the next mission.
+
+= GOALS =
+Kill Weaklings and Stronglings.
+
+= FLOW CHART =
+== Linear events ==
+
+- Initial hog spawns: Dense Cloud, Leaks a Lot and Brainiac (Weaklings)
+- Cut scene: startDialogue
+- TBS
+- Brainiac dead
+- Cut scene: weaklingsAnim
+- The remaining Weaklings spawn
+- TBS
+- All Weaklings dead
+- Cut scene: stronglingsAnim: Stronglings spawn, hero walks to forest, meets cyborg, cyborg makes offer
+- The cyborg offer is an IMPORTANT decision, it completely changes the next mission, and the rest of the story
+| Accept: Player walks to cyborg
+ - Cut scene: acceptAnim
+ - Hero returns to start
+ - TBS
+ - Stronglings defeated
+ | Stronglings defeated with both hogs survived
+ - Cut scene: acceptedSurvivedFinalAnim
+ | Stronglings deafeated with Dense Cloud dead
+ - Cut scene: acceptedDiedFinalAnim
+ > Victory
+| Reject: Player walks away
+ - Cut scene: refusedAnim
+ - Hero needs to walk all the way back (infinite turn time)
+ - Hero reached tree
+ - Turn time starts
+ - TBS
+ - Stronglings defeated
+ - Cut scene: refusedFinalAnim
+ > Victory
+| Attack: Player attacks cyborg
+ - Cut scene: attackAnim
+ - Cyborg kills hero
+ - Other native's turn to defeat Stronglings
+ - TBS
+ - Stronglings defeated
+ - Cut scene: attackedFinalAnim
+ > Victory
+
+== Non-linear events ==
+| Dense Cloud or Leaks A Lot dead (exceptions: killed by cyborg; or Dense Cloud died in same turn as the Stronglings):
+ > Game over
+
+]]
+
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
--- a/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/united.lua Sat Oct 28 17:48:54 2017 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/united.lua Sun Oct 29 00:53:11 2017 +0200
@@ -1,3 +1,27 @@
+--[[
+A Classic Fairytale: United we stand
+
+= SUMMARY =
+Simple Deathmatch against cannibals in two waves.
+
+= GOAL =
+Kill both Cannfantery (cannibal) teams.
+
+= FLOW CHART =
+
+- Light Cannfantery and player hogs spawn
+- Cut scene: startAnim
+- TBS
+- Light Cannfantery defeated
+- Cut scene: wave2Anim
+- Heavy Cannfantery spawns
+- TBS
+- Heavy Cannfantery defeated
+- Cut scene: finalAnim
+> Victory
+
+]]
+
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")