# HG changeset patch # User Wuzzy # Date 1460551157 -7200 # Node ID 1de4d6b3574801aced22e8259d9bae3d84b7ec2e # Parent 7dd85fe00de379ffeea3034bb005c04ea2f6c1a8 Mission recategorization into trainings, challenges and scenarios. This moves the missions into new folders and adds a nice tab widget in the mission menu diff -r 7dd85fe00de3 -r 1de4d6b35748 QTfrontend/game.cpp --- a/QTfrontend/game.cpp Sun Nov 20 04:21:24 2016 +0100 +++ b/QTfrontend/game.cpp Wed Apr 13 14:39:17 2016 +0200 @@ -44,6 +44,7 @@ // last game info QList lastGameStartArgs = QList(); GameType lastGameType = gtNone; +QString lastTrainingSubFolder = NULL; GameCFGWidget * lastGameCfg = NULL; QString lastGameAmmo = NULL; TeamSelWidget * lastGameTeamSel = NULL; @@ -478,14 +479,16 @@ SetGameState(gsStarted); } -void HWGame::StartTraining(const QString & file) +void HWGame::StartTraining(const QString & file, const QString & subFolder) { lastGameStartArgs.clear(); lastGameStartArgs.append(file); lastGameType = gtTraining; + lastTrainingSubFolder = subFolder; gameType = gtTraining; - training = "Missions/Training/" + file + ".lua"; + + training = "Missions/" + subFolder + "/" + file + ".lua"; demo.clear(); Start(false); SetGameState(gsStarted); diff -r 7dd85fe00de3 -r 1de4d6b35748 QTfrontend/game.h --- a/QTfrontend/game.h Sun Nov 20 04:21:24 2016 +0100 +++ b/QTfrontend/game.h Wed Apr 13 14:39:17 2016 +0200 @@ -64,6 +64,7 @@ // last game info extern QList lastGameStartArgs; extern GameType lastGameType; +extern QString lastTrainingSubFolder; extern GameCFGWidget * lastGameCfg; extern QString lastGameAmmo; extern TeamSelWidget * lastGameTeamSel; @@ -79,7 +80,7 @@ void StartLocal(); void StartQuick(); void StartNet(); - void StartTraining(const QString & file); + void StartTraining(const QString & file, const QString & subFolder); void StartCampaign(const QString & camp, const QString & campScript, const QString & campTeam); void abort(); GameState gameState; diff -r 7dd85fe00de3 -r 1de4d6b35748 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sun Nov 20 04:21:24 2016 +0100 +++ b/QTfrontend/hwform.cpp Wed Apr 13 14:39:17 2016 +0200 @@ -318,7 +318,7 @@ connect(ui.pageSinglePlayer->BtnLoad, SIGNAL(clicked()), this, SLOT(GoToSaves())); connect(ui.pageSinglePlayer->BtnDemos, SIGNAL(clicked()), this, SLOT(GoToDemos())); - connect(ui.pageTraining, SIGNAL(startMission(const QString&)), this, SLOT(startTraining(const QString&))); + connect(ui.pageTraining, SIGNAL(startMission(const QString&, const QString&)), this, SLOT(startTraining(const QString&, const QString&))); connect(ui.pageCampaign->BtnStartCampaign, SIGNAL(clicked()), this, SLOT(StartCampaign())); connect(ui.pageCampaign->btnPreview, SIGNAL(clicked()), this, SLOT(StartCampaign())); @@ -1701,11 +1701,11 @@ ui.pageVideos->startEncoding(record); } -void HWForm::startTraining(const QString & scriptName) +void HWForm::startTraining(const QString & scriptName, const QString & subFolder) { CreateGame(0, 0, 0); - game->StartTraining(scriptName); + game->StartTraining(scriptName, subFolder); } void HWForm::StartCampaign() @@ -2095,7 +2095,7 @@ switch(lastGameType) { case gtTraining: - game->StartTraining(lastGameStartArgs.at(0).toString()); + game->StartTraining(lastGameStartArgs.at(0).toString(), lastTrainingSubFolder); break; case gtQLocal: game->StartQuick(); diff -r 7dd85fe00de3 -r 1de4d6b35748 QTfrontend/hwform.h --- a/QTfrontend/hwform.h Sun Nov 20 04:21:24 2016 +0100 +++ b/QTfrontend/hwform.h Wed Apr 13 14:39:17 2016 +0200 @@ -95,7 +95,7 @@ void DeleteWeaponSet(); void SimpleGame(); void PlayDemo(); - void startTraining(const QString&); + void startTraining(const QString&, const QString&); void StartCampaign(); void NetConnect(); void NetConnectServer(const QString & host, quint16 port); diff -r 7dd85fe00de3 -r 1de4d6b35748 QTfrontend/ui/page/pagetraining.cpp --- a/QTfrontend/ui/page/pagetraining.cpp Sun Nov 20 04:21:24 2016 +0100 +++ b/QTfrontend/ui/page/pagetraining.cpp Wed Apr 13 14:39:17 2016 +0200 @@ -73,14 +73,27 @@ pageLayout->setAlignment(infoLayout, Qt::AlignLeft); - // mission list - lstMissions = new QListWidget(this); - lstMissions->setWhatsThis(tr("Pick the mission or training to play")); - pageLayout->addWidget(lstMissions, 1, 0, 1, 2); // span 2 columns + // tab widget containing all lists + tbw = new QTabWidget(this); + pageLayout->addWidget(tbw, 1, 0, 1, 2); // span 2 columns + // let's not make the tab widget use more space than needed + tbw->setFixedWidth(400); + pageLayout->setAlignment(tbw, Qt::AlignHCenter); + + // training/challenge/scenario lists + lstTrainings = new QListWidget(this); + lstTrainings ->setWhatsThis(tr("Pick the training to play")); - // let's not make the list use more space than needed - lstMissions->setFixedWidth(400); - pageLayout->setAlignment(lstMissions, Qt::AlignHCenter); + lstChallenges = new QListWidget(this); + lstChallenges ->setWhatsThis(tr("Pick the challenge to play")); + + lstScenarios= new QListWidget(this); + lstScenarios->setWhatsThis(tr("Pick the scenario to play")); + + tbw->addTab(lstTrainings, tr("Trainings")); + tbw->addTab(lstChallenges, tr("Challenges")); + tbw->addTab(lstScenarios, tr("Scenarios")); + tbw->setCurrentWidget(lstTrainings); return pageLayout; } @@ -103,9 +116,20 @@ void PageTraining::connectSignals() { - connect(lstMissions, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(updateInfo())); - connect(lstMissions, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(updateInfo())); - connect(lstMissions, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(startSelected())); + connect(lstTrainings, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(updateInfo())); + connect(lstTrainings, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(updateInfo())); + connect(lstTrainings, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(startSelected())); + + connect(lstChallenges, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(updateInfo())); + connect(lstChallenges, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(updateInfo())); + connect(lstChallenges, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(startSelected())); + + connect(lstScenarios, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(updateInfo())); + connect(lstScenarios, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(updateInfo())); + connect(lstScenarios, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(startSelected())); + + connect(tbw, SIGNAL(currentChanged(int)), this, SLOT(updateInfo())); + connect(btnPreview, SIGNAL(clicked()), this, SLOT(startSelected())); connect(btnStart, SIGNAL(clicked()), this, SLOT(startSelected())); } @@ -140,79 +164,128 @@ m_info = new QSettings(infoFile, QSettings::IniFormat, this); m_info->setIniCodec("UTF-8"); - - QStringList missionList = dataMgr.entryList( - "Missions/Training", - QDir::Files, QStringList("*.lua")). - replaceInStrings(QRegExp("\\.lua$"), ""); - - // scripts to lost - TODO: model? - foreach (const QString & mission, missionList) - { - QListWidgetItem * item = new QListWidgetItem(mission); + QStringList m_list; + QListWidget * m_widget; + QString subFolder; - // fallback name: replace underscores in mission name with spaces - QString name = item->text().replace("_", " "); - - // see if we can get a prettier/translated name - name = m_info->value(mission + ".name", name).toString(); + for(int i=1; i<=3; i++) { + switch(i) { + case 1: + subFolder = "Training"; + m_widget = lstTrainings; + break; + case 2: + subFolder = "Challenge"; + m_widget = lstChallenges; + break; + case 3: + subFolder = "Scenario"; + m_widget = lstScenarios; + break; + } + m_list = dataMgr.entryList( + "Missions/" + subFolder, + QDir::Files, QStringList("*.lua")). + replaceInStrings(QRegExp("\\.lua$"), ""); - item->setText(name); + // scripts to load - TODO: model? + foreach (const QString & m_id, m_list) + { + QListWidgetItem * item = new QListWidgetItem(m_id); + + // fallback name: replace underscores in mission name with spaces + QString name = item->text().replace("_", " "); - // store original name in data - item->setData(Qt::UserRole, mission); + // see if we can get a prettier/translated name + name = m_info->value(m_id + ".name", name).toString(); + + item->setText(name); - lstMissions->addItem(item); + // store original name in data + item->setData(Qt::UserRole, m_id); + + m_widget->addItem(item); + } } updateInfo(); // pre-select first mission - if (lstMissions->count() > 0) - lstMissions->setCurrentRow(0); + if (lstTrainings->count() > 0) + lstTrainings->setCurrentRow(0); + + if (lstChallenges->count() > 0) + lstChallenges->setCurrentRow(0); + + if (lstScenarios->count() > 0) + lstScenarios->setCurrentRow(0); } +QString PageTraining::getSubFolderOfSelected() +{ + QString subFolder; + if (tbw->currentWidget() == lstTrainings) { + subFolder = "Training"; + } else if (tbw->currentWidget() == lstChallenges) { + subFolder = "Challenge"; + } else if (tbw->currentWidget() == lstScenarios) { + subFolder = "Scenario"; + } else { + subFolder = "Training"; + } + return subFolder; +} void PageTraining::startSelected() { - QListWidgetItem * curItem = lstMissions->currentItem(); + QListWidget *list; + list = (QListWidget*) tbw->currentWidget(); + QListWidgetItem * curItem = list->currentItem(); if (curItem != NULL) - emit startMission(curItem->data(Qt::UserRole).toString()); + emit startMission(curItem->data(Qt::UserRole).toString(), getSubFolderOfSelected()); } void PageTraining::updateInfo() { - if (lstMissions->currentItem()) + if (tbw->currentWidget()) { - // TODO also use .pngs in userdata folder - QString thumbFile = "physfs://Graphics/Missions/Training/" + - lstMissions->currentItem()->data(Qt::UserRole).toString() + - "@2x.png"; + QString subFolder; + QListWidget *list; + subFolder = getSubFolderOfSelected(); + list = (QListWidget*) tbw->currentWidget(); + if (list->currentItem()) + { + // TODO also use .pngs in userdata folder + QString thumbFile = "physfs://Graphics/Missions/" + + subFolder + "/" + + list->currentItem()->data(Qt::UserRole).toString() + + "@2x.png"; - if (QFile::exists(thumbFile)) - btnPreview->setIcon(QIcon(thumbFile)); - else - btnPreview->setIcon(QIcon(":/res/Trainings.png")); - - QString realName = lstMissions->currentItem()->data( - Qt::UserRole).toString(); + if (QFile::exists(thumbFile)) + btnPreview->setIcon(QIcon(thumbFile)); + else + btnPreview->setIcon(QIcon(":/res/Trainings.png")); - QString caption = m_info->value(realName + ".name", - lstMissions->currentItem()->text()).toString(); + QString realName = list->currentItem()->data( + Qt::UserRole).toString(); - QString description = m_info->value(realName + ".desc", - tr("No description available")).toString(); + QString caption = m_info->value(realName + ".name", + list->currentItem()->text()).toString(); + + QString description = m_info->value(realName + ".desc", + tr("No description available")).toString(); - lblCaption->setText("

" + caption +"

"); - lblDescription->setText(description); - } - else - { - btnPreview->setIcon(QIcon(":/res/Trainings.png")); - lblCaption->setText(tr("Select a mission!")); - // TODO better text and tr() - lblDescription->setText(""); + lblCaption->setText("

" + caption +"

"); + lblDescription->setText(description); + } + else + { + btnPreview->setIcon(QIcon(":/res/Trainings.png")); + lblCaption->setText(tr("Select a mission!")); + // TODO better text and tr() + lblDescription->setText(""); + } } } diff -r 7dd85fe00de3 -r 1de4d6b35748 QTfrontend/ui/page/pagetraining.h --- a/QTfrontend/ui/page/pagetraining.h Sun Nov 20 04:21:24 2016 +0100 +++ b/QTfrontend/ui/page/pagetraining.h Wed Apr 13 14:39:17 2016 +0200 @@ -30,7 +30,7 @@ signals: - void startMission(const QString & scriptName); + void startMission(const QString & scriptName, const QString & subFolder); protected: @@ -44,8 +44,12 @@ QPushButton * btnStart; QLabel * lblCaption; QLabel * lblDescription; - QListWidget * lstMissions; + QTabWidget * tbw; + QListWidget * lstTrainings; + QListWidget * lstChallenges; + QListWidget * lstScenarios; QSettings * m_info; + QString getSubFolderOfSelected(); private slots: diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/CMakeLists.txt --- a/share/hedgewars/Data/Graphics/Missions/CMakeLists.txt Sun Nov 20 04:21:24 2016 +0100 +++ b/share/hedgewars/Data/Graphics/Missions/CMakeLists.txt Wed Apr 13 14:39:17 2016 +0200 @@ -1,1 +1,3 @@ add_subdirectory(Training) +add_subdirectory(Challenge) +add_subdirectory(Scenario) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/Basic_Training_-_Sniper_Rifle.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/Basic_Training_-_Sniper_Rifle.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/Basic_Training_-_Sniper_Rifle@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/Basic_Training_-_Sniper_Rifle@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Graphics/Missions/Challenge/CMakeLists.txt Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,5 @@ +file(GLOB MissionPics *@2x.png) + +install(FILES + ${MissionPics} + DESTINATION ${SHAREPATH}Data/Graphics/Missions/Challenge) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/Challenge_-_Speed_Shoppa_-_Hedgelove@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/Challenge_-_Speed_Shoppa_-_Hedgelove@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/Challenge_-_Speed_Shoppa_-_Ropes@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/Challenge_-_Speed_Shoppa_-_Ropes@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/Challenge_-_Speed_Shoppa_-_ShoppaKing@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/Challenge_-_Speed_Shoppa_-_ShoppaKing@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/ClimbHome.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/ClimbHome.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/ClimbHome@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/ClimbHome@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Bazooka_easy@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Bazooka_easy@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Bazooka_hard@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Bazooka_hard@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Cluster_Bomb@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Cluster_Bomb@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Grenade_easy@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Grenade_easy@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Grenade_hard@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Grenade_hard@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Homing_Bee@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Homing_Bee@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Shotgun@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/Target_Practice_-_Shotgun@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/User_Mission_-_RCPlane_Challenge.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/User_Mission_-_RCPlane_Challenge.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/User_Mission_-_RCPlane_Challenge@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/User_Mission_-_RCPlane_Challenge@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/User_Mission_-_Rope_Knock_Challenge.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/User_Mission_-_Rope_Knock_Challenge.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/User_Mission_-_Rope_Knock_Challenge@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/User_Mission_-_Rope_Knock_Challenge@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/User_Mission_-_That_Sinking_Feeling.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/User_Mission_-_That_Sinking_Feeling.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Challenge/User_Mission_-_That_Sinking_Feeling@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Challenge/User_Mission_-_That_Sinking_Feeling@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Graphics/Missions/Scenario/CMakeLists.txt Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,5 @@ +file(GLOB MissionPics *@2x.png) + +install(FILES + ${MissionPics} + DESTINATION ${SHAREPATH}Data/Graphics/Missions/Scenario) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Bamboo_Thicket.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Bamboo_Thicket.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Bamboo_Thicket@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Bamboo_Thicket@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Dangerous_Ducklings.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Dangerous_Ducklings.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Dangerous_Ducklings@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Dangerous_Ducklings@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Diver.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Diver.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Diver@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Diver@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Newton_and_the_Hammock.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Newton_and_the_Hammock.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Newton_and_the_Hammock@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Newton_and_the_Hammock@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Nobody_Laugh.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Nobody_Laugh.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Nobody_Laugh@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Nobody_Laugh@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Spooky_Tree.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Spooky_Tree.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Spooky_Tree@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Spooky_Tree@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Teamwork.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Teamwork.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Teamwork@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_Teamwork@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_The_Great_Escape.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_The_Great_Escape.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_The_Great_Escape@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/User_Mission_-_The_Great_Escape@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Scenario/portal@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Scenario/portal@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/Basic_Training_-_Sniper_Rifle.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Basic_Training_-_Sniper_Rifle.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/Basic_Training_-_Sniper_Rifle@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Basic_Training_-_Sniper_Rifle@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/Challenge_-_Speed_Shoppa_-_Hedgelove@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Challenge_-_Speed_Shoppa_-_Hedgelove@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/Challenge_-_Speed_Shoppa_-_Ropes@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Challenge_-_Speed_Shoppa_-_Ropes@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/Challenge_-_Speed_Shoppa_-_ShoppaKing@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Challenge_-_Speed_Shoppa_-_ShoppaKing@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/ClimbHome.png Binary file share/hedgewars/Data/Graphics/Missions/Training/ClimbHome.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/ClimbHome@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/ClimbHome@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Bazooka_easy@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Bazooka_easy@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Bazooka_hard@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Bazooka_hard@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Cluster_Bomb@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Cluster_Bomb@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Grenade_easy@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Grenade_easy@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Grenade_hard@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Grenade_hard@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Homing_Bee@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Homing_Bee@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Shotgun@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/Target_Practice_-_Shotgun@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Bamboo_Thicket.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Bamboo_Thicket.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Bamboo_Thicket@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Bamboo_Thicket@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Dangerous_Ducklings.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Dangerous_Ducklings.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Dangerous_Ducklings@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Dangerous_Ducklings@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Diver.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Diver.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Diver@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Diver@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Newton_and_the_Hammock.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Newton_and_the_Hammock.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Newton_and_the_Hammock@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Newton_and_the_Hammock@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Nobody_Laugh.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Nobody_Laugh.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Nobody_Laugh@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Nobody_Laugh@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_RCPlane_Challenge.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_RCPlane_Challenge.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_RCPlane_Challenge@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_RCPlane_Challenge@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Rope_Knock_Challenge.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Rope_Knock_Challenge.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Rope_Knock_Challenge@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Rope_Knock_Challenge@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Spooky_Tree.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Spooky_Tree.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Spooky_Tree@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Spooky_Tree@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Teamwork.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Teamwork.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Teamwork@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_Teamwork@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_That_Sinking_Feeling.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_That_Sinking_Feeling.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_That_Sinking_Feeling@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_That_Sinking_Feeling@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_The_Great_Escape.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_The_Great_Escape.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_The_Great_Escape@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/User_Mission_-_The_Great_Escape@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Graphics/Missions/Training/portal@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/portal@2x.png has changed diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/CMakeLists.txt --- a/share/hedgewars/Data/Missions/CMakeLists.txt Sun Nov 20 04:21:24 2016 +0100 +++ b/share/hedgewars/Data/Missions/CMakeLists.txt Wed Apr 13 14:39:17 2016 +0200 @@ -1,2 +1,4 @@ add_subdirectory(Training) +add_subdirectory(Challenge) +add_subdirectory(Scenario) add_subdirectory(Campaign) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/Basic_Training_-_Sniper_Rifle.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/Basic_Training_-_Sniper_Rifle.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,363 @@ +-- Hedgewars SniperRifle Training +-- Scripting Example + +-- Lines such as this one are comments - they are ignored +-- by the game, no matter what kind of text is in there. +-- It's also possible to place a comment after some real +-- instruction as you see below. In short, everything +-- following "--" is ignored. + +--------------------------------------------------------------- +-- At first we implement the localization library using loadfile. +-- This allows us to localize strings without needing to think +-- about translations. +-- We can use the function loc(text) to localize a string. + +HedgewarsScriptLoad("/Scripts/Locale.lua") + +-- This variable will hold the number of destroyed targets. +local score = 0 +-- This variable will hold the number of shots from the sniper rifle +local shots = 0 +-- This variable represents the number of targets to destroy. +local score_goal = 31 +-- This variable controls how many milliseconds/ticks we'd +-- like to wait before we end the round once all targets +-- have been destroyed. +local end_timer = 1000 -- 1000 ms = 1 s +-- This variable is set to true if the game is lost (i.e. +-- time runs out). +local game_lost = false +-- This variable will point to the hog's gear +local player = nil +-- This variable will grab the time left at the end of the round +local time_goal = 0 + +local target = nil + +local last_hit_time = 0 + +local cinematic = false + +-- This is a custom function to make it easier to +-- spawn more targets with just one line of code +-- You may define as many custom functions as you +-- like. +function spawnTarget(x, y) + -- add a new target gear + target = AddGear(x, y, gtTarget, 0, 0, 0, 0) + -- have the camera move to the target so the player knows where it is + FollowGear(target) +end + +function blowUp(x, y) + if cinematic == false then + cinematic = true + SetCinematicMode(true) + end + -- adds some TNT + gear = AddGear(x, y, gtDynamite, 0, 0, 0, 0) +end + +function onNewTurn() + SetWeapon(amSniperRifle) +end + +-- This function is called before the game loads its +-- resources. +-- It's one of the predefined function names that will +-- be called by the game. They give you entry points +-- where you're able to call your own code using either +-- provided instructions or custom functions. +function onGameInit() + -- At first we have to overwrite/set some global variables + -- that define the map, the game has to load, as well as + -- other things such as the game rules to use, etc. + -- Things we don't modify here will use their default values. + + -- The base number for the random number generator + Seed = 0 + -- Game settings and rules + GameFlags = gfMultiWeapon + gfOneClanMode + gfArtillery + -- The time the player has to move each round (in ms) + TurnTime = 150000 + -- The frequency of crate drops + CaseFreq = 0 + -- The number of mines being placed + MinesNum = 0 + -- The number of explosives being placed + Explosives = 0 + -- The delay between each round + Delay = 0 + -- The map to be played + Map = "Ropes" + -- The theme to be used + Theme = "Golf" + + -- Create the player team + AddTeam(loc("Sniperz"), 14483456, "Simple", "Island", "Default") + -- And add a hog to it + player = AddHog(loc("Hunter"), 0, 1, "Sniper") + SetGearPosition(player, 602, 1465) +end + +-- This function is called when the round starts +-- it spawns the first target that has to be destroyed. +-- In addition it shows the scenario goal(s). +function onGameStart() + -- Disable graph in stats screen + SendHealthStatsOff() + -- Spawn the first target. + spawnTarget(860,1020) + + -- Show some nice mission goals. + -- Parameters are: caption, sub caption, description, + -- extra text, icon and time to show. + -- A negative icon parameter (-n) represents the n-th weapon icon + -- A positive icon paramter (n) represents the (n+1)-th mission icon + -- A timeframe of 0 is replaced with the default time to show. + ShowMission(loc("Sniper Training"), loc("Aiming Practice"), loc("Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."), -amSniperRifle, 0) +end + +-- This function is called every game tick. +-- Note that there are 1000 ticks within one second. +-- You shouldn't try to calculate too complicated +-- code here as this might slow down your game. +function onGameTick20() + if game_lost then + return + end + -- after a target is destroyed, show hog, then target + if (target ~= nil) and (TurnTimeLeft + 1300 < last_hit_time) then + -- move camera to the target + FollowGear(target) + elseif TurnTimeLeft + 300 < last_hit_time then + -- move camera to the hog + FollowGear(player) + end + -- If time's up, set the game to be lost. + -- We actually check the time to be "1 ms" as it + -- will be at "0 ms" right at the start of the game. + if TurnTimeLeft < 40 and TurnTimeLeft > 0 and score < score_goal and game_lost == false then + game_lost = true + -- ... and show a short message. + AddCaption(loc("Time's up!")) + ShowMission(loc("Sniper Training"), loc("Aiming Practice"), loc("Oh no! Time's up! Just try again."), -amSkip, 0) + -- and generate the stats and go to the stats screen + generateStats() + EndGame() + -- Just to be sure set the goal time to 1 ms + time_goal = 1 + end + -- If the goal is reached or we've lost ... + if score == score_goal or game_lost then + -- ... check to see if the time we'd like to + -- wait has passed and then ... + if end_timer == 0 then + -- ... end the game ... + generateStats() + EndGame() + else + -- ... or just lower the timer by 1. + -- Reset the time left to stop the timer + TurnTimeLeft = time_goal + end + end_timer = end_timer - 20 + end +end + +-- This function is called when the game is initialized +-- to request the available ammo and probabilities +function onAmmoStoreInit() + -- add an unlimited supply of shotgun ammo + SetAmmo(amSniperRifle, 9, 0, 0, 0) +end + +-- This function is called when a new gear is added. +-- We use it to count the number of shots, which we +-- in turn use to calculate the final score and stats +function onGearAdd(gear) + if GetGearType(gear) == gtSniperRifleShot then + shots = shots + 1 + end +end + +-- This function is called before a gear is destroyed. +-- We use it to count the number of targets destroyed. +function onGearDelete(gear) + local gt = GetGearType(gear) + + if gt == gtCase then + game_lost = true + return + end + + if (gt == gtDynamite) and cinematic then + cinematic = false + SetCinematicMode(false) + return + end + + if gt == gtTarget then + -- remember when the target was hit for adjusting the camera + last_hit_time = TurnTimeLeft + -- Add one point to our score/counter + score = score + 1 + -- If we haven't reached the goal ... + if score < score_goal then + -- ... spawn another target. + if score == 1 then + spawnTarget(1520,1350) + elseif score == 2 then + spawnTarget(1730,1040) + elseif score == 3 then + spawnTarget(2080,780) + elseif score == 4 then + AddCaption(loc("Good so far!") .. " " .. loc("Keep it up!")); + blowUp(1730,1226) + blowUp(1440,1595) + blowUp(1527,1575) + blowUp(1614,1595) + blowUp(1420,1675) + blowUp(1527,1675) + blowUp(1634,1675) + blowUp(1440,1755) + blowUp(1527,1775) + blowUp(1614,1755) + spawnTarget(1527,1667) + elseif score == 5 then + spawnTarget(1527,1667) + elseif score == 6 then + spawnTarget(2175,1300) + elseif score == 7 then + spawnTarget(2250,940) + elseif score == 8 then + spawnTarget(2665,1540) + elseif score == 9 then + spawnTarget(3040,1160) + elseif score == 10 then + spawnTarget(2930,1500) + elseif score == 11 then + AddCaption(loc("This one's tricky.")); + spawnTarget(700,720) + elseif score == 12 then + AddCaption(loc("Well done.")); + blowUp(914,1222) + blowUp(1050,1222) + blowUp(1160,1008) + blowUp(1160,1093) + blowUp(1160,1188) + blowUp(375,911) + blowUp(510,911) + blowUp(640,911) + blowUp(780,911) + blowUp(920,911) + blowUp(1060,913) + blowUp(1198,913) + spawnTarget(1200,730) + elseif score == 13 then + spawnTarget(1200,830) + elseif score == 14 then + spawnTarget(1430,450) + elseif score == 15 then + spawnTarget(796,240) + elseif score == 16 then + spawnTarget(300,10) + elseif score == 17 then + spawnTarget(2080,820) + elseif score == 18 then + AddCaption(loc("Demolition is fun!")); + blowUp(2110,920) + blowUp(2210,920) + blowUp(2200,305) + blowUp(2300,305) + blowUp(2300,400) + blowUp(2300,500) + blowUp(2300,600) + blowUp(2300,700) + blowUp(2300,800) + blowUp(2300,900) + blowUp(2401,305) + blowUp(2532,305) + blowUp(2663,305) + spawnTarget(2300,760) + elseif score == 19 then + spawnTarget(2300,760) + elseif score == 20 then + spawnTarget(2738,190) + elseif score == 21 then + spawnTarget(2590,-100) + elseif score == 22 then + AddCaption(loc("Will this ever end?")); + blowUp(2790,305) + blowUp(2930,305) + blowUp(3060,305) + blowUp(3190,305) + blowUp(3310,305) + blowUp(3393,613) + blowUp(2805,370) + blowUp(2805,500) + blowUp(2805,630) + blowUp(2805,760) + blowUp(2805,890) + blowUp(3258,370) + blowUp(3258,475) + blowUp(3264,575) + spawnTarget(3230,240) + elseif score == 23 then + spawnTarget(3230,290) + elseif score == 24 then + spawnTarget(3670,250) + elseif score == 25 then + spawnTarget(2620,-100) + elseif score == 26 then + spawnTarget(2870,300) + elseif score == 27 then + spawnTarget(3850,900) + elseif score == 28 then + spawnTarget(3780,300) + elseif score == 29 then + spawnTarget(3670,0) + elseif score == 30 then + AddCaption(loc("Last Target!")); + spawnTarget(3480,1200) + end + else + if not game_lost then + -- Otherwise show that the goal was accomplished + ShowMission(loc("Sniper Training"), loc("Aiming Practice"), loc("Congratulations! You've eliminated all targets|within the allowed time frame."), 0, 0) + -- Also let the hogs shout "victory!" + PlaySound(sndVictory) + -- Save the time left so we may keep it. + time_goal = TurnTimeLeft + end + end + end +end + +-- This function calculates the final score of the player and provides some texts and +-- data for the final stats screen +function generateStats() + local accuracy = (score/shots)*100 + local end_score_targets = (score * 200) + local end_score_overall + if not game_lost then + local end_score_time = math.ceil(time_goal/5) + local end_score_accuracy = math.ceil(accuracy * 100) + end_score_overall = end_score_time + end_score_targets + end_score_accuracy + + SendStat(siGameResult, loc("You have successfully finished the sniper rifle training!")) + SendStat(siCustomAchievement, string.format(loc("You have destroyed %d of %d targets (+%d points)."), score, score_goal, end_score_targets)) + SendStat(siCustomAchievement, string.format(loc("You have made %d shots."), shots)) + SendStat(siCustomAchievement, string.format(loc("Accuracy bonus: +%d points"), end_score_accuracy)) + SendStat(siCustomAchievement, string.format(loc("You had %.2fs remaining on the clock (+%d points)."), (time_goal/1000), end_score_time)) + else + SendStat(siGameResult, loc("You lose!")) + + SendStat(siCustomAchievement, string.format(loc("You have destroyed %d of %d targets (+%d points)."), score, score_goal, end_score_targets)) + SendStat(siCustomAchievement, string.format(loc("You have made %d shots."), shots)) + end_score_overall = end_score_targets + end + SendStat(siPlayerKills, tostring(end_score_overall), loc("Sniperz")) + SendStat(siPointType, loc("points")) +end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/CMakeLists.txt Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,5 @@ +file(GLOB Scripts *.lua) + +install(FILES + ${Scripts} + DESTINATION ${SHAREPATH}Data/Missions/Challenge) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/Challenge_-_Speed_Shoppa_-_Hedgelove.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/Challenge_-_Speed_Shoppa_-_Hedgelove.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,38 @@ +HedgewarsScriptLoad("/Scripts/SpeedShoppa.lua") + +local params = {} +params.missionTitle = loc("Shoppa Love") +params.teamName = loc("Team of Hearts") +params.hogName = loc("Heartful") +params.teamFlag = "cm_iluvu" +params.teamGrave = "heart" +params.hogHat = "pinksunhat" +params.crateType = "health" +params.faceLeft = true + +params.time = 45000 +params.map = "Hedgelove" +params.theme = "Nature" + +params.hog_x = 410 +params.hog_y = 934 +params.crates = { + { x = 183, y = 710 }, + { x = 202, y = 519 }, + { x = 336, y = 356 }, + { x = 658, y = 363 }, + { x = 1029, y = 39 }, + { x = 758, y = 879 }, + { x = 1324, y = 896 }, + { x = 1410, y = 390 }, + { x = 1746, y = 348 }, + { x = 1870, y = 538 }, + { x = 1884, y = 723 }, + { x = 1682, y = 970 }, +} +params.extra_onGameStart = function() + PlaceGirder(394, 1000, 0) + PlaceGirder(1696, 1000, 0) +end + +SpeedShoppaMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/Challenge_-_Speed_Shoppa_-_Ropes.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/Challenge_-_Speed_Shoppa_-_Ropes.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,43 @@ +HedgewarsScriptLoad("/Scripts/SpeedShoppa.lua") + +local params = {} +params.missionTitle = loc("Ropes and Crates") +params.teamName = loc("Shoppa Union") +params.hogName = loc("Hook") +params.teamFlag = "cm_shoppa" +params.hogHat = "NoHat" + +params.time = 115000 +params.map = "Ropes" +params.theme = "City" + +params.hog_x = 3754 +params.hog_y = 1742 +params.crates = { + { x = 3533, y = 1404 }, + { x = 3884, y = 1048 }, + { x = 3366, y = 664 }, + { x = 3162, y = 630 }, + { x = 2872, y = 402 }, + { x = 3812, y = 322 }, + { x = 3685, y = 34 }, + { x = 3324, y = 540 }, + { x = 2666, y = 224 }, + { x = 2380, y = 1002 }, + { x = 2224, y = 1008 }, + { x = 2226, y = 854 }, + { x = 3274, y = 1754 }, + { x = 3016, y = 1278 }, + { x = 2756, y = 1716 }, + { x = 2334, y = 1756 }, + { x = 1716, y = 1752 }, + { x = 1526, y = 1464 }, + { x = 356, y = 1734 }, + { x = 598, y = 1444 }, + { x = 1084, y = 1150 }, + { x = 358, y = 834 }, + { x = 936, y = 200 }, + { x = 1540, y = 514 }, +} + +SpeedShoppaMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/Challenge_-_Speed_Shoppa_-_ShoppaKing.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/Challenge_-_Speed_Shoppa_-_ShoppaKing.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,54 @@ +HedgewarsScriptLoad("/Scripts/SpeedShoppa.lua") + +local params = {} +params.missionTitle = loc("The Customer is King") +params.teamName = loc("Shoppa Union") +params.hogName = loc("King Customer") +params.teamFlag = "cm_shoppa" +params.teamGrave = "money" +params.hogHat = "crown" + +params.time = 160000 +params.map = "ShoppaKing" +params.theme = "Castle" + +params.hog_x = 543 +params.hog_y = 1167 +params.crates = { + { x = 170, y = 172 }, + { x = 216, y = 478 }, + { x = 616, y = 966 }, + { x = 291, y = 1898 }, + { x = 486, y = 1965 }, + { x = 852, y = 1289 }, + { x = 1224, y = 1625 }, + { x = 925, y = 584 }, + { x = 2013, y = 141 }, + { x = 2250, y = 351 }, + { x = 2250, y = 537 }, + { x = 2472, y = 513 }, + { x = 1974, y = 459 }, + { x = 1995, y = 1068 }, + { x = 2385, y = 1788 }, + { x = 1698, y = 1725 }, + { x = 2913, y = 1092 }, + { x = 3972, y = 1788 }, + { x = 3762, y = 1635 }, + { x = 2577, y = 1473 }, + { x = 3612, y = 1068 }, + { x = 3945, y = 687 }, + { x = 2883, y = 618 }, + { x = 3543, y = 471 }, + { x = 3636, y = 306 }, + { x = 3210, y = 321 }, + { x = 3426, y = 126 }, + { x = 3033, y = 1590 }, + { x = 3774, y = 1341 }, + { x = 1254, y = 297 }, + { x = 1300, y = 1022 }, + { x = 1410, y = 1292 }, + { x = 868, y = 1812 }, + { x = 3426, y = 954 }, +} + +SpeedShoppaMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/ClimbHome.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/ClimbHome.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,34 @@ +HedgewarsScriptLoad("/Scripts/Locale.lua") + +isSinglePlayer = true + +-- trying to allow random theme, but fixed theme objects... +-- Also skip some ugly themes, or ones where the sky is "meh" +--local themes = { "Art","Cake","City","EarthRise","Halloween","Olympics","Underwater","Bamboo","Castle","Compost","Eyes","Hell","Planes","Bath","Cave","CrazyMission","Freeway","Island","Sheep","Blox","Cheese","Deepspace","Fruit","Jungle","Snow","Brick","Christmas","Desert","Golf","Nature","Stage" } +local themes = {"Christmas","Hell","Bamboo","City","Island","Bath","Compost","Jungle","Desert","Nature","Olympics","Brick","EarthRise","Sheep","Cake","Freeway","Snow","Castle","Fruit","Stage","Cave","Golf","Cheese","Halloween"} +local totalHedgehogs = 0 +local HH = {} +local teams = {} +local dummyHog = nil + + +function onGameInit() + -- Ensure people get same map for same theme + Theme = themes[GetRandom(#themes)+1] + Seed = ClimbHome + TurnTime = 999999999 + EnableGameFlags(gfOneClanMode) + DisableGameFlags(gfBottomBorder+gfBorder) + CaseFreq = 0 + Explosives = 0 + MineDudPercent = 0 + Map = "ClimbHome" + AddTeam(loc("Lonely Hog"), 0xDD0000, "Simple", "Island", "Default") + player = AddHog(loc("Climber"), 0, 1, "NoHat") + if showWaterStats then + dummyHog = AddHog(" ", 0, 1, "NoHat") + HH[dummyHog] = nil + totalHedgehogs = totalHedgehogs - 1 + SendStat(siClanHealth, tostring(32640), " ") + end +end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Bazooka_easy.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Bazooka_easy.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,35 @@ +HedgewarsScriptLoad("/Scripts/TargetPractice.lua") + +local params = { + ammoType = amBazooka, + gearType = gtShell, + missionTitle = loc("Target Practice: Bazooka (easy)"), + wind = 50, + solidLand = true, + map = "Lonely_Island", + theme = "Island", + hog_x = 1439, + hog_y = 482, + hogName = loc("Zook"), + hogHat = "war_americanww2helmet", + teamName = loc("Team Zook"), + targets = { + { x = 1310, y = 756 }, + { x = 1281, y = 893 }, + { x = 1376, y = 670 }, + { x = 1725, y = 907 }, + { x = 1971, y = 914 }, + { x = 1098, y = 955 }, + { x = 1009, y = 877 }, + { x = 930, y = 711 }, + { x = 771, y = 744 }, + { x = 385, y = 405 }, + { x = 442, y = 780 }, + { x = 620, y = 639 }, + { x = 311, y = 239 }, + }, + time = 80000, + shootText = loc("You have launched %d bazookas."), +} + +TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Bazooka_hard.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Bazooka_hard.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,40 @@ +HedgewarsScriptLoad("/Scripts/TargetPractice.lua") + +local params = { + ammoType = amBazooka, + gearType = gtShell, + missionTitle = loc("Target Practice: Bazooka (hard)"), + wind = 20, + solidLand = true, + artillery = true, + map = "SB_Grassy", + theme = "Castle", + hog_x = 2112, + hog_y = 913, + hogName = loc("Zook"), + hogHat = "war_americanww2helmet", + teamName = loc("Team Zook"), + targets = { + { x = 2660, y = 936 }, + { x = 2857, y = 629 }, + { x = 3044, y = 851 }, + { x = 3200, y = 441 }, + { x = 2931, y = 440 }, + { x = 3264, y = 370 }, + { x = 1880, y = 684 }, + { x = 1392, y = 672 }, + { x = 1587, y = 656 }, + { x = 1300, y = 840 }, + { x = 952, y = 814 }, + { x = 862, y = 634 }, + { x = 748, y = 794 }, + { x = 639, y = 548 }, + { x = 1730, y = 549 }, + { x = 1466, y = 566 }, + { x = 3716, y = 954 }, + }, + time = 180000, + shootText = loc("You have launched %d bazookas."), +} + +TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Cluster_Bomb.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Cluster_Bomb.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,33 @@ +HedgewarsScriptLoad("/Scripts/TargetPractice.lua") + +local params = { + ammoType = amClusterBomb, + gearType = gtClusterBomb, + missionTitle = loc("Cluster Bomb Training"), + solidLand = false, + map = "Trash", + theme = "Golf", + hog_x = 756, + hog_y = 370, + hogName = loc("Private Nolak"), + hogHat = "war_desertgrenadier1", + teamName = loc("The Hogies"), + targets = { + { x = 628, y = 0 }, + { x = 891, y = 0 }, + { x = 1309, y = 0 }, + { x = 1128, y = 0 }, + { x = 410, y = 0 }, + { x = 1564, y = 0 }, + { x = 1248, y = 476 }, + { x = 169, y = 0 }, + { x = 1720, y = 0 }, + { x = 1441, y = 0 }, + { x = 599, y = 0 }, + { x = 1638, y = 0 }, + }, + time = 180000, + shootText = loc("You have thrown %d cluster bombs."), +} + +TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Grenade_easy.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Grenade_easy.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,30 @@ +HedgewarsScriptLoad("/Scripts/TargetPractice.lua") + +local params = { + ammoType = amGrenade, + gearType = gtGrenade, + missionTitle = loc("Target Practice: Grenade (easy)"), + solidLand = true, + artillery = true, + map = "SB_Crystal", + theme = "Cave", + hog_x = 2039, + hog_y = 684, + hogName = loc("Grenadier"), + hogHat = "war_desertgrenadier2", + teamName = loc("Grenade Group"), + targets = { + { x = 1834, y = 747 }, + { x = 2308, y = 729 }, + { x = 1659, y = 718 }, + { x = 1196, y = 704 }, + { x = 2650, y = 826 }, + { x = 1450, y = 705 }, + { x = 2774, y = 848 }, + { x = 2970, y = 704 }, + }, + time = 80000, + shootText = loc("You have thrown %d grenades."), +} + +TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Grenade_hard.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Grenade_hard.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,41 @@ +HedgewarsScriptLoad("/Scripts/TargetPractice.lua") + +local params = { + ammoType = amGrenade, + gearType = gtGrenade, + missionTitle = loc("Target Practice: Grenade (hard)"), + solidLand = true, + artillery = true, + map = "SB_Crystal", + theme = "Cave", + hog_x = 1456, + hog_y = 669, + hogName = loc("Grenadier"), + hogHat = "war_desertgrenadier2", + teamName = loc("Grenade Group"), + targets = { + { x = 1190, y = 694 }, + { x = 962, y = 680 }, + { x = 1090, y = 489 }, + { x = 1664, y = 666 }, + { x = 1584, y = 580 }, + { x = 2160, y = 738 }, + { x = 1836, y = 726 }, + { x = 618, y = 753 }, + { x = 837, y = 668 }, + { x = 2424, y = 405 }, + { x = 2310, y = 742 }, + { x = 294, y = 897 }, + { x = 472, y = 855 }, + { x = 2949, y = 724}, + { x = 3356, y = 926 }, + { x = 3734, y = 918 }, + { x = 170, y = 874 }, + + + }, + time = 180000, + shootText = loc("You have thrown %d grenades."), +} + +TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Homing_Bee.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Homing_Bee.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,35 @@ +HedgewarsScriptLoad("/Scripts/TargetPractice.lua") + +local params = { + ammoType = amBee, + gearType = gtBee, + missionTitle = loc("Target Practice: Homing Bee"), + solidLand = true, + map = "Hedgewars", + theme = "Nature", + hog_x = 1990, + hog_y = 514, + hogHat = "NoHat", + teamGrave = "bp2", + targets = { + { x = 1949, y = 273 }, + { x = 1734, y = 322 }, + { x = 1574, y = 340 }, + { x = 1642, y = 474 }, + { x = 2006, y = 356 }, + { x = 1104, y = 285 }, + { x = 565, y = 440 }, + { x = 732, y = 350 }, + { x = 2022, y = 396 }, + { x = 366, y = 360 }, + { x = 556, y = 300 }, + { x = 902, y = 306 }, + { x = 924, y = 411 }, + { x = 227, y = 510 }, + { x = 150, y = 300 }, + }, + time = 120000, + shootText = loc("You have launched %d homing bees."), +} + +TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Shotgun.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/Target_Practice_-_Shotgun.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,38 @@ +HedgewarsScriptLoad("/Scripts/TargetPractice.lua") + +local params = { + ammoType = amShotgun, + gearType = gtShotgunShot, + missionTitle = loc("Target Practice: Shotgun"), + solidLand = false, + map = "SB_Haunty", + theme = "Halloween", + hog_x = 320, + hog_y = 324, + hogHat = "NoHat", + hogGrave = "Bones", + targets = { + { x = 495, y = 501 }, + { x = 227, y = 530 }, + { x = 835, y = 934 }, + { x = 1075, y = 889 }, + { x = 887, y = 915 }, + { x = 1148, y = 750 }, + { x = 916, y = 915 }, + { x = 1211, y = 700 }, + { x = 443, y = 505 }, + { x = 822, y = 964 }, + { x = 1092, y = 819 }, + { x = 1301, y = 683 }, + { x = 1480, y = 661 }, + { x = 1492, y = 786 }, + { x = 1605, y = 562 }, + { x = 1545, y = 466 }, + { x = 1654, y = 392 }, + { x = 1580, y = 334 }, + { x = 1730, y = 222 }, + }, + time = 90000, +} + +TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/User_Mission_-_RCPlane_Challenge.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/User_Mission_-_RCPlane_Challenge.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,494 @@ +HedgewarsScriptLoad("/Scripts/Locale.lua") + +local player = nil +local RCGear = nil +local planesUsed = 0 +local planeTimer = 0 +local planeUhOh = false +local cratesLeft = 0 +local crateStreak = 0 +local longestCrateStreak = 0 +local commentTimer = 0 +local missiles = 0 +local totalMissiles = 0 +local missileScanTimer = 0 +local nextComment = sndNone + +function onGameInit() + + Seed = 1 + GameFlags = gfInfAttack + gfInvulnerable + gfOneClanMode + gfSolidLand + + TurnTime = 90 * 1000 + + Map = "Ropes" + Theme = "Eyes" + + CaseFreq = 0 + MinesNum = 0 + Explosives = 0 + + AddTeam(loc("Wannabe Flyboys"), 14483456, "Simple", "Island", "Default", "Hedgewars") + player = AddHog(loc("Ace"), 0, 80, "Gasmask") + SetGearPosition(player, 1380, 1500) + +end + + + +function onGameStart() + + SendHealthStatsOff() + + ShowMission ( + loc("RC PLANE TRAINING"), + loc("a Hedgewars challenge"), + + loc("Collect or destroy all the health crates.") .. "|" .. + loc("Compete to use as few planes as possible!") .. "|" .. + "", -amRCPlane, 4000 + ) + + PlaceGirder(2192, 508, 6) + PlaceGirder(2192, 670, 6) + PlaceGirder(2193, 792, 2) + PlaceGirder(2100, 825, 4) + PlaceGirder(2009, 899, 6) + PlaceGirder(2084, 992, 4) + PlaceGirder(2145, 1087, 6) + PlaceGirder(2199, 1235, 5) + PlaceGirder(2308, 1296, 0) + PlaceGirder(2424, 1234, 7) + PlaceGirder(2473, 1129, 2) + PlaceGirder(2437, 1046, 1) + PlaceGirder(2409, 927, 6) + PlaceGirder(2408, 763, 6) + PlaceGirder(2404, 540, 6) + PlaceGirder(2426, 423, 3) + PlaceGirder(2550, 400, 4) + PlaceGirder(2668, 425, 1) + PlaceGirder(2707, 541, 6) + PlaceGirder(2706, 703, 6) + PlaceGirder(2705, 867, 6) + PlaceGirder(2779, 962, 4) + PlaceGirder(2894, 924, 3) + PlaceGirder(2908, 802, 6) + PlaceGirder(2907, 639, 6) + PlaceGirder(3052, 566, 4) + PlaceGirder(2971, 394, 4) + PlaceGirder(3103, 448, 7) + PlaceGirder(3047, 654, 0) + PlaceGirder(3043, 746, 6) + PlaceGirder(3265, 1583, 6) + PlaceGirder(3256, 1491, 4) + PlaceGirder(3187, 1401, 6) + PlaceGirder(3326, 1400, 6) + PlaceGirder(774, 530, 5) + PlaceGirder(922, 595, 4) + PlaceGirder(1079, 533, 7) + PlaceGirder(1139, 386, 6) + PlaceGirder(1074, 237, 5) + PlaceGirder(723, 381, 6) + PlaceGirder(781, 229, 7) + PlaceGirder(927, 746, 6) + PlaceGirder(874, 736, 0) + PlaceGirder(982, 737, 0) + PlaceGirder(2430, 1730, 4) + + PlaceGirder(1613, 1104, 7) + PlaceGirder(1564, 1256, 6) + PlaceGirder(1643, 1341, 5) + PlaceGirder(1780, 1372, 4) + PlaceGirder(1869, 1296, 7) + PlaceGirder(1858, 1163, 5) + PlaceGirder(1739, 1044, 5) + PlaceGirder(1621, 926, 5) + PlaceGirder(1597, 985, 5) + PlaceGirder(1449, 939, 4) + PlaceGirder(1473, 874, 4) + PlaceGirder(2092, 1352, 7) + PlaceGirder(2145, 1444, 7) + PlaceGirder(2004, 1443, 3) + PlaceGirder(1978, 1523, 2) + PlaceGirder(2021, 1596, 1) + PlaceGirder(2103, 1625, 0) + PlaceGirder(2208, 1551, 7) + PlaceGirder(2327, 1431, 7) + PlaceGirder(2395, 1478, 6) + PlaceGirder(2396, 1600, 2) + PlaceGirder(2495, 1285, 6) + PlaceGirder(2494, 1408, 2) + PlaceGirder(2547, 530, 0) + + PlaceGirder(2451, 1551, 0) + PlaceGirder(2551, 706, 6) + PlaceGirder(2551, 869, 6) + PlaceGirder(2623, 1016, 5) + PlaceGirder(2773, 1083, 4) + PlaceGirder(2924, 1019, 7) + PlaceGirder(2568, 1491, 7) + PlaceGirder(2618, 1346, 6) + PlaceGirder(2674, 1195, 7) + PlaceGirder(2822, 1142, 4) + PlaceGirder(2963, 1069, 7) + PlaceGirder(3067, 938, 5) + PlaceGirder(2803, 1373, 2) + PlaceGirder(2811, 1559, 2) + + tempG = SpawnHealthCrate(930, 557) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(979, 692) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(876, 703) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2309, 1260) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1733, 1127) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1738, 1320) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3249, 1460) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3051, 617) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2972, 353) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2548, 358) + + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2090, 1580) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1752, 1753) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1865, 1758) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1985, 1760) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2429, 1760) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2810, 1480) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2800, 1277) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2806, 1107) + SetHealth(tempG, 25) + + PlaceGirder(1897, 903, 6) + PlaceGirder(1916, 784, 3) + PlaceGirder(2010, 732, 4) + PlaceGirder(2082, 639, 6) + PlaceGirder(2081, 516, 2) + PlaceGirder(1985, 487, 4) + PlaceGirder(1862, 407, 5) + PlaceGirder(1855, 224, 7) + PlaceGirder(2006, 163, 4) + PlaceGirder(2128, 187, 1) + PlaceGirder(2251, 213, 4) + PlaceGirder(2413, 213, 4) + PlaceGirder(1952, 618, 0) + PlaceGirder(957, 1068, 4) + PlaceGirder(794, 1069, 4) + PlaceGirder(728, 1163, 6) + PlaceGirder(728, 1287, 2) + PlaceGirder(802, 1342, 4) + PlaceGirder(966, 1342, 4) + PlaceGirder(674, 1032, 1) + PlaceGirder(554, 1011, 4) + PlaceGirder(445, 1056, 3) + PlaceGirder(422, 1174, 6) + PlaceGirder(369, 1341, 5) + PlaceGirder(495, 1313, 5) + PlaceGirder(568, 1379, 3) + PlaceGirder(577, 1202, 2) + PlaceGirder(744, 1490, 5) + PlaceGirder(760, 1617, 7) + PlaceGirder(622, 1693, 4) + PlaceGirder(476, 1623, 5) + PlaceGirder(376, 1697, 1) + PlaceGirder(955, 1746, 2) + PlaceGirder(1025, 1746, 2) + PlaceGirder(1090, 1745, 2) + PlaceGirder(1156, 1746, 2) + PlaceGirder(3806, 1530, 2) + PlaceGirder(3880, 1464, 2) + PlaceGirder(3738, 1458, 2) + PlaceGirder(3806, 1390, 2) + PlaceGirder(3805, 1588, 0) + PlaceGirder(3676, 1609, 3) + PlaceGirder(3930, 1615, 1) + PlaceGirder(3719, 1295, 0) + PlaceGirder(3888, 1294, 0) + PlaceGirder(3661, 1385, 2) + PlaceGirder(3955, 1377, 2) + PlaceGirder(3982, 1518, 0) + PlaceGirder(3378, 440, 2) + PlaceGirder(3447, 492, 4) + PlaceGirder(3564, 529, 1) + PlaceGirder(3596, 647, 6) + PlaceGirder(3521, 740, 4) + PlaceGirder(3524, 838, 4) + PlaceGirder(3644, 819, 3) + PlaceGirder(3691, 708, 6) + PlaceGirder(3690, 545, 6) + PlaceGirder(3612, 433, 5) + PlaceGirder(3463, 383, 4) + PlaceGirder(2815, 122, 7) + PlaceGirder(2960, 72, 4) + PlaceGirder(3032, 123, 2) + PlaceGirder(3063, 174, 0) + PlaceGirder(3095, 124, 2) + PlaceGirder(3169, 71, 4) + PlaceGirder(3320, 124, 5) + PlaceGirder(3210, 179, 2) + PlaceGirder(2932, 181, 2) + + tempG = SpawnHealthCrate(3804, 1461) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3269, 1742) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3066, 121) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3207, 104) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2928, 103) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1997, 202) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2253, 159) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2132, 774) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2549, 490) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3527, 694) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3777, 78) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1124, 1746) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1056, 1740) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(993, 1742) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(799, 1298) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(577, 1126) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(596, 1463) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3854, 1043) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1944, 567) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(338, 1748) + SetHealth(tempG, 25) + + +end + +--function onGameTick() + + --if RCGear ~= nil then + -- AddCaption(GetTimer(RCGear)) + --end + +--end + +function onGameTick20() + if RCGear ~= nil then + if(GetTimer(RCGear) < 3000 and planeUhOh == false) then + PlaySound(sndUhOh, player) + planeUhOh = true + end + planeTimer = planeTimer + 20 + end + if commentTimer > 0 then + commentTimer = commentTimer - 20 + elseif(nextComment ~= sndNone) then + PlaySound(nextComment, player) + nextComment = sndNone + end + if missileScanTimer > 0 then + missileScanTimer = missileScanTimer - 20 + else + if crateStreak == 0 and missiles == 3 then + PlaySound(sndMissed, player) + missiles = 4 + end + end +end + +function onNewTurn() + TurnTimeLeft = -1 +end + +function onGearAdd(gear) + + if GetGearType(gear) == gtRCPlane then + RCGear = gear + planesUsed = planesUsed + 1 + planeTimer = 0 + missiles = 0 + end + + if GetGearType(gear) == gtCase then + cratesLeft = cratesLeft + 1 + end + + if GetGearType(gear) == gtAirBomb then + totalMissiles = totalMissiles + 1 + end +end + +function onGearDelete(gear) + + if GetGearType(gear) == gtRCPlane then + + RCGear = nil + planeUhOh = false + missiles = 0 + AddCaption(string.format(loc("Planes used: %d"), planesUsed)) + + if(planeTimer < 2000 and crateStreak == 0) then + nextComment = sndStupid + commentTimer = math.min(2000-planeTimer, 800) + elseif(planeTimer < 5000 and crateStreak == 0) then + PlaySound(sndOops, player) + elseif(planesUsed == 72) then + PlaySound(sndStupid, player) + elseif(planesUsed == 50) then + PlaySound(sndNutter, player) + elseif(planesUsed == 30) then + PlaySound(sndOops, player) + end + + crateStreak = 0 + + elseif GetGearType(gear) == gtAirBomb then + missiles = missiles + 1 + missileScanTimer = 500 + + elseif GetGearType(gear) == gtCase then + + cratesLeft = cratesLeft - 1 + crateStreak = crateStreak + 1 + if(crateStreak > longestCrateStreak) then + longestCrateStreak = crateStreak + end + + AddCaption(string.format(loc("Crates left: %d"), cratesLeft)) + + if cratesLeft == 0 then + + local rank = "unknown" + local color = 0xFFFFFFFF + local sound = sndVictory + if planesUsed >= 156 then + rank = loc("Destroyer of planes") + color = 0xD06700FF + sound = sndLaugh + elseif planesUsed >= 98 then + rank = loc("Hopeless case") + color = 0xFF0000FF + elseif planesUsed >= 72 then + rank = loc("Drunk greenhorn") + color = 0xFF0040FF + elseif planesUsed >= 50 then + rank = loc("Greenhorn") -- a.k.a. "absolute beginner" + color = 0xFF0080FF + elseif planesUsed >= 39 then + rank = loc("Beginner") + color = 0xFF00BFFF + elseif planesUsed >= 30 then + rank = loc("Experienced beginner") + color = 0xFF00CCFF + elseif planesUsed >= 21 then + rank = loc("Below-average pilot") + color = 0xFF00FFFF + elseif planesUsed >= 17 then + rank = loc("Average pilot") + color = 0xBF00FFFF + elseif planesUsed >= 13 then + rank = loc("Above-average pilot") + color = 0x8000FFFF + elseif planesUsed >= 8 then + rank = loc("Professional pilot") + color = 0x4000FFFF + elseif planesUsed >= 5 then + rank = loc("Professional stunt pilot") + color = 0x0000FFFF + elseif planesUsed >= 3 then + rank = loc("Elite pilot") + color = 0x0040FFFF + elseif planesUsed == 2 then + rank = loc("Upper-class elite pilot") + color = 0x0080FFFF + elseif planesUsed == 1 then + rank = loc("Top-class elite pilot") + color = 0x00FFFFFF + sound = sndFlawless + else + rank = loc("Cheater") + color = 0xFF0000FF + sound = sndCoward + end + AddCaption(string.format(loc("Rank: %s"), rank), color, capgrpMessage2) + SendStat(siCustomAchievement, string.format(loc("Your rank: %s"), rank)) + if planesUsed == 1 then + AddCaption(loc("Flawless victory!")) + SendStat(siGameResult, loc("You have perfectly beaten the challenge!")) + SendStat(siCustomAchievement, loc("You have used only 1 RC plane. Outstanding!")) + else + AddCaption(loc("Victory!")) + SendStat(siGameResult, loc("You have finished the challenge!")) + SendStat(siCustomAchievement, string.format(loc("You have used %d RC planes."), planesUsed)) + end + + if(totalMissiles > 1) then + SendStat(siCustomAchievement, string.format(loc("You have dropped %d missiles."), totalMissiles)) + end + + if(longestCrateStreak > 5) then + if(planesUsed == 1) then + SendStat(siCustomAchievement, string.format(loc("In your best (and only) flight you took out %d crates with one RC plane!"), longestCrateStreak)) + else + SendStat(siCustomAchievement, string.format(loc("In your best flight you took out %d crates with one RC plane."), longestCrateStreak)) + end + end + + if(planesUsed == 2) then + SendStat(siCustomAchievement, loc("This was an awesome performance! But this challenge can be finished with even just one RC plane. Can you figure out how?")) + end + if(planesUsed == 1) then + SendStat(siCustomAchievement, loc("Congratulations! You have truly mastered this challenge! Don't forget to save the demo.")) + SendStat(siCustomAchievement, string.format(loc("You have gained an achievement: %s"), loc("Prestigious Pilot"))) + end + + ShowMission ( + loc("CHALLENGE COMPLETE"), + loc("Congratulations!"), + string.format(loc("Planes used: %d"), planesUsed) .. "|" .. + "", 0, 0 + ) + SetState(player, gstWinner) + PlaySound(sound, player) + + + DismissTeam(loc("Wannabe Flyboys")) + EndGame() + end + + if RCGear ~= nil then + SetTimer(RCGear, GetTimer(RCGear) + 10000) + end + end + +end + +function onAmmoStoreInit() + SetAmmo(amRCPlane, 9, 0, 0, 0) +end + +function onNewTurn() + SetWeapon(amRCPlane) +end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/User_Mission_-_Rope_Knock_Challenge.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/User_Mission_-_Rope_Knock_Challenge.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,273 @@ +HedgewarsScriptLoad("/Scripts/Locale.lua") + +local hhs = {} +local missionWon = nil +local endTimer = 1000 +local hogsKilled = 0 +local finishTime + +local HogData = { + {"Bufon", "ShaggyYeti",false}, + {"burp", "lambda",false}, + {"Blue", "cap_blue",false}, + {"bender", "NoHat",false}, + {"Castell", "NoHat",false}, + {"cekoto", "NoHat",false}, + {"CheezeMonkey", "NoHat",false}, + {"claymore", "NoHat",false}, + {"CIA-144", "cyborg1",false}, + {"doomy ", "NoHat",false}, + {"Falkenauge", "NoHat",false}, + {"FadeOne", "NoHat",false}, + {"hayaa", "NoHat",false}, + {"Hermes", "laurel",false}, + {"HedgeKing", "NoHat",false}, + {"Izack1535", "NoHat",false}, + {"Kiofspa", "NoHat",false}, + {"Komplex", "NoHat",false}, + {"koda", "poke_mudkip",false}, + {"Lalo", "NoHat",false}, + {"Logan", "NoHat",false}, + {"lollkiller", "NoHat",false}, + {"Luelle", "NoHat",false}, + {"mikade", "Skull",false}, + {"Mushi", "sm_daisy",false}, + {"Naboo", "NoHat",false}, + {"nemo", "bb_bub",false}, + {"practice", "NoHat",false}, + {"Prof. Panic", "NoHat",false}, + {"Randy", "zoo_Sheep",false}, + {"rhino", "NinjaTriangle",false}, + {"Radissthor", "NoHat",false}, + {"Sami", "sm_peach",false}, + {"soreau", "NoHat",false}, + {"sdw195", "NoHat",false}, + {"sphrix", "TeamTopHat",false}, + {"sheepluva", "zoo_Sheep",false}, + {"Smaxx", "NoHat",false}, + {"shadowzero", "NoHat",false}, + {"Star and Moon", "SparkleSuperFun",false}, + {"The 24", "NoHat",false}, + {"TLD", "NoHat",false}, + {"Tiyuri", "sf_ryu",false}, + {"unC0Rr", "cyborg1",false}, + {"Waldsau", "cyborg1",false}, + {"wolfmarc", "knight",false}, + {"Xeli", "android",false} + + } + +function GenericEnd() + EndGame() +end + +function GameOverMan() + missionWon = false + ShowMission(loc("Rope-knocking Challenge"), loc("Challenge over!"), loc("Oh no! Just try again!"), -amSkip, 0) + SendStat(siGameResult, loc("Challenge over!")) + local score = math.ceil((hogsKilled / 16)*6000) + SendStat(siCustomAchievement, string.format(loc("You have killed %d of 16 hedgehogs (+%d points)."), hogsKilled, score)) + SendStat(siPointType, "points") + SendStat(siPlayerKills, tostring(score), loc("Wannabe Shoppsta")) + PlaySound(sndHellish) +end + +function GG() + missionWon = true + local completeTime = (TurnTime - finishTime) / 1000 + ShowMission(loc("Rope-knocking Challenge"), loc("Challenge completed!"), loc("Congratulations!") .. "|" .. string.format(loc("Completion time: %.2fs"), completeTime), 0, 0) + PlaySound(sndHomerun) + SendStat(siGameResult, loc("Challenge completed!")) + local hogScore = math.ceil((hogsKilled / 16)*6000) + local timeScore = math.ceil((finishTime/TurnTime)*6000) + local score = hogScore + timeScore + SendStat(siCustomAchievement, string.format(loc("You have killed %d of 16 hedgehogs (+%d points)."), hogsKilled, hogScore)) + SendStat(siCustomAchievement, string.format(loc("You have completed this challenge in %.2f s (+%d points)."), completeTime, timeScore)) + SendStat(siPointType, "points") + SendStat(siPlayerKills, tostring(score), loc("Wannabe Shoppsta")) +end + +function AssignCharacter(p) + + done = false + sanityCheck = 0 + + while(done == false) do + + i = 1+ GetRandom(#HogData) + if HogData[i][3] == false then + HogData[i][3] = true + done = true + SetHogName(hhs[p], HogData[i][1]) + SetHogHat(hhs[p], HogData[i][2]) + elseif HogData[i][3] == true then + sanityCheck = sanityCheck +1 + if sanityCheck == 100 then + done = true + SetHogName(hhs[p], "Newbie") + SetHogHat(hhs[p], "NoHat") + end + end + + end + +end + +function onGameInit() + + --Seed = 1 + GameFlags = gfBorder + gfSolidLand + + TurnTime = 180 * 1000 + Delay = 500 + Map = "Ropes" + Theme = "Eyes" + + CaseFreq = 0 + MinesNum = 0 + Explosives = 0 + + AddTeam(loc("Wannabe Shoppsta"), 0x11F12B, "Simple", "Island", "Default", "cm_shoppa") + hhs[0] = AddHog(loc("Ace"), 0, 1, "Gasmask") + SetGearPosition(player, 1380, 1500) + + AddTeam(loc("Unsuspecting Louts"), 0xDD0000, "Simple", "Island", "Default", "cm_face") + for i = 1, 8 do + hhs[i] = AddHog("generic", 0, 1, "NoHat") + end + + AddTeam(loc("Unlucky Sods"), 0xDD0000, "Simple", "Island", "Default", "cm_balrog") + for i = 9, 16 do + hhs[i] = AddHog("generic", 0, 1, "NoHat") + end + +end + + + +function onGameStart() + SendHealthStatsOff() + + ShowMission ( + loc("Rope-knocking Challenge"), + loc("Challenge"), + loc("Use the rope to knock your enemies to their doom.") .. "|" .. + loc("Finish this challenge as fast as possible to earn bonus points."), + -amRope, 4000) + + PlaceGirder(46,1783, 0) + + SetGearPosition(hhs[0], 2419, 1769) + SetGearPosition(hhs[1], 3350, 570) + SetGearPosition(hhs[2], 3039, 1300) + SetGearPosition(hhs[3], 2909, 430) + SetGearPosition(hhs[4], 2150, 879) + SetGearPosition(hhs[5], 1735, 1136) + SetGearPosition(hhs[6], 1563, 553) + SetGearPosition(hhs[7], 679, 859) + SetGearPosition(hhs[8], 1034, 251) + SetGearPosition(hhs[9], 255, 67) + SetGearPosition(hhs[10], 2671, 7) + SetGearPosition(hhs[11], 2929, 244) + SetGearPosition(hhs[12], 1946, 221) + SetGearPosition(hhs[13], 3849, 1067) + SetGearPosition(hhs[14], 3360, 659) + SetGearPosition(hhs[15], 3885, 285) + SetGearPosition(hhs[16], 935, 1160) + + for i = 1, 16 do + AssignCharacter(i) + end + +end + +function onGameTick() + + if (TurnTimeLeft == 1) and (missionWon == nil) then + GameOverMan() + end + + if missionWon ~= nil then + + endTimer = endTimer - 1 + if endTimer == 1 then + GenericEnd() + end + + if missionWon == true then + AddCaption(loc("Victory!"), 0xFFFFFFFF,capgrpGameState) + else + AddCaption(loc("Challenge over!"), 0xFFFFFFFF,capgrpGameState) + end + + end + +end + +function onGearDamage(gear, damage) + + if gear ~= hhs[0] and GetGearType(gear) == gtHedgehog then + + AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false) + DeleteGear(gear) + PlaySound(sndExplosion) + AddCaption(string.format(knockTaunt(), GetHogName(gear)), 0xFFFFFFFF, capgrpMessage) + + hogsKilled = hogsKilled +1 + if hogsKilled == 15 then + PlaySound(sndRideOfTheValkyries) + elseif hogsKilled == 16 then + finishTime = TurnTimeLeft + GG() + end + + end + +end + +function knockTaunt() + local r = math.random(0,23) + local taunt + if r == 0 then taunt = loc("%s has been knocked out.") + elseif r == 1 then taunt = loc("%s hit the ground.") + elseif r == 2 then taunt = loc("%s splatted.") + elseif r == 3 then taunt = loc("%s was smashed.") + elseif r == 4 then taunt = loc("%s felt unstable.") + elseif r == 5 then taunt = loc("%s exploded.") + elseif r == 6 then taunt = loc("%s fell from a high cliff.") + elseif r == 7 then taunt = loc("%s goes the way of the lemming.") + elseif r == 8 then taunt = loc("%s was knocked away.") + elseif r == 9 then taunt = loc("%s was really unlucky.") + elseif r == 10 then taunt = loc("%s felt victim to rope-knocking.") + elseif r == 11 then taunt = loc("%s had no chance.") + elseif r == 12 then taunt = loc("%s was a good target.") + elseif r == 13 then taunt = loc("%s spawned at a really bad position.") + elseif r == 14 then taunt = loc("%s was doomed from the beginning.") + elseif r == 15 then taunt = loc("%s has fallen victim to gravity.") + elseif r == 16 then taunt = loc("%s hates Newton.") -- Isaac Newton + elseif r == 17 then taunt = loc("%s had it coming.") + elseif r == 18 then taunt = loc("%s is eliminated!") + elseif r == 19 then taunt = loc("%s fell too fast.") + elseif r == 20 then taunt = loc("%s flew like a rock.") + elseif r == 21 then taunt = loc("%s stumpled.") + elseif r == 22 then taunt = loc("%s was shoved away.") + elseif r == 23 then taunt = loc("%s didn't expect that.") + end + return taunt +end + +function onGearDelete(gear) + + if (gear == hhs[0]) and (missionWon == nil) then + GameOverMan() + end + +end + +function onAmmoStoreInit() + SetAmmo(amRope, 9, 0, 0, 0) +end + +function onNewTurn() + SetWeapon(amRope) +end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/User_Mission_-_That_Sinking_Feeling.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Challenge/User_Mission_-_That_Sinking_Feeling.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,301 @@ + + +HedgewarsScriptLoad("/Scripts/Locale.lua") + +local player +local hh = {} +local hhCount = 8 +local GameOver = false +local introStage = 0 +local genCounter = 0 +local waterCounter = 0 +local waterPix = 0 +local frig = 0 +local watGear = nil +local cinematic = false + +-- allow skipping of the intro via hitting precise key +function onPrecise() + if introStage < 100 then + introStage = 110 + genCounter = 0 + FollowGear(CurrentHedgehog) + AddCaption(loc("Good luck out there!")) + ShowMission(loc("That Sinking Feeling"), loc("Challenge"), loc("Save as many hapless hogs as possible!"), 4, 0) + SetInputMask(0xFFFFFFFF) + end +end + +function onGameInit() + + Seed = 0 + GameFlags = gfInfAttack + gfInvulnerable + gfOneClanMode + TurnTime = 90000 + CaseFreq = 0 + MinesNum = 0 + MinesTime = 3000 + Explosives = 0 + Delay = 10 + Map = "Islands" + Theme = "City" + SuddenDeathTurns = 1 + + AddTeam(loc("Hapless Hogs"), 14483456, "Simple", "Island", "Default") + hh[0] = AddHog(loc("Sinky"), 1, 100, "fr_lemon") + hh[1] = AddHog(loc("Drowner"), 1, 100, "fr_orange") + hh[2] = AddHog(loc("Heavy"), 1, 100, "dish_Teapot") + hh[3] = AddHog(loc("Clumsy"), 1, 100, "dish_SauceBoatSilver") + hh[4] = AddHog(loc("Silly"), 1, 100, "dish_Ladle") + hh[5] = AddHog(loc("Careless"), 1, 100, "StrawHatEyes") + hh[6] = AddHog(loc("Sponge"), 1, 100, "sf_chunli") + hh[7] = AddHog(loc("Deadweight"), 1, 100, "dish_Teacup") + + AddTeam(loc("Nameless Heroes"), 14483456, "Simple", "Island", "Default", "cm_crossedswords") + player = AddHog(loc("The Nameless One"), 0, 1, "NoHat") + + SetGearPosition(player, 3992, 733) + SetGearPosition(hh[0], 938, 1369) + SetGearPosition(hh[1], 1301, 1439) + SetGearPosition(hh[2], 2093, 447) + SetGearPosition(hh[3], 2971, 926) + SetGearPosition(hh[4], 719, 545) + SetGearPosition(hh[5], 1630, 821) + SetGearPosition(hh[6], 2191, 810) + SetGearPosition(hh[7], 3799, 945) + + -- Disable all input except [Precise] for the intro + SetInputMask(gmPrecise) +end + + +function onGameStart() + cinematic = true + SetCinematicMode(true) + SendHealthStatsOff() + + ShowMission(loc("That Sinking Feeling"), loc("Challenge"), loc("Save as many hapless hogs as possible!"), 4, 1) + + HogTurnLeft(hh[0], false) + HogTurnLeft(hh[1], true) + + SpawnUtilityCrate(148,265,amLowGravity) + SpawnUtilityCrate(2124,1516,amJetpack) + +end + + +function onNewTurn() + TurnTimeLeft = -1 +end + +function onGameTick() + + -- intro sequence + if introStage < 100 then + + frig = frig + 1 + if frig == 50 then + frig = 0 + AddCaption(loc("Press [Precise] to skip intro")) + if watGear ~= nil then + FollowGear(watGear) + end + end + + + --AddCaption(loc("Press [Precise] to skip intro")) + genCounter = genCounter + 1 + + if introStage == 0 then + + + --FollowGear(hh[0]) + + if genCounter == 2000 then + watGear = hh[0] + HogSay(hh[0], loc("This rain is really something..."), SAY_SAY,2) + elseif genCounter == 5000 then + introStage = 1 + genCounter = 0 + end + + elseif introStage == 1 then + + --FollowGear(hh[1]) + + if genCounter == 2000 then + watGear = hh[1] + HogSay(hh[1], loc("Heh, it's not that bad."), SAY_SAY,2) + elseif genCounter == 5000 then + introStage = 2 + genCounter = 0 + end + + elseif introStage == 2 then + + --FollowGear(hh[0]) + + if genCounter == 2000 then + watGear = hh[0] + HogSay(hh[0], loc("You'd almost swear the water was rising!"), SAY_SHOUT,2) + elseif genCounter == 6000 then + introStage = 3 + genCounter = 0 + end + + elseif introStage == 3 then + + --FollowGear(hh[1]) + + if genCounter == 2000 then + watGear = hh[1] + HogSay(hh[1], loc("Haha, now THAT would be something!"), SAY_SAY,2) + elseif genCounter == 6000 then + introStage = 4 + genCounter = 0 + end + + elseif introStage == 4 then + + --FollowGear(hh[0]) + + if genCounter == 2000 then + watGear = hh[0] + HogSay(hh[0], loc("Hahahaha!"), SAY_SHOUT,2) + HogSay(hh[1], loc("Hahahaha!"), SAY_SHOUT,2) + elseif genCounter == 3000 then + introStage = 5 + genCounter = 0 + end + + elseif introStage == 5 then + + --FollowGear(hh[1]) + + if genCounter == 2000 then + watGear = hh[1] + HogSay(hh[0], loc("..."), SAY_THINK,2) + HogSay(hh[1], loc("..."), SAY_THINK,2) + elseif genCounter == 5000 then + introStage = 6 + genCounter = 0 + end + + elseif introStage == 6 then + + --FollowGear(hh[0]) + + if genCounter == 2000 then + watGear = hh[0] + HogSay(hh[0], loc("It's a good thing SUDDEN DEATH is 99 turns away..."), SAY_THINK,2) + elseif genCounter == 6000 then + introStage = 7 + genCounter = 0 + end + + + elseif introStage == 7 then + + if genCounter == 2000 then + introStage = 110 + FollowGear(CurrentHedgehog) + ShowMission(loc("That Sinking Feeling"), loc("User Challenge"), loc("Save as many hapless hogs as possible!"), 4, 0) + SetInputMask(0xFFFFFFFF) + end + + end + + end + + -- start the water rising when the intro is finished + if introStage == 110 then + + if cinematic then + SetCinematicMode(false) + cinematic = false + end + + waterCounter = waterCounter + 1 + if (waterCounter == 100) and (waterPix < 1615) then + waterCounter = 0 + SetTag(AddGear(0, 0, gtWaterUp, 0, 0, 0, 0), 1) + waterPix = waterPix +1 + --AddCaption(waterPix) + + if (waterPix >= 1615) and (GameOver == false) then + GameOver = true + AddCaption(loc("The flood has stopped! Challenge over.")) + SendStat(siGameResult, loc("Challenge completed!")) + SendStat(siPlayerKills, tostring(hhCount), loc("Nameless Heroes")) + SendStat(siPointType, loc("rescues")) + + -- Do not count drowning hedgehogs + local hhLeft = hhCount + for i=1,#hh do + local isDrowning = band(GetState(hh[i]),gstDrowning) ~= 0 + if isDrowning then + hhLeft = hhLeft - 1 + end + end + + SendStat(siCustomAchievement, string.format(loc("You saved %d of 8 Hapless Hogs."), hhLeft)) + + if hhLeft == 8 then + AddCaption(loc("Achievement obtained: Lively Lifeguard"),0xffba00ff,capgrpMessage2) + SendStat(siCustomAchievement, loc("You have obtained an achievement: Lively Lifeguard")) + end + EndGame() + + end + + end + + end +end + + +function onAmmoStoreInit() + + SetAmmo(amBazooka, 9, 0, 0, 0) + + SetAmmo(amRope, 9, 0, 0, 0) + SetAmmo(amParachute, 9, 0, 0, 0) + SetAmmo(amJetpack, 2, 0, 0, 2) + + SetAmmo(amGirder, 9, 0, 0, 0) + SetAmmo(amBaseballBat, 9, 0, 0, 0) + + SetAmmo(amTeleport, 1, 0, 0, 1) + SetAmmo(amPortalGun, 3, 0, 0, 1) + + SetAmmo(amLowGravity, 0, 0, 0, 1) + +end + +function onGearDelete(gear) + + if GetGearType(gear) == gtHedgehog then + if GetHogTeamName(gear) == loc("Hapless Hogs") then + hhCount = hhCount - 1 + AddCaption(string.format(loc("%d Hapless Hogs left"), hhCount)) + end + end + + if ((gear == player) or (hhCount == 0)) and (GameOver == false) then + SetHealth(player, 0) + AddCaption(loc("Disqualified!")) + if gear == player then + SendStat(siCustomAchievement, loc("Your hedgehog died!")) + SendStat(siCustomAchievement, loc("You must survive the flood in order to score.")) + else + SendStat(siCustomAchievement, loc("You haven't rescued anyone.")) + end + SendStat(siPlayerKills, "0", loc("Nameless Heroes")) + SendStat(siPointType, loc("points")) + + SendStat(siGameResult, loc("Disqualified!")) + GameOver = true + EndGame() + end + +end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Scenario/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Scenario/CMakeLists.txt Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,5 @@ +file(GLOB Scripts *.lua) + +install(FILES + ${Scripts} + DESTINATION ${SHAREPATH}Data/Missions/Scenario) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Scenario/User_Mission_-_Bamboo_Thicket.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Bamboo_Thicket.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,88 @@ + +HedgewarsScriptLoad("/Scripts/Locale.lua") + +local player = nil +local enemy = nil +local firedShell = false +local turnNumber = 0 + +local hhs = {} +local numhhs = 0 + +function onGameInit() + + Seed = 0 + TurnTime = 20000 + CaseFreq = 0 + MinesNum = 0 + Explosives = 0 + Map = "Bamboo" + Theme = "Bamboo" + SuddenDeathTurns = 99999 + + AddTeam(loc("Pathetic Resistance"), 14483456, "Simple", "Island", "Default") + player = AddHog(loc("Ikeda"), 0, 10, "StrawHat") + + AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Default") + enemy = AddHog(loc("Unit 835"), 1, 10, "cyborg1") + + SetGearPosition(player,142,656) + SetGearPosition(enemy,1824,419) + +end + + +function onGameStart() + + ShowMission(loc("Bamboo Thicket"), loc("User Challenge"), loc("Eliminate the enemy before the time runs out"), -amBazooka, 0) + + --WEAPON CRATE LIST. WCRATES: 1 + SpawnAmmoCrate(891,852,amBazooka) + --UTILITY CRATE LIST. UCRATES: 2 + SpawnUtilityCrate(962,117,amBlowTorch) + SpawnUtilityCrate(403,503,amParachute) + + AddAmmo(enemy, amGrenade, 100) + +end + +function onNewTurn() + SetWind(100) + turnNumber = turnNumber + 1 +end + +function onAmmoStoreInit() + SetAmmo(amSkip, 9, 0, 0, 0) + SetAmmo(amGirder, 4, 0, 0, 0) + SetAmmo(amBlowTorch, 0, 0, 0, 1) + SetAmmo(amParachute, 0, 0, 0, 2) + SetAmmo(amBazooka, 0, 0, 0, 2) +end + + +function onGearAdd(gear) + + if GetGearType(gear) == gtHedgehog then + hhs[numhhs] = gear + numhhs = numhhs + 1 + elseif GetGearType(gear) == gtShell then + firedShell = true + end + +end + +function onGearDelete(gear) + + if (gear == enemy) then + + ShowMission(loc("Bamboo Thicket"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) + + if (turnNumber < 6) and (firedShell == false) then + AddCaption(loc("Achievement Unlocked") .. ": " .. loc("Energetic Engineer"),0xffba00ff,capgrpMessage2) + end + + elseif gear == player then + ShowMission(loc("Bamboo Thicket"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) + end + +end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Scenario/User_Mission_-_Dangerous_Ducklings.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Dangerous_Ducklings.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,148 @@ + +HedgewarsScriptLoad("/Scripts/Locale.lua") + +local player = nil -- This variable will point to the hog's gear +local instructor = nil +local enemy = nil + +local speechStage = 0 + +local gameLost = false +local gameWon = false +local notListening = false + +local endTimer = 0 + +function onGameInit() + + -- Things we don't modify here will use their default values. + + Seed = 0 -- The base number for the random number generator + GameFlags = gfInfAttack -- Game settings and rules + TurnTime = 60000 -- The time the player has to move each round (in ms) + CaseFreq = 0 -- The frequency of crate drops + MinesNum = 0 -- The number of mines being placed + Explosives = 0 -- The number of explosives being placed + Delay = 0 -- The delay between each round + Map = "Bath" -- The map to be played + Theme = "Bath" -- The theme to be used + SuddenDeathTurns = 99999 + + + AddTeam(loc("Bloody Rookies"), 14483456, "Simple", "Island", "Default") + player = AddHog(loc("Hunter"), 0, 1, "NoHat") + instructor = AddHog(loc("Instructor"), 0, 100, "sf_vega") + + AddTeam(loc("Blue Team"), 29439, "Simple", "Island", "Default") + enemy = AddHog(loc("Filthy Blue"), 1, 100, "Skull") + + SetGearPosition(player,146,902) + SetGearPosition(instructor,317,902) + SetGearPosition(enemy,1918,837) + + HogSay(player, ".............................", SAY_THINK) + HogTurnLeft(instructor, true) + +end + + +function onGameStart() + + SpawnAmmoCrate(475,476,amRope) + SpawnAmmoCrate(1729,476,amFirePunch) + + FollowGear(player) + + ShowMission(loc("Dangerous Ducklings"), "", loc("Eliminate the Blue Team"), -amRope, 5000); + +end + + +function onGameTick() + + + -- opening speech + if (notListening == false) and (gameLost == false) then + + if (TurnTimeLeft == 58000) and (speechStage == 0) then + HogSay(instructor, loc("Listen up, maggot!!"), SAY_SHOUT) + speechStage = 1 + elseif (TurnTimeLeft == 57000) and (speechStage == 1) then + HogSay(player,loc("!!!"),SAY_SHOUT) + elseif (TurnTimeLeft == 55000) and (speechStage == 1) then + HogSay(instructor, loc("The enemy is hiding out on yonder ducky!"), SAY_SAY) + speechStage = 2 + + elseif (TurnTimeLeft == 49000) and (speechStage == 2) then + FollowGear(enemy) + elseif (TurnTimeLeft == 46500) and (speechStage == 2) then + FollowGear(instructor) + HogSay(instructor, loc("Get on over there and take him out!"), SAY_SAY) + speechStage = 3 + elseif (TurnTimeLeft == 43500) and (speechStage == 3) then + HogSay(instructor, loc("GO! GO! GO!"), SAY_SHOUT) + speechStage = 4 + givenSpeech = true + end + + end + + -- if player falls in water or if player ignores speech + if (CurrentHedgehog ~= nil) and (CurrentHedgehog == player) then + if (GetY(player) > WaterLine) and (gameLost == false) then + HogSay(instructor, loc("DAMMIT, ROOKIE!"), SAY_SHOUT) + gameLost = true + end + + if (GetX(player) > 300) and (GetY(player) > 880) and (notListening == false) and (speechStage < 3) then + HogSay(instructor, loc("DAMMIT, ROOKIE! GET OFF MY HEAD!"), SAY_SHOUT) + notListening = true + end + + end + + --player out of time + if (TurnTimeLeft == 1) and (gameWon == false) then + SetHealth(player, 0) + end + + -- meh + if gameLost == true then + endTimer = endTimer + 1 + if (CurrentHedgehog ~= nil) and (CurrentHedgehog == instructor) then + if endTimer >= 3000 then + --SetHealth(instructor,0) + TurnTimeLeft = 1 + DismissTeam(loc("Bloody Rookies")) + end + ShowMission(loc("MISSION FAILED"), loc(":("), loc("You've failed. Try again."), -amRope, 5000); + end + end + +end + + +function onAmmoStoreInit() + SetAmmo(amFirePunch, 0, 0, 0, 1) + SetAmmo(amParachute, 1, 0, 0, 0) + SetAmmo(amRope, 0, 0, 0, 1) +end + +function onGearDelete(gear) + if GetGearType(gear) == gtHedgehog then + if gear == player then + gameLost = true + elseif (gear == instructor) and (GetY(gear) > WaterLine) then + HogSay(player, loc("See ya!"), SAY_THINK) + TurnTimeLeft = 3000 + AddCaption(loc("Achievement Unlocked") .. ": " .. loc("Naughty Ninja"),0xffba00ff,capgrpMessage2) + DismissTeam(loc("Blue Team")) + gameWon = true + elseif gear == enemy then + HogSay(player, loc("Enjoy the swim..."), SAY_THINK) + gameWon = true + TurnTimeLeft = 3000 + end + + end +end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Scenario/User_Mission_-_Diver.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Diver.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,97 @@ + +HedgewarsScriptLoad("/Scripts/Locale.lua") + +local player = nil -- This variable will point to the hog's gear +local enemy = nil + +local GameOver = false + +function onGameInit() + + -- Things we don't modify here will use their default values. + + Seed = 0 -- The base number for the random number generator + GameFlags = gfInfAttack + gfDisableWind-- Game settings and rules + TurnTime = 90000 -- The time the player has to move each round (in ms) + CaseFreq = 0 -- The frequency of crate drops + MinesNum = 0 -- The number of mines being placed + MinesTime = 1000 + Explosives = 0 -- The number of explosives being placed + Delay = 10 -- The delay between each round + Map = "Hydrant" -- The map to be played + Theme = "City" -- The theme to be used + SuddenDeathTurns = 99999 + + AddTeam(loc("Bloody Rookies"), 14483456, "Simple", "Island", "Default") + player = AddHog(loc("Hunter"), 0, 1, "NoHat") + + AddTeam(loc("Toxic Team"), 1175851, "Simple", "Island", "Default") + enemy = AddHog(loc("Poison"), 1, 100, "Skull") + + SetGearPosition(player,430,516) + SetGearPosition(enemy,1464,936) + +end + + +function onGameStart() + + + SpawnAmmoCrate(426,886,amJetpack) + SpawnAmmoCrate(1544,690,amFirePunch) + SpawnAmmoCrate(950,851,amBlowTorch) + SpawnAmmoCrate(1032,853,amParachute) + + AddGear(579, 296, gtMine, 0, 0, 0, 0) + + ShowMission(loc("Operation Diver"), "", loc("Eliminate Poison before the time runs out") .. loc("|- Mines Time:") .. " " .. 1 .. " " .. loc("sec"), -amFirePunch, 0); + --SetTag(AddGear(0, 0, gtATSmoothWindCh, 0, 0, 0, 1), -70) + + SetWind(-100) + +end + + +function onGameTick() + + + if (TotalRounds == 3) and (GameOver == false) then + SetHealth(player, 0) + GameOver = true + end + + if TurnTimeLeft == 1 then + SetHealth(player, 0) + GameOver = true + end + +end + + +function onAmmoStoreInit() + SetAmmo(amFirePunch, 1, 0, 0, 1) + SetAmmo(amBlowTorch, 0, 0, 0, 1) + SetAmmo(amGirder, 1, 0, 0, 0) + SetAmmo(amParachute, 0, 0, 0, 1) + SetAmmo(amJetpack, 0, 0, 0, 1) +end + + +function onGearAdd(gear) + + if GetGearType(gear) == gtJetpack then + SetHealth(gear,1000) + end + +end + +function onGearDelete(gear) + + if (gear == enemy) and (GameOver == false) then + ShowMission(loc("Operation Diver"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) + elseif gear == player then + ShowMission(loc("Operation Diver"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) + GameOver = true + end + +end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Scenario/User_Mission_-_Newton_and_the_Hammock.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Newton_and_the_Hammock.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,132 @@ + +HedgewarsScriptLoad("/Scripts/Locale.lua") + +local player = nil +local enemy = nil +local failed = false + +local hhs = {} +local numhhs = 0 + +function onGameInit() + + Seed = 0 + TurnTime = 60000 + CaseFreq = 0 + MinesTime = 1000 + SuddenDeathTurns = 999999 + HealthCaseProb = 35 + Explosives = 0 + MinesNum = 0 + Map = "Hammock" + Theme = "Nature" + + AddTeam(loc("Pathetic Resistance"), 14483456, "Simple", "Island", "Default") + player = AddHog(loc("Ikeda"), 0, 48, "StrawHat") + + AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Default") + enemy = AddHog(loc("Unit") .. " 811", 1, 100, "cyborg1") + + SetGearPosition(player,430,1540) + SetGearPosition(enemy,1464,1960) + +end + + +function onGameStart() + + AddAmmo(enemy, amShotgun, 100) + AddAmmo(enemy, amFirePunch, 100) + + --GIRDER LIST. + PlaceGirder(1073,2009,0) + PlaceGirder(524,1487,3) + PlaceGirder(638,1453,4) + PlaceGirder(761,1453,0) + PlaceGirder(840,1421,3) + PlaceGirder(302,1388,6) + PlaceGirder(327,1506,1) + PlaceGirder(1669,1832,3) + --MINE LIST. + AddGear(1056,1987,gtMine, 0, 0, 0, 0) + AddGear(1086,1988,gtMine, 0, 0, 0, 0) + --STICKY MINE LIST. + AddGear(1089,965,gtSMine, 0, 0, 0, 0) + AddGear(1133,945,gtSMine, 0, 0, 0, 0) + AddGear(1010,1081,gtSMine, 0, 0, 0, 0) + AddGear(1036,1049,gtSMine, 0, 0, 0, 0) + AddGear(1057,1004,gtSMine, 0, 0, 0, 0) + AddGear(784,1252,gtSMine, 0, 0, 0, 0) + AddGear(841,1257,gtSMine, 0, 0, 0, 0) + AddGear(902,1263,gtSMine, 0, 0, 0, 0) + AddGear(952,1281,gtSMine, 0, 0, 0, 0) + AddGear(517,1546,gtSMine, 0, 0, 0, 0) + AddGear(559,1597,gtSMine, 0, 0, 0, 0) + AddGear(613,1650,gtSMine, 0, 0, 0, 0) + AddGear(674,1705,gtSMine, 0, 0, 0, 0) + AddGear(746,1692,gtSMine, 0, 0, 0, 0) + AddGear(810,1692,gtSMine, 0, 0, 0, 0) + AddGear(872,1673,gtSMine, 0, 0, 0, 0) + AddGear(933,1666,gtSMine, 0, 0, 0, 0) + AddGear(981,1662,gtSMine, 0, 0, 0, 0) + AddGear(1016,1634,gtSMine, 0, 0, 0, 0) + AddGear(1063,1595,gtSMine, 0, 0, 0, 0) + AddGear(1100,1574,gtSMine, 0, 0, 0, 0) + AddGear(1002,1461,gtSMine, 0, 0, 0, 0) + AddGear(1052,1438,gtSMine, 0, 0, 0, 0) + AddGear(1102,1464,gtSMine, 0, 0, 0, 0) + --WEAPON CRATE LIST. + SpawnAmmoCrate(1565,642,amSineGun) + SpawnAmmoCrate(548,858,amBazooka) + --UTILITY CRATE LIST. + SpawnUtilityCrate(479,847,amJetpack) + SpawnUtilityCrate(1550,1715,amBlowTorch) + SpawnUtilityCrate(1227,1941,amJetpack) + SpawnUtilityCrate(1070,1964,amInvulnerable) + SpawnUtilityCrate(1070,1875,amTeleport) + --HOG POSITION LIST. + if hhs[0] ~= nil then + SetGearPosition(hhs[0],397,865) + end + if hhs[1] ~= nil then + SetGearPosition(hhs[1],561,1365) + end + + ShowMission(loc("Newton's Hammock"), loc("User Challenge"), loc("Eliminate the enemy before the time runs out"), -amParachute, 0) + +end + +function onAmmoStoreInit() + SetAmmo(amSkip, 9, 0, 0, 1) + SetAmmo(amBazooka, 0, 0, 0, 1) + SetAmmo(amJetpack, 0, 0, 0, 1) + SetAmmo(amTeleport, 0, 0, 0, 1) + SetAmmo(amSineGun, 0, 0, 0, 1) + SetAmmo(amInvulnerable, 0, 0, 0, 1) + SetAmmo(amBlowTorch, 0, 0, 0, 1) +end + +function onGearDamage(gear, damage) + if (gear == player) and (damage >= 48) then + failed = true + end +end + +function onGearAdd(gear) + + if GetGearType(gear) == gtHedgehog then + hhs[numhhs] = gear + numhhs = numhhs + 1 + end + +end + +function onGearDelete(gear) + + if (gear == enemy) and (failed == false) then + ShowMission(loc("Newton's Hammock"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) + elseif gear == player then + ShowMission(loc("Newton's Hammock"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) + end + +end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Scenario/User_Mission_-_Nobody_Laugh.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Nobody_Laugh.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,130 @@ +-------------------------------------- +-- NOBODY LAUGH +-- a hilarious (not really) adventure +-------------------------------------- + +HedgewarsScriptLoad("/Scripts/Locale.lua") +HedgewarsScriptLoad("/Scripts/Tracker.lua") + +local hhs = {} + +function onGameInit() + + Seed = 0 + GameFlags = gfInfAttack + gfPerHogAmmo +gfDisableWind + SuddenDeathTurns = 9999 + TurnTime = 180000 + CaseFreq = 0 + MinesNum = 0 + Explosives = 0 + Map = "Bath" + Theme = "Nature" + + AddTeam(loc("Nameless Heroes"), 14483456, "eyecross", "Wood", "HillBilly", "cm_birdy") + hhs[1] = AddHog(loc( "Hunter" ), 0, 1, "Skull") + SetGearPosition(hhs[1], 1267, 451) + hhs[2] = AddHog(loc("Drowner"), 0, 31, "mp3") + SetGearPosition(hhs[2], 1332, 451) + + AddTeam(loc("Clowns"), 1175851, "Duck2", "Tank", "Mobster", "cm_spider") + hhs[3] = AddHog(loc("Poison"), 5, 100, "WhySoSerious") + SetGearPosition(hhs[3], 1133, 446) + hhs[4] = AddHog(loc("Bobo"), 5, 100, "clown") + SetGearPosition(hhs[4], 1215, 553) + hhs[5] = AddHog(loc("Copper"), 5, 10, "clown-copper") + SetGearPosition(hhs[5], 414, 376) + hhs[6] = AddHog(loc("Derp"), 5, 100, "clown-crossed") + SetGearPosition(hhs[6], 1590, 886) + hhs[7] = AddHog(loc("Eckles"), 5, 100, "clown-copper") + SetGearPosition(hhs[7], 772, 754) + hhs[8] = AddHog(loc("Frank"), 5, 50, "clown-copper") + SetGearPosition(hhs[8], 1688, 714) + hhs[9] = AddHog(loc("Harry"), 5, 50, "clown-copper") + SetGearPosition(hhs[9], 1932, 837) + hhs[10] = AddHog(loc("Igmund"), 5, 50, "WhySoSerious") + SetGearPosition(hhs[10], 1601, 733) + +end + +function onGameStart() + + AddAmmo(enemy, amAirAttack, 100) + + ShowMission( loc("Nobody Laugh"), + loc("User Challenge"), + loc("Eliminate the enemy before the time runs out") + , 0, 0 + ) + + -- GIRDERS + PlaceGirder(1212, 710, 7) + PlaceGirder(1215, 570, 4) + PlaceGirder(1288, 520, 2) + PlaceGirder(1184, 468, 4) + PlaceGirder(1344, 468, 4) + PlaceGirder(1247, 346, 4) + + PlaceGirder(667, 438, 4) + PlaceGirder(507, 438, 4) + PlaceGirder(434, 487, 2) + PlaceGirder(505, 537, 4) + PlaceGirder(665, 537, 4) + PlaceGirder(737, 487, 2) + + PlaceGirder(416, 465, 6) + PlaceGirder(1415, 378, 6) + PlaceGirder(1300, 625, 3) + PlaceGirder(1359, 566, 3) + PlaceGirder(1436, 538, 0) + PlaceGirder(1505, 468, 4) + + ------ AMMO CRATE LIST ------ + tempG = SpawnAmmoCrate(1242, 315, amBaseballBat) + tempG = SpawnAmmoCrate(1309, 315, amAirAttack) + tempG = SpawnAmmoCrate(144, 895, amAirAttack) + tempG = SpawnAmmoCrate(664, 699, amIceGun) + tempG = SpawnAmmoCrate(1572, 444, amFirePunch) + tempG = SpawnAmmoCrate(1574, 382, amDynamite) + + ------ UTIL CRATE LIST ------ + tempG = SpawnUtilityCrate(654, 513, amParachute) + tempG = SpawnUtilityCrate(1569, 413, amParachute) + + -- HOG AMMO + AddAmmo(hhs[1],amParachute,1) + AddAmmo(hhs[1],amHammer,1) + AddAmmo(hhs[2],amWhip,1) + + for i = 3, 10 do + AddAmmo(hhs[i], amDEagle, 100) + AddAmmo(hhs[i], amShotgun, 100) + AddAmmo(hhs[i], amGrenade, 100) + AddAmmo(hhs[i], amBazooka, 100) + AddAmmo(hhs[i], amDrill, 100) + end + +end + +function onNewTurn() + SetWind(100) +end + +function onAmmoStoreInit() + + SetAmmo(amBaseballBat, 0, 0, 0, 1) + SetAmmo(amAirAttack, 0, 0, 0, 1) + SetAmmo(amFirePunch, 0, 0, 0, 1) + SetAmmo(amDynamite, 0, 0, 0, 1) + SetAmmo(amHammer, 0, 0, 0, 1) + SetAmmo(amIceGun, 0, 0, 0, 1) + + SetAmmo(amParachute, 0, 0, 0, 1) + + SetAmmo(amSwitch, 9, 0, 0, 0) + SetAmmo(amSkip, 9, 0, 0, 0) + +end + +------------------------------ +-- I'm in whitesppaaaaaaaaaacceeeee :D +------------------------------ diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Scenario/User_Mission_-_Spooky_Tree.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Spooky_Tree.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,153 @@ + +HedgewarsScriptLoad("/Scripts/Locale.lua") + +--------------------------------------------------------------- + +local player = nil -- This variable will point to the hog's gear +local instructor = nil +local enemy = nil + +local GameOver = false +local birdSpeech = false +local birdSqualk = false + +local GirderCrate = nil + +function onGameInit() + + -- Things we don't modify here will use their default values. + Seed = 0 -- The base number for the random number generator + GameFlags = gfInfAttack +gfDisableWind-- Game settings and rules + TurnTime = 90000 -- The time the player has to move each round (in ms) + CaseFreq = 0 -- The frequency of crate drops + MinesNum = 0 -- The number of mines being placed + MinesTime = 1 + Explosives = 0 -- The number of explosives being placed + Delay = 10 -- The delay between each round + Map = "Tree" -- The map to be played + Theme = "Halloween" -- The theme to be used + SuddenDeathTurns = 99999 + + AddTeam(loc("Bloody Rookies"), 14483456, "Simple", "Island", "Default") + player = AddHog(loc("Hunter"), 0, 1, "NoHat") + --852718 + AddTeam(loc("Toxic Team"), 1175851, "Simple", "Island", "Default") + enemy = AddHog(loc("Poison"), 1, 10, "Skull") + + SetGearPosition(player,970,23) + SetGearPosition(enemy,498,806) + +end + + +function onGameStart() + + --right side mines + AddGear(1681,359,gtMine, 0, 0, 0, 0) + AddGear(1718,518,gtMine, 0, 0, 0, 0) + AddGear(1648,527,gtMine, 0, 0, 0, 0) + AddGear(1584,522,gtMine, 0, 0, 0, 0) + + --tunnel mines + AddGear(301,569,gtSMine, 0, 0, 0, 0) + AddGear(372,608,gtSMine, 0, 0, 0, 0) + AddGear(453,628,gtSMine, 0, 0, 0, 0) + AddGear(524,611,gtSMine, 0, 0, 0, 0) + AddGear(613,611,gtSMine, 0, 0, 0, 0) + + AddGear(308,486,gtSMine, 0, 0, 0, 0) + AddGear(372,478,gtSMine, 0, 0, 0, 0) + AddGear(453,466,gtSMine, 0, 0, 0, 0) + AddGear(524,471,gtSMine, 0, 0, 0, 0) + AddGear(613,466,gtSMine, 0, 0, 0, 0) + + --above the tunnel mines + AddGear(331,433,gtMine, 0, 0, 0, 0) + AddGear(404,420,gtMine, 0, 0, 0, 0) + AddGear(484,424,gtMine, 0, 0, 0, 0) + AddGear(562,417,gtMine, 0, 0, 0, 0) + AddGear(640,412,gtMine, 0, 0, 0, 0) + + -- crates crates and more crates + SpawnAmmoCrate(1208,576,amBlowTorch) + SpawnAmmoCrate(1467,376,amPickHammer) + SpawnUtilityCrate(373,165,amGirder) + SpawnUtilityCrate(704,623,amJetpack) + SpawnUtilityCrate(1646,749,amLaserSight) + + SpawnAmmoCrate(745,418,amShotgun) --shotgun1 + SpawnAmmoCrate(833,432,amFirePunch) --fire punch + GirderCrate = SpawnAmmoCrate(1789,514,amShotgun) -- final shotgun + SpawnAmmoCrate(1181,419,amBee) + + ShowMission(loc("Spooky Tree"), "", loc("Eliminate all enemies") .. loc("|- Mines Time:") .. " " .. 0 .. " " .. loc("sec"), -amBee, 0) + + SetWind(-75) + +end + + +function onGameTick() + + + if CurrentHedgehog ~= nil then + + if (birdSqualk == false) and (GetX(CurrentHedgehog) == 1102) and (GetY(CurrentHedgehog) == 133) then + birdSqualk = true + PlaySound(sndBirdyLay) + end + + if (birdSpeech == false) and (GetX(CurrentHedgehog) == 1068) and (GetY(CurrentHedgehog) == 162) then + birdSpeech = true + HogSay(player,loc("Good birdy......"),SAY_THINK) + end + end + + if CurrentHedgehog ~= nil then + --AddCaption(GetX(CurrentHedgehog) .. ";" .. GetY(CurrentHedgehog)) + end + + if (TotalRounds == 2) and (GameOver == false) then -- just in case + SetHealth(player, 0) + GameOver = true + end + + if TurnTimeLeft == 1 then + --ShowMission(loc(caption), loc(subcaption), loc(timeout), -amSkip, 0); + SetHealth(player, 0) + GameOver = true + end + +end + + +function onAmmoStoreInit() + SetAmmo(amShotgun, 0, 0, 0, 1) + SetAmmo(amFirePunch, 0, 0, 0, 1) + SetAmmo(amBee, 0, 0, 0, 1) + SetAmmo(amBlowTorch, 0, 0, 0, 1) + SetAmmo(amGirder, 0, 0, 0, 1) + SetAmmo(amParachute, 1, 0, 0, 1) + SetAmmo(amPickHammer, 0, 0, 0, 1) + SetAmmo(amJetpack, 0, 0, 0, 1) + SetAmmo(amLaserSight, 0, 0, 0, 1) +end + +function onGearDelete(gear) + + if gear == GirderCrate then + TurnTimeLeft = TurnTimeLeft + 30000 + end + + if GetGearType(gear) == gtCase then + TurnTimeLeft = TurnTimeLeft + 5000 + end + + if (gear == enemy) and (GameOver == false) then + ShowMission(loc("Spooky Tree"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0); + elseif gear == player then + ShowMission(loc("Spooky Tree"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) + GameOver = true + end + +end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Scenario/User_Mission_-_Teamwork.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_Teamwork.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,119 @@ +HedgewarsScriptLoad("/Scripts/Locale.lua") + +local player = nil -- This variable will point to the hog's gear +local p2 = nil +local enemy = nil +local bCrate = nil + +local GameOver = false + +function onGameInit() + + -- Things we don't modify here will use their default values. + Seed = 0 -- The base number for the random number generator + GameFlags = gfDisableWind-- Game settings and rules + TurnTime = 30000 -- The time the player has to move each round (in ms) + CaseFreq = 0 -- The frequency of crate drops + MinesNum = 0 -- The number of mines being placed + MinesTime = 1 + Explosives = 0 -- The number of explosives being placed + Delay = 10 -- The delay between each round + Map = "Mushrooms" -- The map to be played + Theme = "Nature" -- The theme to be used + SuddenDeathTurns = 99999 + + AddTeam(loc("Feeble Resistance"), 14483456, "Simple", "Island", "Default") + player = AddHog(string.format(loc("Pathetic Hog #%d"), 1), 0, 50, "NoHat") + p2 = AddHog(string.format(loc("Pathetic Hog #%d"), 2), 0, 20, "NoHat") + + --AddTeam("Toxic Team", 1175851, "Simple", "Island", "Robot","cm_binary") + AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Robot", "cm_binary") + enemy = AddHog(loc("Unit 3378"), 5, 30, "cyborg1") + + SetGearPosition(player,1403,235) + SetGearPosition(p2,1269,239) + SetGearPosition(enemy,492,495) + +end + + +function onGameStart() + + --mines + AddGear(276,76,gtMine, 0, 0, 0, 0) + AddGear(301,76,gtMine, 0, 0, 0, 0) + AddGear(326,76,gtMine, 0, 0, 0, 0) + AddGear(351,76,gtMine, 0, 0, 0, 0) + AddGear(376,76,gtMine, 0, 0, 0, 0) + AddGear(401,76,gtMine, 0, 0, 0, 0) + AddGear(426,76,gtMine, 0, 0, 0, 0) + AddGear(451,76,gtMine, 0, 0, 0, 0) + AddGear(476,76,gtMine, 0, 0, 0, 0) + + AddGear(886,356,gtMine, 0, 0, 0, 0) + AddGear(901,356,gtMine, 0, 0, 0, 0) + AddGear(926,356,gtMine, 0, 0, 0, 0) + AddGear(951,356,gtMine, 0, 0, 0, 0) + AddGear(976,356,gtMine, 0, 0, 0, 0) + AddGear(1001,356,gtMine, 0, 0, 0, 0) + + -- crates crates and more crates + bCrate = SpawnAmmoCrate(1688,476,amBaseballBat) + SpawnUtilityCrate(572,143,amGirder) + SpawnAmmoCrate(1704,954,amPickHammer) + SpawnAmmoCrate(704,623,amBlowTorch) + SpawnUtilityCrate(1543,744,amJetpack) + SpawnAmmoCrate(227,442,amDrill) + + ShowMission(loc("Codename: Teamwork"), "", loc("- Eliminate Unit 3378 |- Feeble Resistance must survive") .. loc("|- Mines Time:") .. " " .. 0 .. " " .. loc("sec"), 0, 0) + +end + + +--function onGameTick() + + --if CurrentHedgehog ~= nil then + -- AddCaption(GetX(CurrentHedgehog) .. ";" .. GetY(CurrentHedgehog)) + --end + +--end + + +function onAmmoStoreInit() + SetAmmo(amBlowTorch, 0, 0, 0, 1) + SetAmmo(amGirder, 0, 0, 0, 1) + SetAmmo(amPickHammer, 0, 0, 0, 2) + SetAmmo(amJetpack, 0, 0, 0, 1) + SetAmmo(amDrill, 0, 0, 0, 2) + SetAmmo(amBaseballBat, 0, 0, 0, 1) + SetAmmo(amSwitch, 9, 0, 0, 0) + SetAmmo(amSkip, 9, 0, 0, 0) +end + +function onGearDamage(gear, damage) + if (gear == player) and (damage == 30) then + HogSay(player,loc("T_T"),SAY_SHOUT) + end +end + +function onGearDelete(gear) + + if gear == bCrate then + HogSay(CurrentHedgehog, loc("Hmmm..."), SAY_THINK) + end + + if GetGearType(gear) == gtCase then + TurnTimeLeft = TurnTimeLeft + 5000 + end + + if (gear == enemy) and (GameOver == false) then + ShowMission(loc("Codename: Teamwork"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) + GameOver = true + elseif ( ((gear == player) or (gear == p2)) and (GameOver == false)) then + ShowMission(loc("Codename: Teamwork"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) + GameOver = true + SetHealth(p2,0) + SetHealth(player,0) + end + +end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Scenario/User_Mission_-_The_Great_Escape.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Scenario/User_Mission_-_The_Great_Escape.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,122 @@ +HedgewarsScriptLoad("/Scripts/Locale.lua") + +local player = nil +local enemy = nil + +function onGameInit() + + Map = "Castle" + Theme = "Nature" + Seed = 0 + GameFlags = gfInfAttack + + TurnTime = 45 * 1000 + + CaseFreq = 0 + MinesNum = 0 + Explosives = 0 + + AddTeam(loc("Hero Team"), 14483456, "Simple", "Island", "Default", "Hedgewars") + player = AddHog(loc("Good Dude"), 0, 80, "NoHat") --NoHat + + AddTeam(loc("Bad Team"), 1175851, "Simple", "Island", "Default", "Hedgewars") + enemy = AddHog(loc("Bad Guy"), 1, 40, "NoHat") + +end + +function onGameStart() + +ShowMission(loc("The Great Escape"), loc("Get out of there!"), loc("Elimate your captor."), -amGrenade, 0) + +------ GIRDER LIST ------ +PlaceGirder(1042,564,0) +PlaceGirder(1028,474,6) +PlaceGirder(1074,474,6) +PlaceGirder(1050,385,0) +PlaceGirder(1175,731,7) +PlaceGirder(1452,905,2) +PlaceGirder(1522,855,4) +PlaceGirder(1496,900,3) +PlaceGirder(1682,855,4) +PlaceGirder(1773,887,2) +PlaceGirder(1647,901,1) +PlaceGirder(1871,883,6) +PlaceGirder(1871,723,6) +PlaceGirder(1774,768,6) +PlaceGirder(1773,767,6) +PlaceGirder(1821,904,1) +PlaceGirder(1822,802,3) +PlaceGirder(1820,723,1) +PlaceGirder(1782,678,4) +PlaceGirder(1822,661,0) +PlaceGirder(1822,644,0) +PlaceGirder(1742,644,0) +PlaceGirder(1742,661,0) +PlaceGirder(1694,676,2) +PlaceGirder(1903,635,0) +------ HEALTH CRATE LIST ------ +SpawnHealthCrate(1476,169) +SpawnHealthCrate(1551,177) +SpawnHealthCrate(1586,200) +SpawnHealthCrate(1439,189) +SpawnHealthCrate(1401,211) +SpawnHealthCrate(1633,210) +------ MINE LIST ------ +tempG = AddGear(1010,680,gtMine, 0, 0, 0, 0) +SetTimer(tempG, 1) +tempG = AddGear(1031,720,gtMine, 0, 0, 0, 0) +SetTimer(tempG, 1) +tempG = AddGear(1039,748,gtMine, 0, 0, 0, 0) +SetTimer(tempG, 1) +tempG = AddGear(1051,777,gtMine, 0, 0, 0, 0) +SetTimer(tempG, 1) +tempG = AddGear(1065,796,gtMine, 0, 0, 0, 0) +SetTimer(tempG, 1) +tempG = AddGear(1094,800,gtMine, 0, 0, 0, 0) +SetTimer(tempG, 1) +------ REPOSITION LIST ------ +SetGearPosition(player,1050,534) +SetGearPosition(enemy,1512,158) +SetHealth(player, 1) +SetHealth(enemy, 1) +------ AMMO CRATE LIST ------ +SpawnAmmoCrate(1632,943,5) +SpawnAmmoCrate(1723,888,12) +SpawnAmmoCrate(1915,599,1) +------ UTILITY CRATE LIST ------ +SpawnUtilityCrate(1519,945,15) +SpawnUtilityCrate(1227,640,6) +SpawnUtilityCrate(1416,913,18) +------ END LOADING DATA ------ + +end + +function onGameTick() + + if TurnTimeLeft == TurnTime-1 then + SetWind(100) + end + +end + +function onGearDelete(gear) + if (GetGearType(gear) == gtCase) and (CurrentHedgehog == player) then + if GetHealth(gear) > 0 then + AddGear(GetX(gear), GetY(gear), gtGrenade, 0, 0, 0, 1) + end + elseif gear == player then + ShowMission(loc("The Great Escape"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) + elseif gear == enemy then + ShowMission(loc("The Great Escape"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) + end +end + +function onAmmoStoreInit() + SetAmmo(amGrenade, 1, 0, 0, 1) + SetAmmo(amParachute, 1, 0, 0, 1) + SetAmmo(amFirePunch, 0, 0, 0, 3) + SetAmmo(amPickHammer, 0, 0, 0, 1) + SetAmmo(amBlowTorch, 0, 0, 0, 1) + SetAmmo(amShotgun, 0, 0, 0, 1) + SetAmmo(amSkip, 9, 0, 0, 0) +end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Scenario/portal.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Scenario/portal.lua Wed Apr 13 14:39:17 2016 +0200 @@ -0,0 +1,205 @@ +HedgewarsScriptLoad("/Scripts/Locale.lua") +HedgewarsScriptLoad("/Scripts/Utils.lua") + +local MineArray = {} +local player +local adviceGiven = false +local adviceGiven2 = false + +function onGameInit() + Seed = 0 -- The base number for the random number generator + GameFlags = gfInfAttack +gfBorder +gfDisableWind +gfSolidLand + TurnTime = 1500000 -- The time the player has to move each round (in ms) + CaseFreq = 0 -- The frequency of crate drops + MinesNum = 0 -- The number of mines being placed + Explosives = 0 -- The number of explosives being placed + Delay = 10 -- The delay between each round + Map = "portal" -- The map to be played + Theme = "Hell" -- The theme to be used + -- Disable Sudden Death + HealthDecrease = 0 + WaterRise = 0 + + AddTeam(loc("Subjects"), 0xFFFF01, "Simple", "Island", "Default", "cm_test") + player = AddHog(loc("Subject 1"), 0, 10, "Terminator_Glasses") + + AddTeam(loc("Hell Army"), 0xFF0402, "skull", "Island", "Default", "cm_hellish") + enemy1 = AddHog(loc("Lucifer"), 1, 200, "InfernalHorns") + enemy2 = AddHog(loc("Voldemort"), 1, 150, "WizardHat") + enemy3 = AddHog(loc("Zombi"), 1, 100, "Zombi") + enemy4 = AddHog(loc("Predator"), 1, 14, "anzac") + enemy5 = AddHog(loc("Oneye"), 1, 50, "cyclops") + enemy6 = AddHog(loc("Razac"), 1, 50, "Evil") + enemy7 = AddHog(loc("C-2"), 1, 50, "cyborg1") + enemy8 = AddHog(loc("Rider"), 1, 50, "scif_SparkssHelmet") + + AddTeam(loc("Badmad"), 0xFF0402, "skull", "Island", "Default", "cm_pentagram") + enemy9 = AddHog(loc("C-1"), 1, 50, "cyborg2") + enemy10 = AddHog(loc("Hidden"), 1, 40, "bushhider") + enemy11 = AddHog(loc("Ronald"), 1, 70, "clown") + enemy12 = AddHog(loc("Phosphat"), 1, 50, "chef") + enemy13 = AddHog(loc("Lestat"), 1, 30, "vampirichog") + + SetGearPosition(player, 350, 1820) + SetGearPosition(enemy1, 2037, 1313) + SetGearPosition(enemy2, 1369, 1605) + SetGearPosition(enemy3, 1750, 1937) + SetGearPosition(enemy4, 3125, 89) + SetGearPosition(enemy5, 743, 900) + SetGearPosition(enemy6, 130, 360) + SetGearPosition(enemy7, 1333, 640) + SetGearPosition(enemy8, 1355, 200) + SetGearPosition(enemy9, 2680, 225) + SetGearPosition(enemy10, 2970, 800) + SetGearPosition(enemy11, 4050, 1964) + SetGearPosition(enemy12, 2666, 950) + SetGearPosition(enemy13, 3306, 1205) + +end + +function onAmmoStoreInit() + + SetAmmo(amFirePunch, 0,0,0,1) + SetAmmo(amParachute, 0, 0, 0, 2) + SetAmmo(amGirder, 0, 0, 0, 3) + SetAmmo(amTeleport, 0, 0, 0, 1) + SetAmmo(amLaserSight,0,0,0,1) + SetAmmo(amHellishBomb,0,0,0,1) + SetAmmo(amGrenade,0,0,0,1) + SetAmmo(amRope,0,0,0,1) + SetAmmo(amDEagle,0,0,0,1) + SetAmmo(amExtraTime,0,0,0,2) + SetAmmo(amSkip,9,0,0,0) + SetAmmo(amBlowTorch, 0, 0, 0, 1) + SetAmmo(amPickHammer, 0, 0, 0, 1) + SetAmmo(amSnowball, 0, 0, 0, 1) + +end + +function onGameStart() + + SetWind(100) + + MineArray[0] = AddGear(840, 1847, gtMine, 0, 0, 0, 0) + MineArray[1] = AddGear(900, 1847, gtMine, 0, 0, 0, 0) + MineArray[2] = AddGear(1000, 1847, gtMine, 0, 0, 0, 0) + MineArray[3] = AddGear(1100, 1847, gtMine, 0, 0, 0, 0) + MineArray[4] = AddGear(1140, 1847, gtMine, 0, 0, 0, 0) + MineArray[5] = AddGear(1170, 1847, gtMine, 0, 0, 0, 0) + MineArray[6] = AddGear(1200, 1847, gtMine, 0, 0, 0, 0) + MineArray[7] = AddGear(1200, 1847, gtMine, 0, 0, 0, 0) + MineArray[8] = AddGear(1230, 1847, gtMine, 0, 0, 0, 0) + MineArray[9] = AddGear(1280, 1847, gtMine, 0, 0, 0, 0) + MineArray[10] = AddGear(1302, 1847, gtMine, 0, 0, 0, 0) + MineArray[11] = AddGear(1350, 1847, gtMine, 0, 0, 0, 0) + MineArray[12] = AddGear(1383, 1847, gtMine, 0, 0, 0, 0) + MineArray[13] = AddGear(1400, 1847, gtMine, 0, 0, 0, 0) + MineArray[14] = AddGear(1423, 1847, gtMine, 0, 0, 0, 0) + MineArray[15] = AddGear(1470, 1847, gtMine, 0, 0, 0, 0) + MineArray[16] = AddGear(1480, 1847, gtMine, 0, 0, 0, 0) + MineArray[17] = AddGear(1311, 1847, gtMine, 0, 0, 0, 0) + + MineArray[18] = AddGear(840, 1785, gtMine, 0, 0, 0, 0) + MineArray[19] = AddGear(900, 1785, gtMine, 0, 0, 0, 0) + MineArray[20] = AddGear(1000, 1785, gtMine, 0, 0, 0, 0) + MineArray[21] = AddGear(1100, 1785, gtMine, 0, 0, 0, 0) + MineArray[22] = AddGear(1140, 1785, gtMine, 0, 0, 0, 0) + MineArray[23] = AddGear(1170, 1785, gtMine, 0, 0, 0, 0) + MineArray[24] = AddGear(1200, 1785, gtMine, 0, 0, 0, 0) + MineArray[25] = AddGear(1230, 1785, gtMine, 0, 0, 0, 0) + MineArray[26] = AddGear(1280, 1785, gtMine, 0, 0, 0, 0) + MineArray[27] = AddGear(1302, 1785, gtMine, 0, 0, 0, 0) + MineArray[28] = AddGear(1350, 1785, gtMine, 0, 0, 0, 0) + MineArray[29] = AddGear(1383, 1785, gtMine, 0, 0, 0, 0) + MineArray[30] = AddGear(1400, 1785, gtMine, 0, 0, 0, 0) + MineArray[31] = AddGear(1423, 1785, gtMine, 0, 0, 0, 0) + MineArray[32] = AddGear(1470, 1785, gtMine, 0, 0, 0, 0) + MineArray[33] = AddGear(1480, 1785, gtMine, 0, 0, 0, 0) + MineArray[34] = AddGear(1311, 1785, gtMine, 0, 0, 0, 0) + + MineArray[35] = AddGear(4029, 89, gtMine, 0, 0, 0, 120) + + for i = 0,#MineArray do + SetTimer(MineArray[i],050) + SetState(MineArray[i],544) + end + --needed this MineArray cause timer didn't work, its was always 3sec, i wanna instant mines + + --UTILITY CRATE-- + parachute = SpawnUtilityCrate(1670, 1165, amParachute) + girder = SpawnUtilityCrate(2101, 1297, amGirder) + SpawnUtilityCrate(3965, 625, amBlowTorch) + SpawnUtilityCrate(2249, 93, amBlowTorch) + SpawnUtilityCrate(2181, 829, amBlowTorch) + SpawnUtilityCrate(1820, 567, amBlowTorch) + SpawnUtilityCrate(1375, 900, amTeleport) + SpawnUtilityCrate(130, 600, amPickHammer) + SpawnUtilityCrate(1660,1820, amLaserSight) + SpawnUtilityCrate(4070,1840, amLaserSight) + + + --AMMO CRATE-- + portalgun = SpawnAmmoCrate(505, 1943, amPortalGun, 1000) + extratime = SpawnAmmoCrate(4020, 785, amExtraTime, 2) + SpawnAmmoCrate(425, 613, amSnowball) + SpawnAmmoCrate(861, 633, amHellishBomb) + SpawnAmmoCrate(2510, 623, amSnowball) + SpawnAmmoCrate(2900, 1600, amGrenade) + SpawnAmmoCrate(2680, 320, amGrenade) + SpawnAmmoCrate(2650, 80, amDEagle) + SpawnAmmoCrate(3000, 100, amDEagle) + SpawnAmmoCrate(2900, 1400, amRope) + SpawnAmmoCrate(4025, 1117, amFirePunch) + + --HEALTH CRATE-- + SpawnHealthCrate(2000, 780) + + --GIRDER-- + PlaceGirder(3363, 1323, 4) + + ShowMission (loc("Portal Mind Challenge"), loc("Mission"), + loc("Defeat all enemies!") .. "|" .. loc("In this mission you have infinite time."), + -amPortalGun, 5000) + HogSay(player, loc("I should get myself a portal device, maybe this crate has one."), SAY_THINK) + +end + +function onGameTick() + + if (player ~= nil) then + if (gearIsInBox(player, 1650, 1907, 200, 60) and (adviceGiven == false)) then + adviceGiven = true + HogSay(player, loc("Hmmm, I’ll have to find some way of moving him off this anti-portal surface."), SAY_THINK) + elseif (gearIsInBox(player, 2960, 790, 200, 60) and (adviceGiven2 == false)) then + adviceGiven2 = true + HogSay(player, loc("The anti-portal surface is all over the floor, and I have nothing to kill him. Dropping something could hurt him enough to kill him."), SAY_THINK) + end + end + +end + +function onGearDelete(gear) + -- Check gear collection + if CurrentHedgehog == player and (band(GetGearMessage(gear), gmDestroy) ~= 0) then + if gear == portalgun then + HogSay(player, loc("Great! Let’s kill all these enemies, using portals."), SAY_THINK) + end + + if gear == girder then + HogSay(player, loc("This will be useful when I need a new platform or if I want to rise."), SAY_THINK) + end + + if gear == parachute then + HogSay(player, loc("You can’t open a portal on the blue surface."), SAY_THINK) + end + + if gear == extratime then + HogSay(player, loc("What?! For all this struggle I just win some ... time? Oh dear!"), SAY_SHOUT) + end + end + + if gear == player then + player = nil + end +end + diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/Basic_Training_-_Sniper_Rifle.lua --- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Sniper_Rifle.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,363 +0,0 @@ --- Hedgewars SniperRifle Training --- Scripting Example - --- Lines such as this one are comments - they are ignored --- by the game, no matter what kind of text is in there. --- It's also possible to place a comment after some real --- instruction as you see below. In short, everything --- following "--" is ignored. - ---------------------------------------------------------------- --- At first we implement the localization library using loadfile. --- This allows us to localize strings without needing to think --- about translations. --- We can use the function loc(text) to localize a string. - -HedgewarsScriptLoad("/Scripts/Locale.lua") - --- This variable will hold the number of destroyed targets. -local score = 0 --- This variable will hold the number of shots from the sniper rifle -local shots = 0 --- This variable represents the number of targets to destroy. -local score_goal = 31 --- This variable controls how many milliseconds/ticks we'd --- like to wait before we end the round once all targets --- have been destroyed. -local end_timer = 1000 -- 1000 ms = 1 s --- This variable is set to true if the game is lost (i.e. --- time runs out). -local game_lost = false --- This variable will point to the hog's gear -local player = nil --- This variable will grab the time left at the end of the round -local time_goal = 0 - -local target = nil - -local last_hit_time = 0 - -local cinematic = false - --- This is a custom function to make it easier to --- spawn more targets with just one line of code --- You may define as many custom functions as you --- like. -function spawnTarget(x, y) - -- add a new target gear - target = AddGear(x, y, gtTarget, 0, 0, 0, 0) - -- have the camera move to the target so the player knows where it is - FollowGear(target) -end - -function blowUp(x, y) - if cinematic == false then - cinematic = true - SetCinematicMode(true) - end - -- adds some TNT - gear = AddGear(x, y, gtDynamite, 0, 0, 0, 0) -end - -function onNewTurn() - SetWeapon(amSniperRifle) -end - --- This function is called before the game loads its --- resources. --- It's one of the predefined function names that will --- be called by the game. They give you entry points --- where you're able to call your own code using either --- provided instructions or custom functions. -function onGameInit() - -- At first we have to overwrite/set some global variables - -- that define the map, the game has to load, as well as - -- other things such as the game rules to use, etc. - -- Things we don't modify here will use their default values. - - -- The base number for the random number generator - Seed = 0 - -- Game settings and rules - GameFlags = gfMultiWeapon + gfOneClanMode + gfArtillery - -- The time the player has to move each round (in ms) - TurnTime = 150000 - -- The frequency of crate drops - CaseFreq = 0 - -- The number of mines being placed - MinesNum = 0 - -- The number of explosives being placed - Explosives = 0 - -- The delay between each round - Delay = 0 - -- The map to be played - Map = "Ropes" - -- The theme to be used - Theme = "Golf" - - -- Create the player team - AddTeam(loc("Sniperz"), 14483456, "Simple", "Island", "Default") - -- And add a hog to it - player = AddHog(loc("Hunter"), 0, 1, "Sniper") - SetGearPosition(player, 602, 1465) -end - --- This function is called when the round starts --- it spawns the first target that has to be destroyed. --- In addition it shows the scenario goal(s). -function onGameStart() - -- Disable graph in stats screen - SendHealthStatsOff() - -- Spawn the first target. - spawnTarget(860,1020) - - -- Show some nice mission goals. - -- Parameters are: caption, sub caption, description, - -- extra text, icon and time to show. - -- A negative icon parameter (-n) represents the n-th weapon icon - -- A positive icon paramter (n) represents the (n+1)-th mission icon - -- A timeframe of 0 is replaced with the default time to show. - ShowMission(loc("Sniper Training"), loc("Aiming Practice"), loc("Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."), -amSniperRifle, 0) -end - --- This function is called every game tick. --- Note that there are 1000 ticks within one second. --- You shouldn't try to calculate too complicated --- code here as this might slow down your game. -function onGameTick20() - if game_lost then - return - end - -- after a target is destroyed, show hog, then target - if (target ~= nil) and (TurnTimeLeft + 1300 < last_hit_time) then - -- move camera to the target - FollowGear(target) - elseif TurnTimeLeft + 300 < last_hit_time then - -- move camera to the hog - FollowGear(player) - end - -- If time's up, set the game to be lost. - -- We actually check the time to be "1 ms" as it - -- will be at "0 ms" right at the start of the game. - if TurnTimeLeft < 40 and TurnTimeLeft > 0 and score < score_goal and game_lost == false then - game_lost = true - -- ... and show a short message. - AddCaption(loc("Time's up!")) - ShowMission(loc("Sniper Training"), loc("Aiming Practice"), loc("Oh no! Time's up! Just try again."), -amSkip, 0) - -- and generate the stats and go to the stats screen - generateStats() - EndGame() - -- Just to be sure set the goal time to 1 ms - time_goal = 1 - end - -- If the goal is reached or we've lost ... - if score == score_goal or game_lost then - -- ... check to see if the time we'd like to - -- wait has passed and then ... - if end_timer == 0 then - -- ... end the game ... - generateStats() - EndGame() - else - -- ... or just lower the timer by 1. - -- Reset the time left to stop the timer - TurnTimeLeft = time_goal - end - end_timer = end_timer - 20 - end -end - --- This function is called when the game is initialized --- to request the available ammo and probabilities -function onAmmoStoreInit() - -- add an unlimited supply of shotgun ammo - SetAmmo(amSniperRifle, 9, 0, 0, 0) -end - --- This function is called when a new gear is added. --- We use it to count the number of shots, which we --- in turn use to calculate the final score and stats -function onGearAdd(gear) - if GetGearType(gear) == gtSniperRifleShot then - shots = shots + 1 - end -end - --- This function is called before a gear is destroyed. --- We use it to count the number of targets destroyed. -function onGearDelete(gear) - local gt = GetGearType(gear) - - if gt == gtCase then - game_lost = true - return - end - - if (gt == gtDynamite) and cinematic then - cinematic = false - SetCinematicMode(false) - return - end - - if gt == gtTarget then - -- remember when the target was hit for adjusting the camera - last_hit_time = TurnTimeLeft - -- Add one point to our score/counter - score = score + 1 - -- If we haven't reached the goal ... - if score < score_goal then - -- ... spawn another target. - if score == 1 then - spawnTarget(1520,1350) - elseif score == 2 then - spawnTarget(1730,1040) - elseif score == 3 then - spawnTarget(2080,780) - elseif score == 4 then - AddCaption(loc("Good so far!") .. " " .. loc("Keep it up!")); - blowUp(1730,1226) - blowUp(1440,1595) - blowUp(1527,1575) - blowUp(1614,1595) - blowUp(1420,1675) - blowUp(1527,1675) - blowUp(1634,1675) - blowUp(1440,1755) - blowUp(1527,1775) - blowUp(1614,1755) - spawnTarget(1527,1667) - elseif score == 5 then - spawnTarget(1527,1667) - elseif score == 6 then - spawnTarget(2175,1300) - elseif score == 7 then - spawnTarget(2250,940) - elseif score == 8 then - spawnTarget(2665,1540) - elseif score == 9 then - spawnTarget(3040,1160) - elseif score == 10 then - spawnTarget(2930,1500) - elseif score == 11 then - AddCaption(loc("This one's tricky.")); - spawnTarget(700,720) - elseif score == 12 then - AddCaption(loc("Well done.")); - blowUp(914,1222) - blowUp(1050,1222) - blowUp(1160,1008) - blowUp(1160,1093) - blowUp(1160,1188) - blowUp(375,911) - blowUp(510,911) - blowUp(640,911) - blowUp(780,911) - blowUp(920,911) - blowUp(1060,913) - blowUp(1198,913) - spawnTarget(1200,730) - elseif score == 13 then - spawnTarget(1200,830) - elseif score == 14 then - spawnTarget(1430,450) - elseif score == 15 then - spawnTarget(796,240) - elseif score == 16 then - spawnTarget(300,10) - elseif score == 17 then - spawnTarget(2080,820) - elseif score == 18 then - AddCaption(loc("Demolition is fun!")); - blowUp(2110,920) - blowUp(2210,920) - blowUp(2200,305) - blowUp(2300,305) - blowUp(2300,400) - blowUp(2300,500) - blowUp(2300,600) - blowUp(2300,700) - blowUp(2300,800) - blowUp(2300,900) - blowUp(2401,305) - blowUp(2532,305) - blowUp(2663,305) - spawnTarget(2300,760) - elseif score == 19 then - spawnTarget(2300,760) - elseif score == 20 then - spawnTarget(2738,190) - elseif score == 21 then - spawnTarget(2590,-100) - elseif score == 22 then - AddCaption(loc("Will this ever end?")); - blowUp(2790,305) - blowUp(2930,305) - blowUp(3060,305) - blowUp(3190,305) - blowUp(3310,305) - blowUp(3393,613) - blowUp(2805,370) - blowUp(2805,500) - blowUp(2805,630) - blowUp(2805,760) - blowUp(2805,890) - blowUp(3258,370) - blowUp(3258,475) - blowUp(3264,575) - spawnTarget(3230,240) - elseif score == 23 then - spawnTarget(3230,290) - elseif score == 24 then - spawnTarget(3670,250) - elseif score == 25 then - spawnTarget(2620,-100) - elseif score == 26 then - spawnTarget(2870,300) - elseif score == 27 then - spawnTarget(3850,900) - elseif score == 28 then - spawnTarget(3780,300) - elseif score == 29 then - spawnTarget(3670,0) - elseif score == 30 then - AddCaption(loc("Last Target!")); - spawnTarget(3480,1200) - end - else - if not game_lost then - -- Otherwise show that the goal was accomplished - ShowMission(loc("Sniper Training"), loc("Aiming Practice"), loc("Congratulations! You've eliminated all targets|within the allowed time frame."), 0, 0) - -- Also let the hogs shout "victory!" - PlaySound(sndVictory) - -- Save the time left so we may keep it. - time_goal = TurnTimeLeft - end - end - end -end - --- This function calculates the final score of the player and provides some texts and --- data for the final stats screen -function generateStats() - local accuracy = (score/shots)*100 - local end_score_targets = (score * 200) - local end_score_overall - if not game_lost then - local end_score_time = math.ceil(time_goal/5) - local end_score_accuracy = math.ceil(accuracy * 100) - end_score_overall = end_score_time + end_score_targets + end_score_accuracy - - SendStat(siGameResult, loc("You have successfully finished the sniper rifle training!")) - SendStat(siCustomAchievement, string.format(loc("You have destroyed %d of %d targets (+%d points)."), score, score_goal, end_score_targets)) - SendStat(siCustomAchievement, string.format(loc("You have made %d shots."), shots)) - SendStat(siCustomAchievement, string.format(loc("Accuracy bonus: +%d points"), end_score_accuracy)) - SendStat(siCustomAchievement, string.format(loc("You had %.2fs remaining on the clock (+%d points)."), (time_goal/1000), end_score_time)) - else - SendStat(siGameResult, loc("You lose!")) - - SendStat(siCustomAchievement, string.format(loc("You have destroyed %d of %d targets (+%d points)."), score, score_goal, end_score_targets)) - SendStat(siCustomAchievement, string.format(loc("You have made %d shots."), shots)) - end_score_overall = end_score_targets - end - SendStat(siPlayerKills, tostring(end_score_overall), loc("Sniperz")) - SendStat(siPointType, loc("points")) -end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/Challenge_-_Speed_Shoppa_-_Hedgelove.lua --- a/share/hedgewars/Data/Missions/Training/Challenge_-_Speed_Shoppa_-_Hedgelove.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -HedgewarsScriptLoad("/Scripts/SpeedShoppa.lua") - -local params = {} -params.missionTitle = loc("Shoppa Love") -params.teamName = loc("Team of Hearts") -params.hogName = loc("Heartful") -params.teamFlag = "cm_iluvu" -params.teamGrave = "heart" -params.hogHat = "pinksunhat" -params.crateType = "health" -params.faceLeft = true - -params.time = 45000 -params.map = "Hedgelove" -params.theme = "Nature" - -params.hog_x = 410 -params.hog_y = 934 -params.crates = { - { x = 183, y = 710 }, - { x = 202, y = 519 }, - { x = 336, y = 356 }, - { x = 658, y = 363 }, - { x = 1029, y = 39 }, - { x = 758, y = 879 }, - { x = 1324, y = 896 }, - { x = 1410, y = 390 }, - { x = 1746, y = 348 }, - { x = 1870, y = 538 }, - { x = 1884, y = 723 }, - { x = 1682, y = 970 }, -} -params.extra_onGameStart = function() - PlaceGirder(394, 1000, 0) - PlaceGirder(1696, 1000, 0) -end - -SpeedShoppaMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/Challenge_-_Speed_Shoppa_-_Ropes.lua --- a/share/hedgewars/Data/Missions/Training/Challenge_-_Speed_Shoppa_-_Ropes.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -HedgewarsScriptLoad("/Scripts/SpeedShoppa.lua") - -local params = {} -params.missionTitle = loc("Ropes and Crates") -params.teamName = loc("Shoppa Union") -params.hogName = loc("Hook") -params.teamFlag = "cm_shoppa" -params.hogHat = "NoHat" - -params.time = 115000 -params.map = "Ropes" -params.theme = "City" - -params.hog_x = 3754 -params.hog_y = 1742 -params.crates = { - { x = 3533, y = 1404 }, - { x = 3884, y = 1048 }, - { x = 3366, y = 664 }, - { x = 3162, y = 630 }, - { x = 2872, y = 402 }, - { x = 3812, y = 322 }, - { x = 3685, y = 34 }, - { x = 3324, y = 540 }, - { x = 2666, y = 224 }, - { x = 2380, y = 1002 }, - { x = 2224, y = 1008 }, - { x = 2226, y = 854 }, - { x = 3274, y = 1754 }, - { x = 3016, y = 1278 }, - { x = 2756, y = 1716 }, - { x = 2334, y = 1756 }, - { x = 1716, y = 1752 }, - { x = 1526, y = 1464 }, - { x = 356, y = 1734 }, - { x = 598, y = 1444 }, - { x = 1084, y = 1150 }, - { x = 358, y = 834 }, - { x = 936, y = 200 }, - { x = 1540, y = 514 }, -} - -SpeedShoppaMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/Challenge_-_Speed_Shoppa_-_ShoppaKing.lua --- a/share/hedgewars/Data/Missions/Training/Challenge_-_Speed_Shoppa_-_ShoppaKing.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -HedgewarsScriptLoad("/Scripts/SpeedShoppa.lua") - -local params = {} -params.missionTitle = loc("The Customer is King") -params.teamName = loc("Shoppa Union") -params.hogName = loc("King Customer") -params.teamFlag = "cm_shoppa" -params.teamGrave = "money" -params.hogHat = "crown" - -params.time = 160000 -params.map = "ShoppaKing" -params.theme = "Castle" - -params.hog_x = 543 -params.hog_y = 1167 -params.crates = { - { x = 170, y = 172 }, - { x = 216, y = 478 }, - { x = 616, y = 966 }, - { x = 291, y = 1898 }, - { x = 486, y = 1965 }, - { x = 852, y = 1289 }, - { x = 1224, y = 1625 }, - { x = 925, y = 584 }, - { x = 2013, y = 141 }, - { x = 2250, y = 351 }, - { x = 2250, y = 537 }, - { x = 2472, y = 513 }, - { x = 1974, y = 459 }, - { x = 1995, y = 1068 }, - { x = 2385, y = 1788 }, - { x = 1698, y = 1725 }, - { x = 2913, y = 1092 }, - { x = 3972, y = 1788 }, - { x = 3762, y = 1635 }, - { x = 2577, y = 1473 }, - { x = 3612, y = 1068 }, - { x = 3945, y = 687 }, - { x = 2883, y = 618 }, - { x = 3543, y = 471 }, - { x = 3636, y = 306 }, - { x = 3210, y = 321 }, - { x = 3426, y = 126 }, - { x = 3033, y = 1590 }, - { x = 3774, y = 1341 }, - { x = 1254, y = 297 }, - { x = 1300, y = 1022 }, - { x = 1410, y = 1292 }, - { x = 868, y = 1812 }, - { x = 3426, y = 954 }, -} - -SpeedShoppaMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/ClimbHome.lua --- a/share/hedgewars/Data/Missions/Training/ClimbHome.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -HedgewarsScriptLoad("/Scripts/Locale.lua") - -isSinglePlayer = true - --- trying to allow random theme, but fixed theme objects... --- Also skip some ugly themes, or ones where the sky is "meh" ---local themes = { "Art","Cake","City","EarthRise","Halloween","Olympics","Underwater","Bamboo","Castle","Compost","Eyes","Hell","Planes","Bath","Cave","CrazyMission","Freeway","Island","Sheep","Blox","Cheese","Deepspace","Fruit","Jungle","Snow","Brick","Christmas","Desert","Golf","Nature","Stage" } -local themes = {"Christmas","Hell","Bamboo","City","Island","Bath","Compost","Jungle","Desert","Nature","Olympics","Brick","EarthRise","Sheep","Cake","Freeway","Snow","Castle","Fruit","Stage","Cave","Golf","Cheese","Halloween"} -local totalHedgehogs = 0 -local HH = {} -local teams = {} -local dummyHog = nil - - -function onGameInit() - -- Ensure people get same map for same theme - Theme = themes[GetRandom(#themes)+1] - Seed = ClimbHome - TurnTime = 999999999 - EnableGameFlags(gfOneClanMode) - DisableGameFlags(gfBottomBorder+gfBorder) - CaseFreq = 0 - Explosives = 0 - MineDudPercent = 0 - Map = "ClimbHome" - AddTeam(loc("Lonely Hog"), 0xDD0000, "Simple", "Island", "Default") - player = AddHog(loc("Climber"), 0, 1, "NoHat") - if showWaterStats then - dummyHog = AddHog(" ", 0, 1, "NoHat") - HH[dummyHog] = nil - totalHedgehogs = totalHedgehogs - 1 - SendStat(siClanHealth, tostring(32640), " ") - end -end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/Target_Practice_-_Bazooka_easy.lua --- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Bazooka_easy.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -HedgewarsScriptLoad("/Scripts/TargetPractice.lua") - -local params = { - ammoType = amBazooka, - gearType = gtShell, - missionTitle = loc("Target Practice: Bazooka (easy)"), - wind = 50, - solidLand = true, - map = "Lonely_Island", - theme = "Island", - hog_x = 1439, - hog_y = 482, - hogName = loc("Zook"), - hogHat = "war_americanww2helmet", - teamName = loc("Team Zook"), - targets = { - { x = 1310, y = 756 }, - { x = 1281, y = 893 }, - { x = 1376, y = 670 }, - { x = 1725, y = 907 }, - { x = 1971, y = 914 }, - { x = 1098, y = 955 }, - { x = 1009, y = 877 }, - { x = 930, y = 711 }, - { x = 771, y = 744 }, - { x = 385, y = 405 }, - { x = 442, y = 780 }, - { x = 620, y = 639 }, - { x = 311, y = 239 }, - }, - time = 80000, - shootText = loc("You have launched %d bazookas."), -} - -TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/Target_Practice_-_Bazooka_hard.lua --- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Bazooka_hard.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -HedgewarsScriptLoad("/Scripts/TargetPractice.lua") - -local params = { - ammoType = amBazooka, - gearType = gtShell, - missionTitle = loc("Target Practice: Bazooka (hard)"), - wind = 20, - solidLand = true, - artillery = true, - map = "SB_Grassy", - theme = "Castle", - hog_x = 2112, - hog_y = 913, - hogName = loc("Zook"), - hogHat = "war_americanww2helmet", - teamName = loc("Team Zook"), - targets = { - { x = 2660, y = 936 }, - { x = 2857, y = 629 }, - { x = 3044, y = 851 }, - { x = 3200, y = 441 }, - { x = 2931, y = 440 }, - { x = 3264, y = 370 }, - { x = 1880, y = 684 }, - { x = 1392, y = 672 }, - { x = 1587, y = 656 }, - { x = 1300, y = 840 }, - { x = 952, y = 814 }, - { x = 862, y = 634 }, - { x = 748, y = 794 }, - { x = 639, y = 548 }, - { x = 1730, y = 549 }, - { x = 1466, y = 566 }, - { x = 3716, y = 954 }, - }, - time = 180000, - shootText = loc("You have launched %d bazookas."), -} - -TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/Target_Practice_-_Cluster_Bomb.lua --- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Cluster_Bomb.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -HedgewarsScriptLoad("/Scripts/TargetPractice.lua") - -local params = { - ammoType = amClusterBomb, - gearType = gtClusterBomb, - missionTitle = loc("Cluster Bomb Training"), - solidLand = false, - map = "Trash", - theme = "Golf", - hog_x = 756, - hog_y = 370, - hogName = loc("Private Nolak"), - hogHat = "war_desertgrenadier1", - teamName = loc("The Hogies"), - targets = { - { x = 628, y = 0 }, - { x = 891, y = 0 }, - { x = 1309, y = 0 }, - { x = 1128, y = 0 }, - { x = 410, y = 0 }, - { x = 1564, y = 0 }, - { x = 1248, y = 476 }, - { x = 169, y = 0 }, - { x = 1720, y = 0 }, - { x = 1441, y = 0 }, - { x = 599, y = 0 }, - { x = 1638, y = 0 }, - }, - time = 180000, - shootText = loc("You have thrown %d cluster bombs."), -} - -TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/Target_Practice_-_Grenade_easy.lua --- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Grenade_easy.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -HedgewarsScriptLoad("/Scripts/TargetPractice.lua") - -local params = { - ammoType = amGrenade, - gearType = gtGrenade, - missionTitle = loc("Target Practice: Grenade (easy)"), - solidLand = true, - artillery = true, - map = "SB_Crystal", - theme = "Cave", - hog_x = 2039, - hog_y = 684, - hogName = loc("Grenadier"), - hogHat = "war_desertgrenadier2", - teamName = loc("Grenade Group"), - targets = { - { x = 1834, y = 747 }, - { x = 2308, y = 729 }, - { x = 1659, y = 718 }, - { x = 1196, y = 704 }, - { x = 2650, y = 826 }, - { x = 1450, y = 705 }, - { x = 2774, y = 848 }, - { x = 2970, y = 704 }, - }, - time = 80000, - shootText = loc("You have thrown %d grenades."), -} - -TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/Target_Practice_-_Grenade_hard.lua --- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Grenade_hard.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -HedgewarsScriptLoad("/Scripts/TargetPractice.lua") - -local params = { - ammoType = amGrenade, - gearType = gtGrenade, - missionTitle = loc("Target Practice: Grenade (hard)"), - solidLand = true, - artillery = true, - map = "SB_Crystal", - theme = "Cave", - hog_x = 1456, - hog_y = 669, - hogName = loc("Grenadier"), - hogHat = "war_desertgrenadier2", - teamName = loc("Grenade Group"), - targets = { - { x = 1190, y = 694 }, - { x = 962, y = 680 }, - { x = 1090, y = 489 }, - { x = 1664, y = 666 }, - { x = 1584, y = 580 }, - { x = 2160, y = 738 }, - { x = 1836, y = 726 }, - { x = 618, y = 753 }, - { x = 837, y = 668 }, - { x = 2424, y = 405 }, - { x = 2310, y = 742 }, - { x = 294, y = 897 }, - { x = 472, y = 855 }, - { x = 2949, y = 724}, - { x = 3356, y = 926 }, - { x = 3734, y = 918 }, - { x = 170, y = 874 }, - - - }, - time = 180000, - shootText = loc("You have thrown %d grenades."), -} - -TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/Target_Practice_-_Homing_Bee.lua --- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Homing_Bee.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -HedgewarsScriptLoad("/Scripts/TargetPractice.lua") - -local params = { - ammoType = amBee, - gearType = gtBee, - missionTitle = loc("Target Practice: Homing Bee"), - solidLand = true, - map = "Hedgewars", - theme = "Nature", - hog_x = 1990, - hog_y = 514, - hogHat = "NoHat", - teamGrave = "bp2", - targets = { - { x = 1949, y = 273 }, - { x = 1734, y = 322 }, - { x = 1574, y = 340 }, - { x = 1642, y = 474 }, - { x = 2006, y = 356 }, - { x = 1104, y = 285 }, - { x = 565, y = 440 }, - { x = 732, y = 350 }, - { x = 2022, y = 396 }, - { x = 366, y = 360 }, - { x = 556, y = 300 }, - { x = 902, y = 306 }, - { x = 924, y = 411 }, - { x = 227, y = 510 }, - { x = 150, y = 300 }, - }, - time = 120000, - shootText = loc("You have launched %d homing bees."), -} - -TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/Target_Practice_-_Shotgun.lua --- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Shotgun.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -HedgewarsScriptLoad("/Scripts/TargetPractice.lua") - -local params = { - ammoType = amShotgun, - gearType = gtShotgunShot, - missionTitle = loc("Target Practice: Shotgun"), - solidLand = false, - map = "SB_Haunty", - theme = "Halloween", - hog_x = 320, - hog_y = 324, - hogHat = "NoHat", - hogGrave = "Bones", - targets = { - { x = 495, y = 501 }, - { x = 227, y = 530 }, - { x = 835, y = 934 }, - { x = 1075, y = 889 }, - { x = 887, y = 915 }, - { x = 1148, y = 750 }, - { x = 916, y = 915 }, - { x = 1211, y = 700 }, - { x = 443, y = 505 }, - { x = 822, y = 964 }, - { x = 1092, y = 819 }, - { x = 1301, y = 683 }, - { x = 1480, y = 661 }, - { x = 1492, y = 786 }, - { x = 1605, y = 562 }, - { x = 1545, y = 466 }, - { x = 1654, y = 392 }, - { x = 1580, y = 334 }, - { x = 1730, y = 222 }, - }, - time = 90000, -} - -TargetPracticeMission(params) diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/User_Mission_-_Bamboo_Thicket.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Bamboo_Thicket.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ - -HedgewarsScriptLoad("/Scripts/Locale.lua") - -local player = nil -local enemy = nil -local firedShell = false -local turnNumber = 0 - -local hhs = {} -local numhhs = 0 - -function onGameInit() - - Seed = 0 - TurnTime = 20000 - CaseFreq = 0 - MinesNum = 0 - Explosives = 0 - Map = "Bamboo" - Theme = "Bamboo" - SuddenDeathTurns = 99999 - - AddTeam(loc("Pathetic Resistance"), 14483456, "Simple", "Island", "Default") - player = AddHog(loc("Ikeda"), 0, 10, "StrawHat") - - AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Default") - enemy = AddHog(loc("Unit 835"), 1, 10, "cyborg1") - - SetGearPosition(player,142,656) - SetGearPosition(enemy,1824,419) - -end - - -function onGameStart() - - ShowMission(loc("Bamboo Thicket"), loc("User Challenge"), loc("Eliminate the enemy before the time runs out"), -amBazooka, 0) - - --WEAPON CRATE LIST. WCRATES: 1 - SpawnAmmoCrate(891,852,amBazooka) - --UTILITY CRATE LIST. UCRATES: 2 - SpawnUtilityCrate(962,117,amBlowTorch) - SpawnUtilityCrate(403,503,amParachute) - - AddAmmo(enemy, amGrenade, 100) - -end - -function onNewTurn() - SetWind(100) - turnNumber = turnNumber + 1 -end - -function onAmmoStoreInit() - SetAmmo(amSkip, 9, 0, 0, 0) - SetAmmo(amGirder, 4, 0, 0, 0) - SetAmmo(amBlowTorch, 0, 0, 0, 1) - SetAmmo(amParachute, 0, 0, 0, 2) - SetAmmo(amBazooka, 0, 0, 0, 2) -end - - -function onGearAdd(gear) - - if GetGearType(gear) == gtHedgehog then - hhs[numhhs] = gear - numhhs = numhhs + 1 - elseif GetGearType(gear) == gtShell then - firedShell = true - end - -end - -function onGearDelete(gear) - - if (gear == enemy) then - - ShowMission(loc("Bamboo Thicket"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) - - if (turnNumber < 6) and (firedShell == false) then - AddCaption(loc("Achievement Unlocked") .. ": " .. loc("Energetic Engineer"),0xffba00ff,capgrpMessage2) - end - - elseif gear == player then - ShowMission(loc("Bamboo Thicket"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) - end - -end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/User_Mission_-_Dangerous_Ducklings.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Dangerous_Ducklings.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,148 +0,0 @@ - -HedgewarsScriptLoad("/Scripts/Locale.lua") - -local player = nil -- This variable will point to the hog's gear -local instructor = nil -local enemy = nil - -local speechStage = 0 - -local gameLost = false -local gameWon = false -local notListening = false - -local endTimer = 0 - -function onGameInit() - - -- Things we don't modify here will use their default values. - - Seed = 0 -- The base number for the random number generator - GameFlags = gfInfAttack -- Game settings and rules - TurnTime = 60000 -- The time the player has to move each round (in ms) - CaseFreq = 0 -- The frequency of crate drops - MinesNum = 0 -- The number of mines being placed - Explosives = 0 -- The number of explosives being placed - Delay = 0 -- The delay between each round - Map = "Bath" -- The map to be played - Theme = "Bath" -- The theme to be used - SuddenDeathTurns = 99999 - - - AddTeam(loc("Bloody Rookies"), 14483456, "Simple", "Island", "Default") - player = AddHog(loc("Hunter"), 0, 1, "NoHat") - instructor = AddHog(loc("Instructor"), 0, 100, "sf_vega") - - AddTeam(loc("Blue Team"), 29439, "Simple", "Island", "Default") - enemy = AddHog(loc("Filthy Blue"), 1, 100, "Skull") - - SetGearPosition(player,146,902) - SetGearPosition(instructor,317,902) - SetGearPosition(enemy,1918,837) - - HogSay(player, ".............................", SAY_THINK) - HogTurnLeft(instructor, true) - -end - - -function onGameStart() - - SpawnAmmoCrate(475,476,amRope) - SpawnAmmoCrate(1729,476,amFirePunch) - - FollowGear(player) - - ShowMission(loc("Dangerous Ducklings"), "", loc("Eliminate the Blue Team"), -amRope, 5000); - -end - - -function onGameTick() - - - -- opening speech - if (notListening == false) and (gameLost == false) then - - if (TurnTimeLeft == 58000) and (speechStage == 0) then - HogSay(instructor, loc("Listen up, maggot!!"), SAY_SHOUT) - speechStage = 1 - elseif (TurnTimeLeft == 57000) and (speechStage == 1) then - HogSay(player,loc("!!!"),SAY_SHOUT) - elseif (TurnTimeLeft == 55000) and (speechStage == 1) then - HogSay(instructor, loc("The enemy is hiding out on yonder ducky!"), SAY_SAY) - speechStage = 2 - - elseif (TurnTimeLeft == 49000) and (speechStage == 2) then - FollowGear(enemy) - elseif (TurnTimeLeft == 46500) and (speechStage == 2) then - FollowGear(instructor) - HogSay(instructor, loc("Get on over there and take him out!"), SAY_SAY) - speechStage = 3 - elseif (TurnTimeLeft == 43500) and (speechStage == 3) then - HogSay(instructor, loc("GO! GO! GO!"), SAY_SHOUT) - speechStage = 4 - givenSpeech = true - end - - end - - -- if player falls in water or if player ignores speech - if (CurrentHedgehog ~= nil) and (CurrentHedgehog == player) then - if (GetY(player) > WaterLine) and (gameLost == false) then - HogSay(instructor, loc("DAMMIT, ROOKIE!"), SAY_SHOUT) - gameLost = true - end - - if (GetX(player) > 300) and (GetY(player) > 880) and (notListening == false) and (speechStage < 3) then - HogSay(instructor, loc("DAMMIT, ROOKIE! GET OFF MY HEAD!"), SAY_SHOUT) - notListening = true - end - - end - - --player out of time - if (TurnTimeLeft == 1) and (gameWon == false) then - SetHealth(player, 0) - end - - -- meh - if gameLost == true then - endTimer = endTimer + 1 - if (CurrentHedgehog ~= nil) and (CurrentHedgehog == instructor) then - if endTimer >= 3000 then - --SetHealth(instructor,0) - TurnTimeLeft = 1 - DismissTeam(loc("Bloody Rookies")) - end - ShowMission(loc("MISSION FAILED"), loc(":("), loc("You've failed. Try again."), -amRope, 5000); - end - end - -end - - -function onAmmoStoreInit() - SetAmmo(amFirePunch, 0, 0, 0, 1) - SetAmmo(amParachute, 1, 0, 0, 0) - SetAmmo(amRope, 0, 0, 0, 1) -end - -function onGearDelete(gear) - if GetGearType(gear) == gtHedgehog then - if gear == player then - gameLost = true - elseif (gear == instructor) and (GetY(gear) > WaterLine) then - HogSay(player, loc("See ya!"), SAY_THINK) - TurnTimeLeft = 3000 - AddCaption(loc("Achievement Unlocked") .. ": " .. loc("Naughty Ninja"),0xffba00ff,capgrpMessage2) - DismissTeam(loc("Blue Team")) - gameWon = true - elseif gear == enemy then - HogSay(player, loc("Enjoy the swim..."), SAY_THINK) - gameWon = true - TurnTimeLeft = 3000 - end - - end -end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ - -HedgewarsScriptLoad("/Scripts/Locale.lua") - -local player = nil -- This variable will point to the hog's gear -local enemy = nil - -local GameOver = false - -function onGameInit() - - -- Things we don't modify here will use their default values. - - Seed = 0 -- The base number for the random number generator - GameFlags = gfInfAttack + gfDisableWind-- Game settings and rules - TurnTime = 90000 -- The time the player has to move each round (in ms) - CaseFreq = 0 -- The frequency of crate drops - MinesNum = 0 -- The number of mines being placed - MinesTime = 1000 - Explosives = 0 -- The number of explosives being placed - Delay = 10 -- The delay between each round - Map = "Hydrant" -- The map to be played - Theme = "City" -- The theme to be used - SuddenDeathTurns = 99999 - - AddTeam(loc("Bloody Rookies"), 14483456, "Simple", "Island", "Default") - player = AddHog(loc("Hunter"), 0, 1, "NoHat") - - AddTeam(loc("Toxic Team"), 1175851, "Simple", "Island", "Default") - enemy = AddHog(loc("Poison"), 1, 100, "Skull") - - SetGearPosition(player,430,516) - SetGearPosition(enemy,1464,936) - -end - - -function onGameStart() - - - SpawnAmmoCrate(426,886,amJetpack) - SpawnAmmoCrate(1544,690,amFirePunch) - SpawnAmmoCrate(950,851,amBlowTorch) - SpawnAmmoCrate(1032,853,amParachute) - - AddGear(579, 296, gtMine, 0, 0, 0, 0) - - ShowMission(loc("Operation Diver"), "", loc("Eliminate Poison before the time runs out") .. loc("|- Mines Time:") .. " " .. 1 .. " " .. loc("sec"), -amFirePunch, 0); - --SetTag(AddGear(0, 0, gtATSmoothWindCh, 0, 0, 0, 1), -70) - - SetWind(-100) - -end - - -function onGameTick() - - - if (TotalRounds == 3) and (GameOver == false) then - SetHealth(player, 0) - GameOver = true - end - - if TurnTimeLeft == 1 then - SetHealth(player, 0) - GameOver = true - end - -end - - -function onAmmoStoreInit() - SetAmmo(amFirePunch, 1, 0, 0, 1) - SetAmmo(amBlowTorch, 0, 0, 0, 1) - SetAmmo(amGirder, 1, 0, 0, 0) - SetAmmo(amParachute, 0, 0, 0, 1) - SetAmmo(amJetpack, 0, 0, 0, 1) -end - - -function onGearAdd(gear) - - if GetGearType(gear) == gtJetpack then - SetHealth(gear,1000) - end - -end - -function onGearDelete(gear) - - if (gear == enemy) and (GameOver == false) then - ShowMission(loc("Operation Diver"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) - elseif gear == player then - ShowMission(loc("Operation Diver"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) - GameOver = true - end - -end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/User_Mission_-_Newton_and_the_Hammock.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Newton_and_the_Hammock.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,132 +0,0 @@ - -HedgewarsScriptLoad("/Scripts/Locale.lua") - -local player = nil -local enemy = nil -local failed = false - -local hhs = {} -local numhhs = 0 - -function onGameInit() - - Seed = 0 - TurnTime = 60000 - CaseFreq = 0 - MinesTime = 1000 - SuddenDeathTurns = 999999 - HealthCaseProb = 35 - Explosives = 0 - MinesNum = 0 - Map = "Hammock" - Theme = "Nature" - - AddTeam(loc("Pathetic Resistance"), 14483456, "Simple", "Island", "Default") - player = AddHog(loc("Ikeda"), 0, 48, "StrawHat") - - AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Default") - enemy = AddHog(loc("Unit") .. " 811", 1, 100, "cyborg1") - - SetGearPosition(player,430,1540) - SetGearPosition(enemy,1464,1960) - -end - - -function onGameStart() - - AddAmmo(enemy, amShotgun, 100) - AddAmmo(enemy, amFirePunch, 100) - - --GIRDER LIST. - PlaceGirder(1073,2009,0) - PlaceGirder(524,1487,3) - PlaceGirder(638,1453,4) - PlaceGirder(761,1453,0) - PlaceGirder(840,1421,3) - PlaceGirder(302,1388,6) - PlaceGirder(327,1506,1) - PlaceGirder(1669,1832,3) - --MINE LIST. - AddGear(1056,1987,gtMine, 0, 0, 0, 0) - AddGear(1086,1988,gtMine, 0, 0, 0, 0) - --STICKY MINE LIST. - AddGear(1089,965,gtSMine, 0, 0, 0, 0) - AddGear(1133,945,gtSMine, 0, 0, 0, 0) - AddGear(1010,1081,gtSMine, 0, 0, 0, 0) - AddGear(1036,1049,gtSMine, 0, 0, 0, 0) - AddGear(1057,1004,gtSMine, 0, 0, 0, 0) - AddGear(784,1252,gtSMine, 0, 0, 0, 0) - AddGear(841,1257,gtSMine, 0, 0, 0, 0) - AddGear(902,1263,gtSMine, 0, 0, 0, 0) - AddGear(952,1281,gtSMine, 0, 0, 0, 0) - AddGear(517,1546,gtSMine, 0, 0, 0, 0) - AddGear(559,1597,gtSMine, 0, 0, 0, 0) - AddGear(613,1650,gtSMine, 0, 0, 0, 0) - AddGear(674,1705,gtSMine, 0, 0, 0, 0) - AddGear(746,1692,gtSMine, 0, 0, 0, 0) - AddGear(810,1692,gtSMine, 0, 0, 0, 0) - AddGear(872,1673,gtSMine, 0, 0, 0, 0) - AddGear(933,1666,gtSMine, 0, 0, 0, 0) - AddGear(981,1662,gtSMine, 0, 0, 0, 0) - AddGear(1016,1634,gtSMine, 0, 0, 0, 0) - AddGear(1063,1595,gtSMine, 0, 0, 0, 0) - AddGear(1100,1574,gtSMine, 0, 0, 0, 0) - AddGear(1002,1461,gtSMine, 0, 0, 0, 0) - AddGear(1052,1438,gtSMine, 0, 0, 0, 0) - AddGear(1102,1464,gtSMine, 0, 0, 0, 0) - --WEAPON CRATE LIST. - SpawnAmmoCrate(1565,642,amSineGun) - SpawnAmmoCrate(548,858,amBazooka) - --UTILITY CRATE LIST. - SpawnUtilityCrate(479,847,amJetpack) - SpawnUtilityCrate(1550,1715,amBlowTorch) - SpawnUtilityCrate(1227,1941,amJetpack) - SpawnUtilityCrate(1070,1964,amInvulnerable) - SpawnUtilityCrate(1070,1875,amTeleport) - --HOG POSITION LIST. - if hhs[0] ~= nil then - SetGearPosition(hhs[0],397,865) - end - if hhs[1] ~= nil then - SetGearPosition(hhs[1],561,1365) - end - - ShowMission(loc("Newton's Hammock"), loc("User Challenge"), loc("Eliminate the enemy before the time runs out"), -amParachute, 0) - -end - -function onAmmoStoreInit() - SetAmmo(amSkip, 9, 0, 0, 1) - SetAmmo(amBazooka, 0, 0, 0, 1) - SetAmmo(amJetpack, 0, 0, 0, 1) - SetAmmo(amTeleport, 0, 0, 0, 1) - SetAmmo(amSineGun, 0, 0, 0, 1) - SetAmmo(amInvulnerable, 0, 0, 0, 1) - SetAmmo(amBlowTorch, 0, 0, 0, 1) -end - -function onGearDamage(gear, damage) - if (gear == player) and (damage >= 48) then - failed = true - end -end - -function onGearAdd(gear) - - if GetGearType(gear) == gtHedgehog then - hhs[numhhs] = gear - numhhs = numhhs + 1 - end - -end - -function onGearDelete(gear) - - if (gear == enemy) and (failed == false) then - ShowMission(loc("Newton's Hammock"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) - elseif gear == player then - ShowMission(loc("Newton's Hammock"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) - end - -end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/User_Mission_-_Nobody_Laugh.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Nobody_Laugh.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ --------------------------------------- --- NOBODY LAUGH --- a hilarious (not really) adventure --------------------------------------- - -HedgewarsScriptLoad("/Scripts/Locale.lua") -HedgewarsScriptLoad("/Scripts/Tracker.lua") - -local hhs = {} - -function onGameInit() - - Seed = 0 - GameFlags = gfInfAttack + gfPerHogAmmo +gfDisableWind - SuddenDeathTurns = 9999 - TurnTime = 180000 - CaseFreq = 0 - MinesNum = 0 - Explosives = 0 - Map = "Bath" - Theme = "Nature" - - AddTeam(loc("Nameless Heroes"), 14483456, "eyecross", "Wood", "HillBilly", "cm_birdy") - hhs[1] = AddHog(loc( "Hunter" ), 0, 1, "Skull") - SetGearPosition(hhs[1], 1267, 451) - hhs[2] = AddHog(loc("Drowner"), 0, 31, "mp3") - SetGearPosition(hhs[2], 1332, 451) - - AddTeam(loc("Clowns"), 1175851, "Duck2", "Tank", "Mobster", "cm_spider") - hhs[3] = AddHog(loc("Poison"), 5, 100, "WhySoSerious") - SetGearPosition(hhs[3], 1133, 446) - hhs[4] = AddHog(loc("Bobo"), 5, 100, "clown") - SetGearPosition(hhs[4], 1215, 553) - hhs[5] = AddHog(loc("Copper"), 5, 10, "clown-copper") - SetGearPosition(hhs[5], 414, 376) - hhs[6] = AddHog(loc("Derp"), 5, 100, "clown-crossed") - SetGearPosition(hhs[6], 1590, 886) - hhs[7] = AddHog(loc("Eckles"), 5, 100, "clown-copper") - SetGearPosition(hhs[7], 772, 754) - hhs[8] = AddHog(loc("Frank"), 5, 50, "clown-copper") - SetGearPosition(hhs[8], 1688, 714) - hhs[9] = AddHog(loc("Harry"), 5, 50, "clown-copper") - SetGearPosition(hhs[9], 1932, 837) - hhs[10] = AddHog(loc("Igmund"), 5, 50, "WhySoSerious") - SetGearPosition(hhs[10], 1601, 733) - -end - -function onGameStart() - - AddAmmo(enemy, amAirAttack, 100) - - ShowMission( loc("Nobody Laugh"), - loc("User Challenge"), - loc("Eliminate the enemy before the time runs out") - , 0, 0 - ) - - -- GIRDERS - PlaceGirder(1212, 710, 7) - PlaceGirder(1215, 570, 4) - PlaceGirder(1288, 520, 2) - PlaceGirder(1184, 468, 4) - PlaceGirder(1344, 468, 4) - PlaceGirder(1247, 346, 4) - - PlaceGirder(667, 438, 4) - PlaceGirder(507, 438, 4) - PlaceGirder(434, 487, 2) - PlaceGirder(505, 537, 4) - PlaceGirder(665, 537, 4) - PlaceGirder(737, 487, 2) - - PlaceGirder(416, 465, 6) - PlaceGirder(1415, 378, 6) - PlaceGirder(1300, 625, 3) - PlaceGirder(1359, 566, 3) - PlaceGirder(1436, 538, 0) - PlaceGirder(1505, 468, 4) - - ------ AMMO CRATE LIST ------ - tempG = SpawnAmmoCrate(1242, 315, amBaseballBat) - tempG = SpawnAmmoCrate(1309, 315, amAirAttack) - tempG = SpawnAmmoCrate(144, 895, amAirAttack) - tempG = SpawnAmmoCrate(664, 699, amIceGun) - tempG = SpawnAmmoCrate(1572, 444, amFirePunch) - tempG = SpawnAmmoCrate(1574, 382, amDynamite) - - ------ UTIL CRATE LIST ------ - tempG = SpawnUtilityCrate(654, 513, amParachute) - tempG = SpawnUtilityCrate(1569, 413, amParachute) - - -- HOG AMMO - AddAmmo(hhs[1],amParachute,1) - AddAmmo(hhs[1],amHammer,1) - AddAmmo(hhs[2],amWhip,1) - - for i = 3, 10 do - AddAmmo(hhs[i], amDEagle, 100) - AddAmmo(hhs[i], amShotgun, 100) - AddAmmo(hhs[i], amGrenade, 100) - AddAmmo(hhs[i], amBazooka, 100) - AddAmmo(hhs[i], amDrill, 100) - end - -end - -function onNewTurn() - SetWind(100) -end - -function onAmmoStoreInit() - - SetAmmo(amBaseballBat, 0, 0, 0, 1) - SetAmmo(amAirAttack, 0, 0, 0, 1) - SetAmmo(amFirePunch, 0, 0, 0, 1) - SetAmmo(amDynamite, 0, 0, 0, 1) - SetAmmo(amHammer, 0, 0, 0, 1) - SetAmmo(amIceGun, 0, 0, 0, 1) - - SetAmmo(amParachute, 0, 0, 0, 1) - - SetAmmo(amSwitch, 9, 0, 0, 0) - SetAmmo(amSkip, 9, 0, 0, 0) - -end - ------------------------------- --- I'm in whitesppaaaaaaaaaacceeeee :D ------------------------------- diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/User_Mission_-_RCPlane_Challenge.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_RCPlane_Challenge.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,494 +0,0 @@ -HedgewarsScriptLoad("/Scripts/Locale.lua") - -local player = nil -local RCGear = nil -local planesUsed = 0 -local planeTimer = 0 -local planeUhOh = false -local cratesLeft = 0 -local crateStreak = 0 -local longestCrateStreak = 0 -local commentTimer = 0 -local missiles = 0 -local totalMissiles = 0 -local missileScanTimer = 0 -local nextComment = sndNone - -function onGameInit() - - Seed = 1 - GameFlags = gfInfAttack + gfInvulnerable + gfOneClanMode + gfSolidLand - - TurnTime = 90 * 1000 - - Map = "Ropes" - Theme = "Eyes" - - CaseFreq = 0 - MinesNum = 0 - Explosives = 0 - - AddTeam(loc("Wannabe Flyboys"), 14483456, "Simple", "Island", "Default", "Hedgewars") - player = AddHog(loc("Ace"), 0, 80, "Gasmask") - SetGearPosition(player, 1380, 1500) - -end - - - -function onGameStart() - - SendHealthStatsOff() - - ShowMission ( - loc("RC PLANE TRAINING"), - loc("a Hedgewars challenge"), - - loc("Collect or destroy all the health crates.") .. "|" .. - loc("Compete to use as few planes as possible!") .. "|" .. - "", -amRCPlane, 4000 - ) - - PlaceGirder(2192, 508, 6) - PlaceGirder(2192, 670, 6) - PlaceGirder(2193, 792, 2) - PlaceGirder(2100, 825, 4) - PlaceGirder(2009, 899, 6) - PlaceGirder(2084, 992, 4) - PlaceGirder(2145, 1087, 6) - PlaceGirder(2199, 1235, 5) - PlaceGirder(2308, 1296, 0) - PlaceGirder(2424, 1234, 7) - PlaceGirder(2473, 1129, 2) - PlaceGirder(2437, 1046, 1) - PlaceGirder(2409, 927, 6) - PlaceGirder(2408, 763, 6) - PlaceGirder(2404, 540, 6) - PlaceGirder(2426, 423, 3) - PlaceGirder(2550, 400, 4) - PlaceGirder(2668, 425, 1) - PlaceGirder(2707, 541, 6) - PlaceGirder(2706, 703, 6) - PlaceGirder(2705, 867, 6) - PlaceGirder(2779, 962, 4) - PlaceGirder(2894, 924, 3) - PlaceGirder(2908, 802, 6) - PlaceGirder(2907, 639, 6) - PlaceGirder(3052, 566, 4) - PlaceGirder(2971, 394, 4) - PlaceGirder(3103, 448, 7) - PlaceGirder(3047, 654, 0) - PlaceGirder(3043, 746, 6) - PlaceGirder(3265, 1583, 6) - PlaceGirder(3256, 1491, 4) - PlaceGirder(3187, 1401, 6) - PlaceGirder(3326, 1400, 6) - PlaceGirder(774, 530, 5) - PlaceGirder(922, 595, 4) - PlaceGirder(1079, 533, 7) - PlaceGirder(1139, 386, 6) - PlaceGirder(1074, 237, 5) - PlaceGirder(723, 381, 6) - PlaceGirder(781, 229, 7) - PlaceGirder(927, 746, 6) - PlaceGirder(874, 736, 0) - PlaceGirder(982, 737, 0) - PlaceGirder(2430, 1730, 4) - - PlaceGirder(1613, 1104, 7) - PlaceGirder(1564, 1256, 6) - PlaceGirder(1643, 1341, 5) - PlaceGirder(1780, 1372, 4) - PlaceGirder(1869, 1296, 7) - PlaceGirder(1858, 1163, 5) - PlaceGirder(1739, 1044, 5) - PlaceGirder(1621, 926, 5) - PlaceGirder(1597, 985, 5) - PlaceGirder(1449, 939, 4) - PlaceGirder(1473, 874, 4) - PlaceGirder(2092, 1352, 7) - PlaceGirder(2145, 1444, 7) - PlaceGirder(2004, 1443, 3) - PlaceGirder(1978, 1523, 2) - PlaceGirder(2021, 1596, 1) - PlaceGirder(2103, 1625, 0) - PlaceGirder(2208, 1551, 7) - PlaceGirder(2327, 1431, 7) - PlaceGirder(2395, 1478, 6) - PlaceGirder(2396, 1600, 2) - PlaceGirder(2495, 1285, 6) - PlaceGirder(2494, 1408, 2) - PlaceGirder(2547, 530, 0) - - PlaceGirder(2451, 1551, 0) - PlaceGirder(2551, 706, 6) - PlaceGirder(2551, 869, 6) - PlaceGirder(2623, 1016, 5) - PlaceGirder(2773, 1083, 4) - PlaceGirder(2924, 1019, 7) - PlaceGirder(2568, 1491, 7) - PlaceGirder(2618, 1346, 6) - PlaceGirder(2674, 1195, 7) - PlaceGirder(2822, 1142, 4) - PlaceGirder(2963, 1069, 7) - PlaceGirder(3067, 938, 5) - PlaceGirder(2803, 1373, 2) - PlaceGirder(2811, 1559, 2) - - tempG = SpawnHealthCrate(930, 557) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(979, 692) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(876, 703) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2309, 1260) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1733, 1127) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1738, 1320) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3249, 1460) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3051, 617) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2972, 353) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2548, 358) - - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2090, 1580) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1752, 1753) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1865, 1758) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1985, 1760) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2429, 1760) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2810, 1480) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2800, 1277) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2806, 1107) - SetHealth(tempG, 25) - - PlaceGirder(1897, 903, 6) - PlaceGirder(1916, 784, 3) - PlaceGirder(2010, 732, 4) - PlaceGirder(2082, 639, 6) - PlaceGirder(2081, 516, 2) - PlaceGirder(1985, 487, 4) - PlaceGirder(1862, 407, 5) - PlaceGirder(1855, 224, 7) - PlaceGirder(2006, 163, 4) - PlaceGirder(2128, 187, 1) - PlaceGirder(2251, 213, 4) - PlaceGirder(2413, 213, 4) - PlaceGirder(1952, 618, 0) - PlaceGirder(957, 1068, 4) - PlaceGirder(794, 1069, 4) - PlaceGirder(728, 1163, 6) - PlaceGirder(728, 1287, 2) - PlaceGirder(802, 1342, 4) - PlaceGirder(966, 1342, 4) - PlaceGirder(674, 1032, 1) - PlaceGirder(554, 1011, 4) - PlaceGirder(445, 1056, 3) - PlaceGirder(422, 1174, 6) - PlaceGirder(369, 1341, 5) - PlaceGirder(495, 1313, 5) - PlaceGirder(568, 1379, 3) - PlaceGirder(577, 1202, 2) - PlaceGirder(744, 1490, 5) - PlaceGirder(760, 1617, 7) - PlaceGirder(622, 1693, 4) - PlaceGirder(476, 1623, 5) - PlaceGirder(376, 1697, 1) - PlaceGirder(955, 1746, 2) - PlaceGirder(1025, 1746, 2) - PlaceGirder(1090, 1745, 2) - PlaceGirder(1156, 1746, 2) - PlaceGirder(3806, 1530, 2) - PlaceGirder(3880, 1464, 2) - PlaceGirder(3738, 1458, 2) - PlaceGirder(3806, 1390, 2) - PlaceGirder(3805, 1588, 0) - PlaceGirder(3676, 1609, 3) - PlaceGirder(3930, 1615, 1) - PlaceGirder(3719, 1295, 0) - PlaceGirder(3888, 1294, 0) - PlaceGirder(3661, 1385, 2) - PlaceGirder(3955, 1377, 2) - PlaceGirder(3982, 1518, 0) - PlaceGirder(3378, 440, 2) - PlaceGirder(3447, 492, 4) - PlaceGirder(3564, 529, 1) - PlaceGirder(3596, 647, 6) - PlaceGirder(3521, 740, 4) - PlaceGirder(3524, 838, 4) - PlaceGirder(3644, 819, 3) - PlaceGirder(3691, 708, 6) - PlaceGirder(3690, 545, 6) - PlaceGirder(3612, 433, 5) - PlaceGirder(3463, 383, 4) - PlaceGirder(2815, 122, 7) - PlaceGirder(2960, 72, 4) - PlaceGirder(3032, 123, 2) - PlaceGirder(3063, 174, 0) - PlaceGirder(3095, 124, 2) - PlaceGirder(3169, 71, 4) - PlaceGirder(3320, 124, 5) - PlaceGirder(3210, 179, 2) - PlaceGirder(2932, 181, 2) - - tempG = SpawnHealthCrate(3804, 1461) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3269, 1742) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3066, 121) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3207, 104) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2928, 103) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1997, 202) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2253, 159) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2132, 774) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2549, 490) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3527, 694) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3777, 78) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1124, 1746) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1056, 1740) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(993, 1742) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(799, 1298) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(577, 1126) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(596, 1463) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3854, 1043) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1944, 567) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(338, 1748) - SetHealth(tempG, 25) - - -end - ---function onGameTick() - - --if RCGear ~= nil then - -- AddCaption(GetTimer(RCGear)) - --end - ---end - -function onGameTick20() - if RCGear ~= nil then - if(GetTimer(RCGear) < 3000 and planeUhOh == false) then - PlaySound(sndUhOh, player) - planeUhOh = true - end - planeTimer = planeTimer + 20 - end - if commentTimer > 0 then - commentTimer = commentTimer - 20 - elseif(nextComment ~= sndNone) then - PlaySound(nextComment, player) - nextComment = sndNone - end - if missileScanTimer > 0 then - missileScanTimer = missileScanTimer - 20 - else - if crateStreak == 0 and missiles == 3 then - PlaySound(sndMissed, player) - missiles = 4 - end - end -end - -function onNewTurn() - TurnTimeLeft = -1 -end - -function onGearAdd(gear) - - if GetGearType(gear) == gtRCPlane then - RCGear = gear - planesUsed = planesUsed + 1 - planeTimer = 0 - missiles = 0 - end - - if GetGearType(gear) == gtCase then - cratesLeft = cratesLeft + 1 - end - - if GetGearType(gear) == gtAirBomb then - totalMissiles = totalMissiles + 1 - end -end - -function onGearDelete(gear) - - if GetGearType(gear) == gtRCPlane then - - RCGear = nil - planeUhOh = false - missiles = 0 - AddCaption(string.format(loc("Planes used: %d"), planesUsed)) - - if(planeTimer < 2000 and crateStreak == 0) then - nextComment = sndStupid - commentTimer = math.min(2000-planeTimer, 800) - elseif(planeTimer < 5000 and crateStreak == 0) then - PlaySound(sndOops, player) - elseif(planesUsed == 72) then - PlaySound(sndStupid, player) - elseif(planesUsed == 50) then - PlaySound(sndNutter, player) - elseif(planesUsed == 30) then - PlaySound(sndOops, player) - end - - crateStreak = 0 - - elseif GetGearType(gear) == gtAirBomb then - missiles = missiles + 1 - missileScanTimer = 500 - - elseif GetGearType(gear) == gtCase then - - cratesLeft = cratesLeft - 1 - crateStreak = crateStreak + 1 - if(crateStreak > longestCrateStreak) then - longestCrateStreak = crateStreak - end - - AddCaption(string.format(loc("Crates left: %d"), cratesLeft)) - - if cratesLeft == 0 then - - local rank = "unknown" - local color = 0xFFFFFFFF - local sound = sndVictory - if planesUsed >= 156 then - rank = loc("Destroyer of planes") - color = 0xD06700FF - sound = sndLaugh - elseif planesUsed >= 98 then - rank = loc("Hopeless case") - color = 0xFF0000FF - elseif planesUsed >= 72 then - rank = loc("Drunk greenhorn") - color = 0xFF0040FF - elseif planesUsed >= 50 then - rank = loc("Greenhorn") -- a.k.a. "absolute beginner" - color = 0xFF0080FF - elseif planesUsed >= 39 then - rank = loc("Beginner") - color = 0xFF00BFFF - elseif planesUsed >= 30 then - rank = loc("Experienced beginner") - color = 0xFF00CCFF - elseif planesUsed >= 21 then - rank = loc("Below-average pilot") - color = 0xFF00FFFF - elseif planesUsed >= 17 then - rank = loc("Average pilot") - color = 0xBF00FFFF - elseif planesUsed >= 13 then - rank = loc("Above-average pilot") - color = 0x8000FFFF - elseif planesUsed >= 8 then - rank = loc("Professional pilot") - color = 0x4000FFFF - elseif planesUsed >= 5 then - rank = loc("Professional stunt pilot") - color = 0x0000FFFF - elseif planesUsed >= 3 then - rank = loc("Elite pilot") - color = 0x0040FFFF - elseif planesUsed == 2 then - rank = loc("Upper-class elite pilot") - color = 0x0080FFFF - elseif planesUsed == 1 then - rank = loc("Top-class elite pilot") - color = 0x00FFFFFF - sound = sndFlawless - else - rank = loc("Cheater") - color = 0xFF0000FF - sound = sndCoward - end - AddCaption(string.format(loc("Rank: %s"), rank), color, capgrpMessage2) - SendStat(siCustomAchievement, string.format(loc("Your rank: %s"), rank)) - if planesUsed == 1 then - AddCaption(loc("Flawless victory!")) - SendStat(siGameResult, loc("You have perfectly beaten the challenge!")) - SendStat(siCustomAchievement, loc("You have used only 1 RC plane. Outstanding!")) - else - AddCaption(loc("Victory!")) - SendStat(siGameResult, loc("You have finished the challenge!")) - SendStat(siCustomAchievement, string.format(loc("You have used %d RC planes."), planesUsed)) - end - - if(totalMissiles > 1) then - SendStat(siCustomAchievement, string.format(loc("You have dropped %d missiles."), totalMissiles)) - end - - if(longestCrateStreak > 5) then - if(planesUsed == 1) then - SendStat(siCustomAchievement, string.format(loc("In your best (and only) flight you took out %d crates with one RC plane!"), longestCrateStreak)) - else - SendStat(siCustomAchievement, string.format(loc("In your best flight you took out %d crates with one RC plane."), longestCrateStreak)) - end - end - - if(planesUsed == 2) then - SendStat(siCustomAchievement, loc("This was an awesome performance! But this challenge can be finished with even just one RC plane. Can you figure out how?")) - end - if(planesUsed == 1) then - SendStat(siCustomAchievement, loc("Congratulations! You have truly mastered this challenge! Don't forget to save the demo.")) - SendStat(siCustomAchievement, string.format(loc("You have gained an achievement: %s"), loc("Prestigious Pilot"))) - end - - ShowMission ( - loc("CHALLENGE COMPLETE"), - loc("Congratulations!"), - string.format(loc("Planes used: %d"), planesUsed) .. "|" .. - "", 0, 0 - ) - SetState(player, gstWinner) - PlaySound(sound, player) - - - DismissTeam(loc("Wannabe Flyboys")) - EndGame() - end - - if RCGear ~= nil then - SetTimer(RCGear, GetTimer(RCGear) + 10000) - end - end - -end - -function onAmmoStoreInit() - SetAmmo(amRCPlane, 9, 0, 0, 0) -end - -function onNewTurn() - SetWeapon(amRCPlane) -end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/User_Mission_-_Rope_Knock_Challenge.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Rope_Knock_Challenge.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,273 +0,0 @@ -HedgewarsScriptLoad("/Scripts/Locale.lua") - -local hhs = {} -local missionWon = nil -local endTimer = 1000 -local hogsKilled = 0 -local finishTime - -local HogData = { - {"Bufon", "ShaggyYeti",false}, - {"burp", "lambda",false}, - {"Blue", "cap_blue",false}, - {"bender", "NoHat",false}, - {"Castell", "NoHat",false}, - {"cekoto", "NoHat",false}, - {"CheezeMonkey", "NoHat",false}, - {"claymore", "NoHat",false}, - {"CIA-144", "cyborg1",false}, - {"doomy ", "NoHat",false}, - {"Falkenauge", "NoHat",false}, - {"FadeOne", "NoHat",false}, - {"hayaa", "NoHat",false}, - {"Hermes", "laurel",false}, - {"HedgeKing", "NoHat",false}, - {"Izack1535", "NoHat",false}, - {"Kiofspa", "NoHat",false}, - {"Komplex", "NoHat",false}, - {"koda", "poke_mudkip",false}, - {"Lalo", "NoHat",false}, - {"Logan", "NoHat",false}, - {"lollkiller", "NoHat",false}, - {"Luelle", "NoHat",false}, - {"mikade", "Skull",false}, - {"Mushi", "sm_daisy",false}, - {"Naboo", "NoHat",false}, - {"nemo", "bb_bub",false}, - {"practice", "NoHat",false}, - {"Prof. Panic", "NoHat",false}, - {"Randy", "zoo_Sheep",false}, - {"rhino", "NinjaTriangle",false}, - {"Radissthor", "NoHat",false}, - {"Sami", "sm_peach",false}, - {"soreau", "NoHat",false}, - {"sdw195", "NoHat",false}, - {"sphrix", "TeamTopHat",false}, - {"sheepluva", "zoo_Sheep",false}, - {"Smaxx", "NoHat",false}, - {"shadowzero", "NoHat",false}, - {"Star and Moon", "SparkleSuperFun",false}, - {"The 24", "NoHat",false}, - {"TLD", "NoHat",false}, - {"Tiyuri", "sf_ryu",false}, - {"unC0Rr", "cyborg1",false}, - {"Waldsau", "cyborg1",false}, - {"wolfmarc", "knight",false}, - {"Xeli", "android",false} - - } - -function GenericEnd() - EndGame() -end - -function GameOverMan() - missionWon = false - ShowMission(loc("Rope-knocking Challenge"), loc("Challenge over!"), loc("Oh no! Just try again!"), -amSkip, 0) - SendStat(siGameResult, loc("Challenge over!")) - local score = math.ceil((hogsKilled / 16)*6000) - SendStat(siCustomAchievement, string.format(loc("You have killed %d of 16 hedgehogs (+%d points)."), hogsKilled, score)) - SendStat(siPointType, "points") - SendStat(siPlayerKills, tostring(score), loc("Wannabe Shoppsta")) - PlaySound(sndHellish) -end - -function GG() - missionWon = true - local completeTime = (TurnTime - finishTime) / 1000 - ShowMission(loc("Rope-knocking Challenge"), loc("Challenge completed!"), loc("Congratulations!") .. "|" .. string.format(loc("Completion time: %.2fs"), completeTime), 0, 0) - PlaySound(sndHomerun) - SendStat(siGameResult, loc("Challenge completed!")) - local hogScore = math.ceil((hogsKilled / 16)*6000) - local timeScore = math.ceil((finishTime/TurnTime)*6000) - local score = hogScore + timeScore - SendStat(siCustomAchievement, string.format(loc("You have killed %d of 16 hedgehogs (+%d points)."), hogsKilled, hogScore)) - SendStat(siCustomAchievement, string.format(loc("You have completed this challenge in %.2f s (+%d points)."), completeTime, timeScore)) - SendStat(siPointType, "points") - SendStat(siPlayerKills, tostring(score), loc("Wannabe Shoppsta")) -end - -function AssignCharacter(p) - - done = false - sanityCheck = 0 - - while(done == false) do - - i = 1+ GetRandom(#HogData) - if HogData[i][3] == false then - HogData[i][3] = true - done = true - SetHogName(hhs[p], HogData[i][1]) - SetHogHat(hhs[p], HogData[i][2]) - elseif HogData[i][3] == true then - sanityCheck = sanityCheck +1 - if sanityCheck == 100 then - done = true - SetHogName(hhs[p], "Newbie") - SetHogHat(hhs[p], "NoHat") - end - end - - end - -end - -function onGameInit() - - --Seed = 1 - GameFlags = gfBorder + gfSolidLand - - TurnTime = 180 * 1000 - Delay = 500 - Map = "Ropes" - Theme = "Eyes" - - CaseFreq = 0 - MinesNum = 0 - Explosives = 0 - - AddTeam(loc("Wannabe Shoppsta"), 0x11F12B, "Simple", "Island", "Default", "cm_shoppa") - hhs[0] = AddHog(loc("Ace"), 0, 1, "Gasmask") - SetGearPosition(player, 1380, 1500) - - AddTeam(loc("Unsuspecting Louts"), 0xDD0000, "Simple", "Island", "Default", "cm_face") - for i = 1, 8 do - hhs[i] = AddHog("generic", 0, 1, "NoHat") - end - - AddTeam(loc("Unlucky Sods"), 0xDD0000, "Simple", "Island", "Default", "cm_balrog") - for i = 9, 16 do - hhs[i] = AddHog("generic", 0, 1, "NoHat") - end - -end - - - -function onGameStart() - SendHealthStatsOff() - - ShowMission ( - loc("Rope-knocking Challenge"), - loc("Challenge"), - loc("Use the rope to knock your enemies to their doom.") .. "|" .. - loc("Finish this challenge as fast as possible to earn bonus points."), - -amRope, 4000) - - PlaceGirder(46,1783, 0) - - SetGearPosition(hhs[0], 2419, 1769) - SetGearPosition(hhs[1], 3350, 570) - SetGearPosition(hhs[2], 3039, 1300) - SetGearPosition(hhs[3], 2909, 430) - SetGearPosition(hhs[4], 2150, 879) - SetGearPosition(hhs[5], 1735, 1136) - SetGearPosition(hhs[6], 1563, 553) - SetGearPosition(hhs[7], 679, 859) - SetGearPosition(hhs[8], 1034, 251) - SetGearPosition(hhs[9], 255, 67) - SetGearPosition(hhs[10], 2671, 7) - SetGearPosition(hhs[11], 2929, 244) - SetGearPosition(hhs[12], 1946, 221) - SetGearPosition(hhs[13], 3849, 1067) - SetGearPosition(hhs[14], 3360, 659) - SetGearPosition(hhs[15], 3885, 285) - SetGearPosition(hhs[16], 935, 1160) - - for i = 1, 16 do - AssignCharacter(i) - end - -end - -function onGameTick() - - if (TurnTimeLeft == 1) and (missionWon == nil) then - GameOverMan() - end - - if missionWon ~= nil then - - endTimer = endTimer - 1 - if endTimer == 1 then - GenericEnd() - end - - if missionWon == true then - AddCaption(loc("Victory!"), 0xFFFFFFFF,capgrpGameState) - else - AddCaption(loc("Challenge over!"), 0xFFFFFFFF,capgrpGameState) - end - - end - -end - -function onGearDamage(gear, damage) - - if gear ~= hhs[0] and GetGearType(gear) == gtHedgehog then - - AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false) - DeleteGear(gear) - PlaySound(sndExplosion) - AddCaption(string.format(knockTaunt(), GetHogName(gear)), 0xFFFFFFFF, capgrpMessage) - - hogsKilled = hogsKilled +1 - if hogsKilled == 15 then - PlaySound(sndRideOfTheValkyries) - elseif hogsKilled == 16 then - finishTime = TurnTimeLeft - GG() - end - - end - -end - -function knockTaunt() - local r = math.random(0,23) - local taunt - if r == 0 then taunt = loc("%s has been knocked out.") - elseif r == 1 then taunt = loc("%s hit the ground.") - elseif r == 2 then taunt = loc("%s splatted.") - elseif r == 3 then taunt = loc("%s was smashed.") - elseif r == 4 then taunt = loc("%s felt unstable.") - elseif r == 5 then taunt = loc("%s exploded.") - elseif r == 6 then taunt = loc("%s fell from a high cliff.") - elseif r == 7 then taunt = loc("%s goes the way of the lemming.") - elseif r == 8 then taunt = loc("%s was knocked away.") - elseif r == 9 then taunt = loc("%s was really unlucky.") - elseif r == 10 then taunt = loc("%s felt victim to rope-knocking.") - elseif r == 11 then taunt = loc("%s had no chance.") - elseif r == 12 then taunt = loc("%s was a good target.") - elseif r == 13 then taunt = loc("%s spawned at a really bad position.") - elseif r == 14 then taunt = loc("%s was doomed from the beginning.") - elseif r == 15 then taunt = loc("%s has fallen victim to gravity.") - elseif r == 16 then taunt = loc("%s hates Newton.") -- Isaac Newton - elseif r == 17 then taunt = loc("%s had it coming.") - elseif r == 18 then taunt = loc("%s is eliminated!") - elseif r == 19 then taunt = loc("%s fell too fast.") - elseif r == 20 then taunt = loc("%s flew like a rock.") - elseif r == 21 then taunt = loc("%s stumpled.") - elseif r == 22 then taunt = loc("%s was shoved away.") - elseif r == 23 then taunt = loc("%s didn't expect that.") - end - return taunt -end - -function onGearDelete(gear) - - if (gear == hhs[0]) and (missionWon == nil) then - GameOverMan() - end - -end - -function onAmmoStoreInit() - SetAmmo(amRope, 9, 0, 0, 0) -end - -function onNewTurn() - SetWeapon(amRope) -end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/User_Mission_-_Spooky_Tree.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Spooky_Tree.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ - -HedgewarsScriptLoad("/Scripts/Locale.lua") - ---------------------------------------------------------------- - -local player = nil -- This variable will point to the hog's gear -local instructor = nil -local enemy = nil - -local GameOver = false -local birdSpeech = false -local birdSqualk = false - -local GirderCrate = nil - -function onGameInit() - - -- Things we don't modify here will use their default values. - Seed = 0 -- The base number for the random number generator - GameFlags = gfInfAttack +gfDisableWind-- Game settings and rules - TurnTime = 90000 -- The time the player has to move each round (in ms) - CaseFreq = 0 -- The frequency of crate drops - MinesNum = 0 -- The number of mines being placed - MinesTime = 1 - Explosives = 0 -- The number of explosives being placed - Delay = 10 -- The delay between each round - Map = "Tree" -- The map to be played - Theme = "Halloween" -- The theme to be used - SuddenDeathTurns = 99999 - - AddTeam(loc("Bloody Rookies"), 14483456, "Simple", "Island", "Default") - player = AddHog(loc("Hunter"), 0, 1, "NoHat") - --852718 - AddTeam(loc("Toxic Team"), 1175851, "Simple", "Island", "Default") - enemy = AddHog(loc("Poison"), 1, 10, "Skull") - - SetGearPosition(player,970,23) - SetGearPosition(enemy,498,806) - -end - - -function onGameStart() - - --right side mines - AddGear(1681,359,gtMine, 0, 0, 0, 0) - AddGear(1718,518,gtMine, 0, 0, 0, 0) - AddGear(1648,527,gtMine, 0, 0, 0, 0) - AddGear(1584,522,gtMine, 0, 0, 0, 0) - - --tunnel mines - AddGear(301,569,gtSMine, 0, 0, 0, 0) - AddGear(372,608,gtSMine, 0, 0, 0, 0) - AddGear(453,628,gtSMine, 0, 0, 0, 0) - AddGear(524,611,gtSMine, 0, 0, 0, 0) - AddGear(613,611,gtSMine, 0, 0, 0, 0) - - AddGear(308,486,gtSMine, 0, 0, 0, 0) - AddGear(372,478,gtSMine, 0, 0, 0, 0) - AddGear(453,466,gtSMine, 0, 0, 0, 0) - AddGear(524,471,gtSMine, 0, 0, 0, 0) - AddGear(613,466,gtSMine, 0, 0, 0, 0) - - --above the tunnel mines - AddGear(331,433,gtMine, 0, 0, 0, 0) - AddGear(404,420,gtMine, 0, 0, 0, 0) - AddGear(484,424,gtMine, 0, 0, 0, 0) - AddGear(562,417,gtMine, 0, 0, 0, 0) - AddGear(640,412,gtMine, 0, 0, 0, 0) - - -- crates crates and more crates - SpawnAmmoCrate(1208,576,amBlowTorch) - SpawnAmmoCrate(1467,376,amPickHammer) - SpawnUtilityCrate(373,165,amGirder) - SpawnUtilityCrate(704,623,amJetpack) - SpawnUtilityCrate(1646,749,amLaserSight) - - SpawnAmmoCrate(745,418,amShotgun) --shotgun1 - SpawnAmmoCrate(833,432,amFirePunch) --fire punch - GirderCrate = SpawnAmmoCrate(1789,514,amShotgun) -- final shotgun - SpawnAmmoCrate(1181,419,amBee) - - ShowMission(loc("Spooky Tree"), "", loc("Eliminate all enemies") .. loc("|- Mines Time:") .. " " .. 0 .. " " .. loc("sec"), -amBee, 0) - - SetWind(-75) - -end - - -function onGameTick() - - - if CurrentHedgehog ~= nil then - - if (birdSqualk == false) and (GetX(CurrentHedgehog) == 1102) and (GetY(CurrentHedgehog) == 133) then - birdSqualk = true - PlaySound(sndBirdyLay) - end - - if (birdSpeech == false) and (GetX(CurrentHedgehog) == 1068) and (GetY(CurrentHedgehog) == 162) then - birdSpeech = true - HogSay(player,loc("Good birdy......"),SAY_THINK) - end - end - - if CurrentHedgehog ~= nil then - --AddCaption(GetX(CurrentHedgehog) .. ";" .. GetY(CurrentHedgehog)) - end - - if (TotalRounds == 2) and (GameOver == false) then -- just in case - SetHealth(player, 0) - GameOver = true - end - - if TurnTimeLeft == 1 then - --ShowMission(loc(caption), loc(subcaption), loc(timeout), -amSkip, 0); - SetHealth(player, 0) - GameOver = true - end - -end - - -function onAmmoStoreInit() - SetAmmo(amShotgun, 0, 0, 0, 1) - SetAmmo(amFirePunch, 0, 0, 0, 1) - SetAmmo(amBee, 0, 0, 0, 1) - SetAmmo(amBlowTorch, 0, 0, 0, 1) - SetAmmo(amGirder, 0, 0, 0, 1) - SetAmmo(amParachute, 1, 0, 0, 1) - SetAmmo(amPickHammer, 0, 0, 0, 1) - SetAmmo(amJetpack, 0, 0, 0, 1) - SetAmmo(amLaserSight, 0, 0, 0, 1) -end - -function onGearDelete(gear) - - if gear == GirderCrate then - TurnTimeLeft = TurnTimeLeft + 30000 - end - - if GetGearType(gear) == gtCase then - TurnTimeLeft = TurnTimeLeft + 5000 - end - - if (gear == enemy) and (GameOver == false) then - ShowMission(loc("Spooky Tree"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0); - elseif gear == player then - ShowMission(loc("Spooky Tree"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) - GameOver = true - end - -end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/User_Mission_-_Teamwork.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Teamwork.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ -HedgewarsScriptLoad("/Scripts/Locale.lua") - -local player = nil -- This variable will point to the hog's gear -local p2 = nil -local enemy = nil -local bCrate = nil - -local GameOver = false - -function onGameInit() - - -- Things we don't modify here will use their default values. - Seed = 0 -- The base number for the random number generator - GameFlags = gfDisableWind-- Game settings and rules - TurnTime = 30000 -- The time the player has to move each round (in ms) - CaseFreq = 0 -- The frequency of crate drops - MinesNum = 0 -- The number of mines being placed - MinesTime = 1 - Explosives = 0 -- The number of explosives being placed - Delay = 10 -- The delay between each round - Map = "Mushrooms" -- The map to be played - Theme = "Nature" -- The theme to be used - SuddenDeathTurns = 99999 - - AddTeam(loc("Feeble Resistance"), 14483456, "Simple", "Island", "Default") - player = AddHog(string.format(loc("Pathetic Hog #%d"), 1), 0, 50, "NoHat") - p2 = AddHog(string.format(loc("Pathetic Hog #%d"), 2), 0, 20, "NoHat") - - --AddTeam("Toxic Team", 1175851, "Simple", "Island", "Robot","cm_binary") - AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Robot", "cm_binary") - enemy = AddHog(loc("Unit 3378"), 5, 30, "cyborg1") - - SetGearPosition(player,1403,235) - SetGearPosition(p2,1269,239) - SetGearPosition(enemy,492,495) - -end - - -function onGameStart() - - --mines - AddGear(276,76,gtMine, 0, 0, 0, 0) - AddGear(301,76,gtMine, 0, 0, 0, 0) - AddGear(326,76,gtMine, 0, 0, 0, 0) - AddGear(351,76,gtMine, 0, 0, 0, 0) - AddGear(376,76,gtMine, 0, 0, 0, 0) - AddGear(401,76,gtMine, 0, 0, 0, 0) - AddGear(426,76,gtMine, 0, 0, 0, 0) - AddGear(451,76,gtMine, 0, 0, 0, 0) - AddGear(476,76,gtMine, 0, 0, 0, 0) - - AddGear(886,356,gtMine, 0, 0, 0, 0) - AddGear(901,356,gtMine, 0, 0, 0, 0) - AddGear(926,356,gtMine, 0, 0, 0, 0) - AddGear(951,356,gtMine, 0, 0, 0, 0) - AddGear(976,356,gtMine, 0, 0, 0, 0) - AddGear(1001,356,gtMine, 0, 0, 0, 0) - - -- crates crates and more crates - bCrate = SpawnAmmoCrate(1688,476,amBaseballBat) - SpawnUtilityCrate(572,143,amGirder) - SpawnAmmoCrate(1704,954,amPickHammer) - SpawnAmmoCrate(704,623,amBlowTorch) - SpawnUtilityCrate(1543,744,amJetpack) - SpawnAmmoCrate(227,442,amDrill) - - ShowMission(loc("Codename: Teamwork"), "", loc("- Eliminate Unit 3378 |- Feeble Resistance must survive") .. loc("|- Mines Time:") .. " " .. 0 .. " " .. loc("sec"), 0, 0) - -end - - ---function onGameTick() - - --if CurrentHedgehog ~= nil then - -- AddCaption(GetX(CurrentHedgehog) .. ";" .. GetY(CurrentHedgehog)) - --end - ---end - - -function onAmmoStoreInit() - SetAmmo(amBlowTorch, 0, 0, 0, 1) - SetAmmo(amGirder, 0, 0, 0, 1) - SetAmmo(amPickHammer, 0, 0, 0, 2) - SetAmmo(amJetpack, 0, 0, 0, 1) - SetAmmo(amDrill, 0, 0, 0, 2) - SetAmmo(amBaseballBat, 0, 0, 0, 1) - SetAmmo(amSwitch, 9, 0, 0, 0) - SetAmmo(amSkip, 9, 0, 0, 0) -end - -function onGearDamage(gear, damage) - if (gear == player) and (damage == 30) then - HogSay(player,loc("T_T"),SAY_SHOUT) - end -end - -function onGearDelete(gear) - - if gear == bCrate then - HogSay(CurrentHedgehog, loc("Hmmm..."), SAY_THINK) - end - - if GetGearType(gear) == gtCase then - TurnTimeLeft = TurnTimeLeft + 5000 - end - - if (gear == enemy) and (GameOver == false) then - ShowMission(loc("Codename: Teamwork"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) - GameOver = true - elseif ( ((gear == player) or (gear == p2)) and (GameOver == false)) then - ShowMission(loc("Codename: Teamwork"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) - GameOver = true - SetHealth(p2,0) - SetHealth(player,0) - end - -end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/User_Mission_-_That_Sinking_Feeling.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_That_Sinking_Feeling.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,301 +0,0 @@ - - -HedgewarsScriptLoad("/Scripts/Locale.lua") - -local player -local hh = {} -local hhCount = 8 -local GameOver = false -local introStage = 0 -local genCounter = 0 -local waterCounter = 0 -local waterPix = 0 -local frig = 0 -local watGear = nil -local cinematic = false - --- allow skipping of the intro via hitting precise key -function onPrecise() - if introStage < 100 then - introStage = 110 - genCounter = 0 - FollowGear(CurrentHedgehog) - AddCaption(loc("Good luck out there!")) - ShowMission(loc("That Sinking Feeling"), loc("Challenge"), loc("Save as many hapless hogs as possible!"), 4, 0) - SetInputMask(0xFFFFFFFF) - end -end - -function onGameInit() - - Seed = 0 - GameFlags = gfInfAttack + gfInvulnerable + gfOneClanMode - TurnTime = 90000 - CaseFreq = 0 - MinesNum = 0 - MinesTime = 3000 - Explosives = 0 - Delay = 10 - Map = "Islands" - Theme = "City" - SuddenDeathTurns = 1 - - AddTeam(loc("Hapless Hogs"), 14483456, "Simple", "Island", "Default") - hh[0] = AddHog(loc("Sinky"), 1, 100, "fr_lemon") - hh[1] = AddHog(loc("Drowner"), 1, 100, "fr_orange") - hh[2] = AddHog(loc("Heavy"), 1, 100, "dish_Teapot") - hh[3] = AddHog(loc("Clumsy"), 1, 100, "dish_SauceBoatSilver") - hh[4] = AddHog(loc("Silly"), 1, 100, "dish_Ladle") - hh[5] = AddHog(loc("Careless"), 1, 100, "StrawHatEyes") - hh[6] = AddHog(loc("Sponge"), 1, 100, "sf_chunli") - hh[7] = AddHog(loc("Deadweight"), 1, 100, "dish_Teacup") - - AddTeam(loc("Nameless Heroes"), 14483456, "Simple", "Island", "Default", "cm_crossedswords") - player = AddHog(loc("The Nameless One"), 0, 1, "NoHat") - - SetGearPosition(player, 3992, 733) - SetGearPosition(hh[0], 938, 1369) - SetGearPosition(hh[1], 1301, 1439) - SetGearPosition(hh[2], 2093, 447) - SetGearPosition(hh[3], 2971, 926) - SetGearPosition(hh[4], 719, 545) - SetGearPosition(hh[5], 1630, 821) - SetGearPosition(hh[6], 2191, 810) - SetGearPosition(hh[7], 3799, 945) - - -- Disable all input except [Precise] for the intro - SetInputMask(gmPrecise) -end - - -function onGameStart() - cinematic = true - SetCinematicMode(true) - SendHealthStatsOff() - - ShowMission(loc("That Sinking Feeling"), loc("Challenge"), loc("Save as many hapless hogs as possible!"), 4, 1) - - HogTurnLeft(hh[0], false) - HogTurnLeft(hh[1], true) - - SpawnUtilityCrate(148,265,amLowGravity) - SpawnUtilityCrate(2124,1516,amJetpack) - -end - - -function onNewTurn() - TurnTimeLeft = -1 -end - -function onGameTick() - - -- intro sequence - if introStage < 100 then - - frig = frig + 1 - if frig == 50 then - frig = 0 - AddCaption(loc("Press [Precise] to skip intro")) - if watGear ~= nil then - FollowGear(watGear) - end - end - - - --AddCaption(loc("Press [Precise] to skip intro")) - genCounter = genCounter + 1 - - if introStage == 0 then - - - --FollowGear(hh[0]) - - if genCounter == 2000 then - watGear = hh[0] - HogSay(hh[0], loc("This rain is really something..."), SAY_SAY,2) - elseif genCounter == 5000 then - introStage = 1 - genCounter = 0 - end - - elseif introStage == 1 then - - --FollowGear(hh[1]) - - if genCounter == 2000 then - watGear = hh[1] - HogSay(hh[1], loc("Heh, it's not that bad."), SAY_SAY,2) - elseif genCounter == 5000 then - introStage = 2 - genCounter = 0 - end - - elseif introStage == 2 then - - --FollowGear(hh[0]) - - if genCounter == 2000 then - watGear = hh[0] - HogSay(hh[0], loc("You'd almost swear the water was rising!"), SAY_SHOUT,2) - elseif genCounter == 6000 then - introStage = 3 - genCounter = 0 - end - - elseif introStage == 3 then - - --FollowGear(hh[1]) - - if genCounter == 2000 then - watGear = hh[1] - HogSay(hh[1], loc("Haha, now THAT would be something!"), SAY_SAY,2) - elseif genCounter == 6000 then - introStage = 4 - genCounter = 0 - end - - elseif introStage == 4 then - - --FollowGear(hh[0]) - - if genCounter == 2000 then - watGear = hh[0] - HogSay(hh[0], loc("Hahahaha!"), SAY_SHOUT,2) - HogSay(hh[1], loc("Hahahaha!"), SAY_SHOUT,2) - elseif genCounter == 3000 then - introStage = 5 - genCounter = 0 - end - - elseif introStage == 5 then - - --FollowGear(hh[1]) - - if genCounter == 2000 then - watGear = hh[1] - HogSay(hh[0], loc("..."), SAY_THINK,2) - HogSay(hh[1], loc("..."), SAY_THINK,2) - elseif genCounter == 5000 then - introStage = 6 - genCounter = 0 - end - - elseif introStage == 6 then - - --FollowGear(hh[0]) - - if genCounter == 2000 then - watGear = hh[0] - HogSay(hh[0], loc("It's a good thing SUDDEN DEATH is 99 turns away..."), SAY_THINK,2) - elseif genCounter == 6000 then - introStage = 7 - genCounter = 0 - end - - - elseif introStage == 7 then - - if genCounter == 2000 then - introStage = 110 - FollowGear(CurrentHedgehog) - ShowMission(loc("That Sinking Feeling"), loc("User Challenge"), loc("Save as many hapless hogs as possible!"), 4, 0) - SetInputMask(0xFFFFFFFF) - end - - end - - end - - -- start the water rising when the intro is finished - if introStage == 110 then - - if cinematic then - SetCinematicMode(false) - cinematic = false - end - - waterCounter = waterCounter + 1 - if (waterCounter == 100) and (waterPix < 1615) then - waterCounter = 0 - SetTag(AddGear(0, 0, gtWaterUp, 0, 0, 0, 0), 1) - waterPix = waterPix +1 - --AddCaption(waterPix) - - if (waterPix >= 1615) and (GameOver == false) then - GameOver = true - AddCaption(loc("The flood has stopped! Challenge over.")) - SendStat(siGameResult, loc("Challenge completed!")) - SendStat(siPlayerKills, tostring(hhCount), loc("Nameless Heroes")) - SendStat(siPointType, loc("rescues")) - - -- Do not count drowning hedgehogs - local hhLeft = hhCount - for i=1,#hh do - local isDrowning = band(GetState(hh[i]),gstDrowning) ~= 0 - if isDrowning then - hhLeft = hhLeft - 1 - end - end - - SendStat(siCustomAchievement, string.format(loc("You saved %d of 8 Hapless Hogs."), hhLeft)) - - if hhLeft == 8 then - AddCaption(loc("Achievement obtained: Lively Lifeguard"),0xffba00ff,capgrpMessage2) - SendStat(siCustomAchievement, loc("You have obtained an achievement: Lively Lifeguard")) - end - EndGame() - - end - - end - - end -end - - -function onAmmoStoreInit() - - SetAmmo(amBazooka, 9, 0, 0, 0) - - SetAmmo(amRope, 9, 0, 0, 0) - SetAmmo(amParachute, 9, 0, 0, 0) - SetAmmo(amJetpack, 2, 0, 0, 2) - - SetAmmo(amGirder, 9, 0, 0, 0) - SetAmmo(amBaseballBat, 9, 0, 0, 0) - - SetAmmo(amTeleport, 1, 0, 0, 1) - SetAmmo(amPortalGun, 3, 0, 0, 1) - - SetAmmo(amLowGravity, 0, 0, 0, 1) - -end - -function onGearDelete(gear) - - if GetGearType(gear) == gtHedgehog then - if GetHogTeamName(gear) == loc("Hapless Hogs") then - hhCount = hhCount - 1 - AddCaption(string.format(loc("%d Hapless Hogs left"), hhCount)) - end - end - - if ((gear == player) or (hhCount == 0)) and (GameOver == false) then - SetHealth(player, 0) - AddCaption(loc("Disqualified!")) - if gear == player then - SendStat(siCustomAchievement, loc("Your hedgehog died!")) - SendStat(siCustomAchievement, loc("You must survive the flood in order to score.")) - else - SendStat(siCustomAchievement, loc("You haven't rescued anyone.")) - end - SendStat(siPlayerKills, "0", loc("Nameless Heroes")) - SendStat(siPointType, loc("points")) - - SendStat(siGameResult, loc("Disqualified!")) - GameOver = true - EndGame() - end - -end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/User_Mission_-_The_Great_Escape.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_The_Great_Escape.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -HedgewarsScriptLoad("/Scripts/Locale.lua") - -local player = nil -local enemy = nil - -function onGameInit() - - Map = "Castle" - Theme = "Nature" - Seed = 0 - GameFlags = gfInfAttack - - TurnTime = 45 * 1000 - - CaseFreq = 0 - MinesNum = 0 - Explosives = 0 - - AddTeam(loc("Hero Team"), 14483456, "Simple", "Island", "Default", "Hedgewars") - player = AddHog(loc("Good Dude"), 0, 80, "NoHat") --NoHat - - AddTeam(loc("Bad Team"), 1175851, "Simple", "Island", "Default", "Hedgewars") - enemy = AddHog(loc("Bad Guy"), 1, 40, "NoHat") - -end - -function onGameStart() - -ShowMission(loc("The Great Escape"), loc("Get out of there!"), loc("Elimate your captor."), -amGrenade, 0) - ------- GIRDER LIST ------ -PlaceGirder(1042,564,0) -PlaceGirder(1028,474,6) -PlaceGirder(1074,474,6) -PlaceGirder(1050,385,0) -PlaceGirder(1175,731,7) -PlaceGirder(1452,905,2) -PlaceGirder(1522,855,4) -PlaceGirder(1496,900,3) -PlaceGirder(1682,855,4) -PlaceGirder(1773,887,2) -PlaceGirder(1647,901,1) -PlaceGirder(1871,883,6) -PlaceGirder(1871,723,6) -PlaceGirder(1774,768,6) -PlaceGirder(1773,767,6) -PlaceGirder(1821,904,1) -PlaceGirder(1822,802,3) -PlaceGirder(1820,723,1) -PlaceGirder(1782,678,4) -PlaceGirder(1822,661,0) -PlaceGirder(1822,644,0) -PlaceGirder(1742,644,0) -PlaceGirder(1742,661,0) -PlaceGirder(1694,676,2) -PlaceGirder(1903,635,0) ------- HEALTH CRATE LIST ------ -SpawnHealthCrate(1476,169) -SpawnHealthCrate(1551,177) -SpawnHealthCrate(1586,200) -SpawnHealthCrate(1439,189) -SpawnHealthCrate(1401,211) -SpawnHealthCrate(1633,210) ------- MINE LIST ------ -tempG = AddGear(1010,680,gtMine, 0, 0, 0, 0) -SetTimer(tempG, 1) -tempG = AddGear(1031,720,gtMine, 0, 0, 0, 0) -SetTimer(tempG, 1) -tempG = AddGear(1039,748,gtMine, 0, 0, 0, 0) -SetTimer(tempG, 1) -tempG = AddGear(1051,777,gtMine, 0, 0, 0, 0) -SetTimer(tempG, 1) -tempG = AddGear(1065,796,gtMine, 0, 0, 0, 0) -SetTimer(tempG, 1) -tempG = AddGear(1094,800,gtMine, 0, 0, 0, 0) -SetTimer(tempG, 1) ------- REPOSITION LIST ------ -SetGearPosition(player,1050,534) -SetGearPosition(enemy,1512,158) -SetHealth(player, 1) -SetHealth(enemy, 1) ------- AMMO CRATE LIST ------ -SpawnAmmoCrate(1632,943,5) -SpawnAmmoCrate(1723,888,12) -SpawnAmmoCrate(1915,599,1) ------- UTILITY CRATE LIST ------ -SpawnUtilityCrate(1519,945,15) -SpawnUtilityCrate(1227,640,6) -SpawnUtilityCrate(1416,913,18) ------- END LOADING DATA ------ - -end - -function onGameTick() - - if TurnTimeLeft == TurnTime-1 then - SetWind(100) - end - -end - -function onGearDelete(gear) - if (GetGearType(gear) == gtCase) and (CurrentHedgehog == player) then - if GetHealth(gear) > 0 then - AddGear(GetX(gear), GetY(gear), gtGrenade, 0, 0, 0, 1) - end - elseif gear == player then - ShowMission(loc("The Great Escape"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) - elseif gear == enemy then - ShowMission(loc("The Great Escape"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) - end -end - -function onAmmoStoreInit() - SetAmmo(amGrenade, 1, 0, 0, 1) - SetAmmo(amParachute, 1, 0, 0, 1) - SetAmmo(amFirePunch, 0, 0, 0, 3) - SetAmmo(amPickHammer, 0, 0, 0, 1) - SetAmmo(amBlowTorch, 0, 0, 0, 1) - SetAmmo(amShotgun, 0, 0, 0, 1) - SetAmmo(amSkip, 9, 0, 0, 0) -end diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Training/portal.lua --- a/share/hedgewars/Data/Missions/Training/portal.lua Sun Nov 20 04:21:24 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,205 +0,0 @@ -HedgewarsScriptLoad("/Scripts/Locale.lua") -HedgewarsScriptLoad("/Scripts/Utils.lua") - -local MineArray = {} -local player -local adviceGiven = false -local adviceGiven2 = false - -function onGameInit() - Seed = 0 -- The base number for the random number generator - GameFlags = gfInfAttack +gfBorder +gfDisableWind +gfSolidLand - TurnTime = 1500000 -- The time the player has to move each round (in ms) - CaseFreq = 0 -- The frequency of crate drops - MinesNum = 0 -- The number of mines being placed - Explosives = 0 -- The number of explosives being placed - Delay = 10 -- The delay between each round - Map = "portal" -- The map to be played - Theme = "Hell" -- The theme to be used - -- Disable Sudden Death - HealthDecrease = 0 - WaterRise = 0 - - AddTeam(loc("Subjects"), 0xFFFF01, "Simple", "Island", "Default", "cm_test") - player = AddHog(loc("Subject 1"), 0, 10, "Terminator_Glasses") - - AddTeam(loc("Hell Army"), 0xFF0402, "skull", "Island", "Default", "cm_hellish") - enemy1 = AddHog(loc("Lucifer"), 1, 200, "InfernalHorns") - enemy2 = AddHog(loc("Voldemort"), 1, 150, "WizardHat") - enemy3 = AddHog(loc("Zombi"), 1, 100, "Zombi") - enemy4 = AddHog(loc("Predator"), 1, 14, "anzac") - enemy5 = AddHog(loc("Oneye"), 1, 50, "cyclops") - enemy6 = AddHog(loc("Razac"), 1, 50, "Evil") - enemy7 = AddHog(loc("C-2"), 1, 50, "cyborg1") - enemy8 = AddHog(loc("Rider"), 1, 50, "scif_SparkssHelmet") - - AddTeam(loc("Badmad"), 0xFF0402, "skull", "Island", "Default", "cm_pentagram") - enemy9 = AddHog(loc("C-1"), 1, 50, "cyborg2") - enemy10 = AddHog(loc("Hidden"), 1, 40, "bushhider") - enemy11 = AddHog(loc("Ronald"), 1, 70, "clown") - enemy12 = AddHog(loc("Phosphat"), 1, 50, "chef") - enemy13 = AddHog(loc("Lestat"), 1, 30, "vampirichog") - - SetGearPosition(player, 350, 1820) - SetGearPosition(enemy1, 2037, 1313) - SetGearPosition(enemy2, 1369, 1605) - SetGearPosition(enemy3, 1750, 1937) - SetGearPosition(enemy4, 3125, 89) - SetGearPosition(enemy5, 743, 900) - SetGearPosition(enemy6, 130, 360) - SetGearPosition(enemy7, 1333, 640) - SetGearPosition(enemy8, 1355, 200) - SetGearPosition(enemy9, 2680, 225) - SetGearPosition(enemy10, 2970, 800) - SetGearPosition(enemy11, 4050, 1964) - SetGearPosition(enemy12, 2666, 950) - SetGearPosition(enemy13, 3306, 1205) - -end - -function onAmmoStoreInit() - - SetAmmo(amFirePunch, 0,0,0,1) - SetAmmo(amParachute, 0, 0, 0, 2) - SetAmmo(amGirder, 0, 0, 0, 3) - SetAmmo(amTeleport, 0, 0, 0, 1) - SetAmmo(amLaserSight,0,0,0,1) - SetAmmo(amHellishBomb,0,0,0,1) - SetAmmo(amGrenade,0,0,0,1) - SetAmmo(amRope,0,0,0,1) - SetAmmo(amDEagle,0,0,0,1) - SetAmmo(amExtraTime,0,0,0,2) - SetAmmo(amSkip,9,0,0,0) - SetAmmo(amBlowTorch, 0, 0, 0, 1) - SetAmmo(amPickHammer, 0, 0, 0, 1) - SetAmmo(amSnowball, 0, 0, 0, 1) - -end - -function onGameStart() - - SetWind(100) - - MineArray[0] = AddGear(840, 1847, gtMine, 0, 0, 0, 0) - MineArray[1] = AddGear(900, 1847, gtMine, 0, 0, 0, 0) - MineArray[2] = AddGear(1000, 1847, gtMine, 0, 0, 0, 0) - MineArray[3] = AddGear(1100, 1847, gtMine, 0, 0, 0, 0) - MineArray[4] = AddGear(1140, 1847, gtMine, 0, 0, 0, 0) - MineArray[5] = AddGear(1170, 1847, gtMine, 0, 0, 0, 0) - MineArray[6] = AddGear(1200, 1847, gtMine, 0, 0, 0, 0) - MineArray[7] = AddGear(1200, 1847, gtMine, 0, 0, 0, 0) - MineArray[8] = AddGear(1230, 1847, gtMine, 0, 0, 0, 0) - MineArray[9] = AddGear(1280, 1847, gtMine, 0, 0, 0, 0) - MineArray[10] = AddGear(1302, 1847, gtMine, 0, 0, 0, 0) - MineArray[11] = AddGear(1350, 1847, gtMine, 0, 0, 0, 0) - MineArray[12] = AddGear(1383, 1847, gtMine, 0, 0, 0, 0) - MineArray[13] = AddGear(1400, 1847, gtMine, 0, 0, 0, 0) - MineArray[14] = AddGear(1423, 1847, gtMine, 0, 0, 0, 0) - MineArray[15] = AddGear(1470, 1847, gtMine, 0, 0, 0, 0) - MineArray[16] = AddGear(1480, 1847, gtMine, 0, 0, 0, 0) - MineArray[17] = AddGear(1311, 1847, gtMine, 0, 0, 0, 0) - - MineArray[18] = AddGear(840, 1785, gtMine, 0, 0, 0, 0) - MineArray[19] = AddGear(900, 1785, gtMine, 0, 0, 0, 0) - MineArray[20] = AddGear(1000, 1785, gtMine, 0, 0, 0, 0) - MineArray[21] = AddGear(1100, 1785, gtMine, 0, 0, 0, 0) - MineArray[22] = AddGear(1140, 1785, gtMine, 0, 0, 0, 0) - MineArray[23] = AddGear(1170, 1785, gtMine, 0, 0, 0, 0) - MineArray[24] = AddGear(1200, 1785, gtMine, 0, 0, 0, 0) - MineArray[25] = AddGear(1230, 1785, gtMine, 0, 0, 0, 0) - MineArray[26] = AddGear(1280, 1785, gtMine, 0, 0, 0, 0) - MineArray[27] = AddGear(1302, 1785, gtMine, 0, 0, 0, 0) - MineArray[28] = AddGear(1350, 1785, gtMine, 0, 0, 0, 0) - MineArray[29] = AddGear(1383, 1785, gtMine, 0, 0, 0, 0) - MineArray[30] = AddGear(1400, 1785, gtMine, 0, 0, 0, 0) - MineArray[31] = AddGear(1423, 1785, gtMine, 0, 0, 0, 0) - MineArray[32] = AddGear(1470, 1785, gtMine, 0, 0, 0, 0) - MineArray[33] = AddGear(1480, 1785, gtMine, 0, 0, 0, 0) - MineArray[34] = AddGear(1311, 1785, gtMine, 0, 0, 0, 0) - - MineArray[35] = AddGear(4029, 89, gtMine, 0, 0, 0, 120) - - for i = 0,#MineArray do - SetTimer(MineArray[i],050) - SetState(MineArray[i],544) - end - --needed this MineArray cause timer didn't work, its was always 3sec, i wanna instant mines - - --UTILITY CRATE-- - parachute = SpawnUtilityCrate(1670, 1165, amParachute) - girder = SpawnUtilityCrate(2101, 1297, amGirder) - SpawnUtilityCrate(3965, 625, amBlowTorch) - SpawnUtilityCrate(2249, 93, amBlowTorch) - SpawnUtilityCrate(2181, 829, amBlowTorch) - SpawnUtilityCrate(1820, 567, amBlowTorch) - SpawnUtilityCrate(1375, 900, amTeleport) - SpawnUtilityCrate(130, 600, amPickHammer) - SpawnUtilityCrate(1660,1820, amLaserSight) - SpawnUtilityCrate(4070,1840, amLaserSight) - - - --AMMO CRATE-- - portalgun = SpawnAmmoCrate(505, 1943, amPortalGun, 1000) - extratime = SpawnAmmoCrate(4020, 785, amExtraTime, 2) - SpawnAmmoCrate(425, 613, amSnowball) - SpawnAmmoCrate(861, 633, amHellishBomb) - SpawnAmmoCrate(2510, 623, amSnowball) - SpawnAmmoCrate(2900, 1600, amGrenade) - SpawnAmmoCrate(2680, 320, amGrenade) - SpawnAmmoCrate(2650, 80, amDEagle) - SpawnAmmoCrate(3000, 100, amDEagle) - SpawnAmmoCrate(2900, 1400, amRope) - SpawnAmmoCrate(4025, 1117, amFirePunch) - - --HEALTH CRATE-- - SpawnHealthCrate(2000, 780) - - --GIRDER-- - PlaceGirder(3363, 1323, 4) - - ShowMission (loc("Portal Mind Challenge"), loc("Mission"), - loc("Defeat all enemies!") .. "|" .. loc("In this mission you have infinite time."), - -amPortalGun, 5000) - HogSay(player, loc("I should get myself a portal device, maybe this crate has one."), SAY_THINK) - -end - -function onGameTick() - - if (player ~= nil) then - if (gearIsInBox(player, 1650, 1907, 200, 60) and (adviceGiven == false)) then - adviceGiven = true - HogSay(player, loc("Hmmm, I’ll have to find some way of moving him off this anti-portal surface."), SAY_THINK) - elseif (gearIsInBox(player, 2960, 790, 200, 60) and (adviceGiven2 == false)) then - adviceGiven2 = true - HogSay(player, loc("The anti-portal surface is all over the floor, and I have nothing to kill him. Dropping something could hurt him enough to kill him."), SAY_THINK) - end - end - -end - -function onGearDelete(gear) - -- Check gear collection - if CurrentHedgehog == player and (band(GetGearMessage(gear), gmDestroy) ~= 0) then - if gear == portalgun then - HogSay(player, loc("Great! Let’s kill all these enemies, using portals."), SAY_THINK) - end - - if gear == girder then - HogSay(player, loc("This will be useful when I need a new platform or if I want to rise."), SAY_THINK) - end - - if gear == parachute then - HogSay(player, loc("You can’t open a portal on the blue surface."), SAY_THINK) - end - - if gear == extratime then - HogSay(player, loc("What?! For all this struggle I just win some ... time? Oh dear!"), SAY_SHOUT) - end - end - - if gear == player then - player = nil - end -end -