From 196987307b79689a3a4d0ed482924f331bf71bd8 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Tue, 6 Oct 2026 20:16:45 -0400 Subject: [PATCH 01/24] commit ini sorting plan --- .../plans/ini_key_sorting_alignment_plan.md | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 doc/agents/plans/ini_key_sorting_alignment_plan.md diff --git a/doc/agents/plans/ini_key_sorting_alignment_plan.md b/doc/agents/plans/ini_key_sorting_alignment_plan.md new file mode 100644 index 00000000..5911647b --- /dev/null +++ b/doc/agents/plans/ini_key_sorting_alignment_plan.md @@ -0,0 +1,81 @@ +# Implementation Plan - Align INI Section & Key Sorting Behavior with YR_RN_Mission_Editor + +## Goal Description +In the current repository (`FA2Copy`, branch `enhance/rn-version-alignment`), INI sections and keys use `std::map` (`FAMap` for sections and `FAMap` for key-value pairs). Because `std::map` naturally orders keys using `INISectionEntriesComparator` (shorter strings first, then alphabetical via `strcmp`), saving an INI or map file forces both sections and keys within each section to be reordered. + +In the target editor [`YR_RN_Mission_Editor`](file:///D:/Developments/RevengeNow/Codes/YR_RN_Mission_Editor), INI management was refactored (`CIniFileSection` uses sequenced `Container value_pairs` / `std::vector>` and `map value_pos`), preserving the original file key order and appending newly created keys to the end. + +Our objective is to: +1. Enable `FA2Copy` to **preserve both INI section sequence and key sequence** when saving, matching `YR_RN_Mission_Editor`. +2. Use an **$O(1)$ Multi-Index design (`std::list` + `std::unordered_map`)** for both section order and key order to ensure top performance on massive maps (avoiding $O(N^2)$ lookups or $O(N)$ index shifts on deletions). +3. Introduce a configuration option (`SaveMap.PreserveINIKeySorting` / `ExtConfigs::SaveMap_PreserveINIKeySorting`) so that vanilla behavior remains intact for upstream compatibility when disabled. +4. Adapt a dedicated configuration suite for **Revenge Now (RN)** (similar to `Supplementary/MentalOmega`) with this feature enabled, incorporating RN-specific configurations from `YR_RN_Mission_Editor/dist/FinalRevenge`. + +--- + +## Technical Design: Dual-Level `SequencedKeyList` + +### 1. `SequencedKeyList` Container +A reusable multi-index ordered set: +```cpp +class SequencedKeyList +{ +public: + using ListType = std::list; + using MapType = std::unordered_map; + + void Add(const ppmfc::CString& key); // O(1) + bool Remove(const ppmfc::CString& key); // O(1) + bool Contains(const ppmfc::CString& key) const; // O(1) + void Clear(); // O(1) + const ListType& GetOrder() const; +private: + ListType m_order; + MapType m_lookup; +}; +``` + +### 2. Dual-Level Sidecar Structure in `CINIManager` +For each `CINI*` instance: +- **`SequencedKeyList SectionOrder;`**: Tracks the sequence of sections (`[Header]`, `[Basic]`, `[Triggers]`, etc.). +- **`std::unordered_map KeyOrder;`**: Tracks the sequence of keys within each section. + +### 3. Lifecycle Integration +1. **On Load (`CINIExt::LoadINIExt`)**: + - Section headers: `SectionOrder.Add(CurrentSectionName)` + - Key-value pairs: `KeyOrder[CurrentSectionName].Add(key)` +2. **On Modification (`WriteString`)**: + - `SectionOrder.Add(section)` + - `KeyOrder[section].Add(key)` (if key already existed, position is unchanged!) +3. **On Deletion (`DeleteKey`, `DeleteSection`)**: + - `DeleteKey`: `KeyOrder[section].Remove(key)` + - `DeleteSection`: `KeyOrder.erase(section)`, `SectionOrder.Remove(section)` +4. **On Save (`SaveMapExt::SaveMap` & `CINI_WriteToFile`)**: + When `SaveMap_PreserveINIKeySorting` is true: + - Iterate sections in `SectionOrder.GetOrder()`, followed by any untracked sections in `Dict`. + - For each section, iterate keys in `KeyOrder[section].GetOrder()`, followed by any untracked keys in `EntitiesDictionary`. + - When false, maintain existing behavior. + +--- + +## Execution Steps + +1. **Implement `SequencedKeyList`**: + - Add helper class in `FA2sp/Helpers/SequencedKeyList.h`. +2. **Integrate with `CINIManager` & `CINIExt`**: + - Add `SectionOrder` and `KeyOrder` tracking to `CINIManager`. + - Record order during `CINIExt::LoadINIExt`. + - Track additions/deletions in `CINI::WriteString`, `DeleteKey`, `DeleteSection`. +3. **Update Map & INI Saving**: + - Update `SaveMapExt::SaveMap` in `FA2sp/Miscs/SaveMap.cpp`. + - Update `CINI_WriteToFile` in `FA2sp/Miscs/Hooks.INI.cpp`. +4. **Configuration**: + - Add `SaveMap_PreserveINIKeySorting` to `FA2sp.h` / `FA2sp.cpp`. + - Add option translation strings to language INIs. + - Document in `Supplementary/FAData.ini`. +5. **Revenge Now (RN) Config Preset**: + - Create `Supplementary/RevengeNow/FAData.ini` adapted from `YR_RN_Mission_Editor/dist/FinalRevenge/FAData.ini`. + - Enable both `SaveMap.PreserveINISorting` and `SaveMap.PreserveINIKeySorting`. +6. **Build & Verification**: + - MSBuild compile check. + - Test case verification of section and key sequencing. From f1579bfa927679813e458f3f6066afff934fee1f Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Tue, 6 Oct 2026 21:25:07 -0400 Subject: [PATCH 02/24] feat: align INI key and section order preservation with YR_RN_Mission_Editor - Implement O(1) multi-index SequencedKeyList and decoupled CINIOrderTracker - Track section and key order in LoadINIExt and preserve exact sequence on save - Add SaveMap.PreserveINIKeySorting configuration option and translations - Add Revenge Now configuration suite in Supplementary/RevengeNow/ --- FA2sp.vcxproj | 3 + FA2sp.vcxproj.filters | 9 + FA2sp/Ext/CLoading/Hooks.LoadObjects.cpp | 2 + FA2sp/Ext/CMapData/Hooks.cpp | 3 + FA2sp/FA2sp.cpp | 8 + FA2sp/FA2sp.h | 10 +- FA2sp/Helpers/CINIOrderTracker.cpp | 111 + FA2sp/Helpers/CINIOrderTracker.h | 20 + FA2sp/Helpers/SequencedKeyList.h | 85 + FA2sp/Miscs/Hooks.INI.cpp | 70 +- FA2sp/Miscs/SaveMap.cpp | 151 +- Supplementary/FAData.ini | 4 + Supplementary/FALanguage_Chinese.ini | 1 + Supplementary/FALanguage_English.ini | 1 + Supplementary/RevengeNow/FAData.ini | 11687 ++++++++++++++++ .../RevengeNow/FinalRevengeDefaults.ini | 16 + Supplementary/RevengeNow/README.md | 37 + Supplementary/RevengeNow/TileGroups.ini | 113 + 18 files changed, 12273 insertions(+), 58 deletions(-) create mode 100644 FA2sp/Helpers/CINIOrderTracker.cpp create mode 100644 FA2sp/Helpers/CINIOrderTracker.h create mode 100644 FA2sp/Helpers/SequencedKeyList.h create mode 100644 Supplementary/RevengeNow/FAData.ini create mode 100644 Supplementary/RevengeNow/FinalRevengeDefaults.ini create mode 100644 Supplementary/RevengeNow/README.md create mode 100644 Supplementary/RevengeNow/TileGroups.ini diff --git a/FA2sp.vcxproj b/FA2sp.vcxproj index ca09e023..f952bcbe 100644 --- a/FA2sp.vcxproj +++ b/FA2sp.vcxproj @@ -342,6 +342,7 @@ + @@ -477,6 +478,8 @@ + + diff --git a/FA2sp.vcxproj.filters b/FA2sp.vcxproj.filters index 10d4e271..bc6590d8 100644 --- a/FA2sp.vcxproj.filters +++ b/FA2sp.vcxproj.filters @@ -45,6 +45,12 @@ 头文件 + + 头文件 + + + 头文件 + 头文件 @@ -623,6 +629,9 @@ æº�文件 + + æº�文件 + æº�文件 diff --git a/FA2sp/Ext/CLoading/Hooks.LoadObjects.cpp b/FA2sp/Ext/CLoading/Hooks.LoadObjects.cpp index bf032d7d..5e9d128b 100644 --- a/FA2sp/Ext/CLoading/Hooks.LoadObjects.cpp +++ b/FA2sp/Ext/CLoading/Hooks.LoadObjects.cpp @@ -20,6 +20,7 @@ #include "../CMapData/Body.h" #include "../../Miscs/Hooks.INI.h" #include "../../Helpers/Helper.h" +#include "../../Helpers/CINIOrderTracker.h" DEFINE_HOOK(4808A0, CLoading_LoadObjects, 5) { @@ -250,6 +251,7 @@ DEFINE_HOOK(49D63A, CLoading_LoadMap_ReloadGame, 5) INIIncludes::SkipBracketFix = true; CMapDataExt::IsLoadingMapFile = true; + CINIOrderTracker::Clear(&CINI::CurrentDocument); CMapDataExt::MapIniSectionSorting.clear(); CMapDataExt::MapInlineComments.clear(); CMapDataExt::MapFrontlineComments.clear(); diff --git a/FA2sp/Ext/CMapData/Hooks.cpp b/FA2sp/Ext/CMapData/Hooks.cpp index adfef92d..feb37249 100644 --- a/FA2sp/Ext/CMapData/Hooks.cpp +++ b/FA2sp/Ext/CMapData/Hooks.cpp @@ -1,6 +1,8 @@ #include "Body.h" #include +#include +#include "../../Helpers/CINIOrderTracker.h" #include "../../FA2sp.h" #include "../../Helpers/TheaterHelpers.h" @@ -1096,6 +1098,7 @@ DEFINE_HOOK(4B9E38, CMapData_CreateMap_InitializeMapDataExt, 5) CMapDataExt::IsUTF8File = false; Logger::Debug("CMapData::CreateMap(): About to call InitializeAllHdmEdition()\n"); CMapDataExt::InitializeAllHdmEdition(); + CINIOrderTracker::Clear(&CINI::CurrentDocument); CMapDataExt::MapIniSectionSorting.clear(); CMapDataExt::MapInlineComments.clear(); CMapDataExt::MapFrontlineComments.clear(); diff --git a/FA2sp/FA2sp.cpp b/FA2sp/FA2sp.cpp index e4388ac3..b26c02cd 100644 --- a/FA2sp/FA2sp.cpp +++ b/FA2sp/FA2sp.cpp @@ -226,6 +226,7 @@ bool ExtConfigs::PreciseDepthCalculation; bool ExtConfigs::DisableDirectoryCheck; bool ExtConfigs::ExtOverlays; bool ExtConfigs::SaveMap_PreserveINISorting; +bool ExtConfigs::SaveMap_PreserveINIKeySorting; bool ExtConfigs::ExtMixLoader; int ExtConfigs::DisplayTextSize; int ExtConfigs::DistanceRuler_Records; @@ -460,6 +461,7 @@ void FA2sp::ExtConfigsInitialize() ExtConfigs::SaveMap_OnlySaveMAP = CINI::FAData->GetBool("ExtConfigs", "SaveMap.OnlySaveMAP"); ExtConfigs::SaveMap_KeepComments = CINI::FAData->GetBool("ExtConfigs", "SaveMap.KeepComments"); ExtConfigs::SaveMap_PreserveINISorting = CINI::FAData->GetBool("ExtConfigs", "SaveMap.PreserveINISorting"); + ExtConfigs::SaveMap_PreserveINIKeySorting = CINI::FAData->GetBool("ExtConfigs", "SaveMap.PreserveINIKeySorting"); // ExtConfigs::SaveMap_MultiPlayOnlySaveYRM = CINI::FAData->GetBool("ExtConfigs", "SaveMap.OnlySaveYRM.MultiPlay"); // ExtConfigs::SaveMap_SinglePlayOnlySaveMAP = CINI::FAData->GetBool("ExtConfigs", "SaveMap.OnlySaveMAP.SinglePlay"); ExtConfigs::SaveMap_DefaultPreviewOptionMP = CINI::FAData->GetInteger("ExtConfigs", "SaveMap.DefaultPreviewOptionMP", 0); @@ -1111,6 +1113,12 @@ void ExtConfigs::UpdateOptionTranslations() .Value = &ExtConfigs::SaveMap_PreserveINISorting, .Type = ExtConfigs::SpecialOptionType::ReloadMap}); + ExtConfigs::Options.push_back(ExtConfigs::DynamicOptions{ + .DisplayName = Translations::TranslateOrDefault("Options.SaveMap.PreserveINIKeySorting", "Preserve existing INI key sorting when saving"), + .IniKey = "SaveMap.PreserveINIKeySorting", + .Value = &ExtConfigs::SaveMap_PreserveINIKeySorting, + .Type = ExtConfigs::SpecialOptionType::ReloadMap}); + ExtConfigs::Options.push_back(ExtConfigs::DynamicOptions{ .DisplayName = Translations::TranslateOrDefault("Options.FileWatcher", "Enable file watcher"), .IniKey = "FileWatcher", diff --git a/FA2sp/FA2sp.h b/FA2sp/FA2sp.h index e3c2ca83..24282171 100644 --- a/FA2sp/FA2sp.h +++ b/FA2sp/FA2sp.h @@ -239,6 +239,7 @@ class ExtConfigs static bool DisableDirectoryCheck; static bool ExtOverlays; static bool SaveMap_PreserveINISorting; + static bool SaveMap_PreserveINIKeySorting; static bool ExtMixLoader; static bool AVX2_Support; static bool AutoDarkMode; @@ -289,16 +290,23 @@ class ExtConfigs static void UpdateOptionTranslations(); }; +#ifndef PPMFC_CSTRING_HASH_DEFINED +#define PPMFC_CSTRING_HASH_DEFINED namespace std { template <> struct hash { - size_t operator()(const ppmfc::CString &str) const + size_t operator()(const ppmfc::CString &str) const noexcept { return hash()(string_view(str, str.GetLength())); } }; +} +#endif + +namespace std +{ template <> struct hash { diff --git a/FA2sp/Helpers/CINIOrderTracker.cpp b/FA2sp/Helpers/CINIOrderTracker.cpp new file mode 100644 index 00000000..a1d81c8c --- /dev/null +++ b/FA2sp/Helpers/CINIOrderTracker.cpp @@ -0,0 +1,111 @@ +#include +#include "CINIOrderTracker.h" + +struct INIOrderData +{ + SequencedKeyList SectionOrder; + std::unordered_map KeyOrder; +}; + +static std::unordered_map g_iniOrderMap; + +void CINIOrderTracker::RecordSection(CINI* ini, const ppmfc::CString& section) +{ + if (ini && !section.IsEmpty()) + { + g_iniOrderMap[ini].SectionOrder.Add(section); + } +} + +void CINIOrderTracker::RecordKey(CINI* ini, const ppmfc::CString& section, const ppmfc::CString& key) +{ + if (ini && !section.IsEmpty() && !key.IsEmpty()) + { + auto& data = g_iniOrderMap[ini]; + data.SectionOrder.Add(section); + data.KeyOrder[section].Add(key); + } +} + +void CINIOrderTracker::RemoveKey(CINI* ini, const ppmfc::CString& section, const ppmfc::CString& key) +{ + if (ini) + { + auto it = g_iniOrderMap.find(ini); + if (it != g_iniOrderMap.end()) + { + auto kIt = it->second.KeyOrder.find(section); + if (kIt != it->second.KeyOrder.end()) + { + kIt->second.Remove(key); + } + } + } +} + +void CINIOrderTracker::RemoveSection(CINI* ini, const ppmfc::CString& section) +{ + if (ini) + { + auto it = g_iniOrderMap.find(ini); + if (it != g_iniOrderMap.end()) + { + it->second.SectionOrder.Remove(section); + it->second.KeyOrder.erase(section); + } + } +} + +void CINIOrderTracker::Clear(CINI* ini) +{ + if (ini) + { + auto it = g_iniOrderMap.find(ini); + if (it != g_iniOrderMap.end()) + { + it->second.SectionOrder.Clear(); + it->second.KeyOrder.clear(); + } + } +} + +const SequencedKeyList* CINIOrderTracker::GetSectionOrder(CINI* ini) +{ + if (ini) + { + auto it = g_iniOrderMap.find(ini); + if (it != g_iniOrderMap.end() && !it->second.SectionOrder.Empty()) + { + return &it->second.SectionOrder; + } + } + return nullptr; +} + +const SequencedKeyList* CINIOrderTracker::GetKeyOrder(CINI* ini, const ppmfc::CString& section) +{ + if (ini) + { + auto it = g_iniOrderMap.find(ini); + if (it != g_iniOrderMap.end()) + { + auto kIt = it->second.KeyOrder.find(section); + if (kIt != it->second.KeyOrder.end() && !kIt->second.Empty()) + { + return &kIt->second; + } + } + } + return nullptr; +} + +SequencedKeyList* CINIOrderTracker::GetOrCreateKeyOrder(CINI* ini, const ppmfc::CString& section) +{ + if (ini && !section.IsEmpty()) + { + auto& data = g_iniOrderMap[ini]; + data.SectionOrder.Add(section); + return &data.KeyOrder[section]; + } + return nullptr; +} diff --git a/FA2sp/Helpers/CINIOrderTracker.h b/FA2sp/Helpers/CINIOrderTracker.h new file mode 100644 index 00000000..77c6c421 --- /dev/null +++ b/FA2sp/Helpers/CINIOrderTracker.h @@ -0,0 +1,20 @@ +#pragma once + +#include +#include +#include "SequencedKeyList.h" + +class CINI; + +class CINIOrderTracker +{ +public: + static void RecordSection(CINI* ini, const ppmfc::CString& section); + static void RecordKey(CINI* ini, const ppmfc::CString& section, const ppmfc::CString& key); + static void RemoveKey(CINI* ini, const ppmfc::CString& section, const ppmfc::CString& key); + static void RemoveSection(CINI* ini, const ppmfc::CString& section); + static void Clear(CINI* ini); + static const SequencedKeyList* GetSectionOrder(CINI* ini); + static const SequencedKeyList* GetKeyOrder(CINI* ini, const ppmfc::CString& section); + static SequencedKeyList* GetOrCreateKeyOrder(CINI* ini, const ppmfc::CString& section); +}; diff --git a/FA2sp/Helpers/SequencedKeyList.h b/FA2sp/Helpers/SequencedKeyList.h new file mode 100644 index 00000000..50ba8492 --- /dev/null +++ b/FA2sp/Helpers/SequencedKeyList.h @@ -0,0 +1,85 @@ +#pragma once + +#include +#include +#include +#include +#include + +#ifndef PPMFC_CSTRING_HASH_DEFINED +#define PPMFC_CSTRING_HASH_DEFINED +namespace std +{ + template <> + struct hash + { + size_t operator()(const ppmfc::CString& str) const noexcept + { + return hash()(string_view(str.m_pchData, str.GetLength())); + } + }; +} +#endif + +class SequencedKeyList +{ +public: + using ListType = std::list; + using MapType = std::unordered_map; + + bool Add(const ppmfc::CString& key) + { + if (m_lookup.find(key) == m_lookup.end()) + { + m_order.push_back(key); + m_lookup[key] = std::prev(m_order.end()); + return true; + } + return false; + } + + bool Remove(const ppmfc::CString& key) + { + auto it = m_lookup.find(key); + if (it != m_lookup.end()) + { + m_order.erase(it->second); + m_lookup.erase(it); + return true; + } + return false; + } + + bool Contains(const ppmfc::CString& key) const + { + return m_lookup.find(key) != m_lookup.end(); + } + + void Clear() + { + m_order.clear(); + m_lookup.clear(); + } + + size_t Size() const + { + return m_order.size(); + } + + bool Empty() const + { + return m_order.empty(); + } + + const ListType& GetOrder() const + { + return m_order; + } + + auto begin() const noexcept { return m_order.begin(); } + auto end() const noexcept { return m_order.end(); } + +private: + ListType m_order; + MapType m_lookup; +}; diff --git a/FA2sp/Miscs/Hooks.INI.cpp b/FA2sp/Miscs/Hooks.INI.cpp index 30ec0120..59c0bcdf 100644 --- a/FA2sp/Miscs/Hooks.INI.cpp +++ b/FA2sp/Miscs/Hooks.INI.cpp @@ -3,6 +3,7 @@ #include "../Ext/CLoading/Body.h" #include "../Helpers/Helper.h" #include "../Helpers/TheaterHelpers.h" +#include "../Helpers/CINIOrderTracker.h" using std::map; using std::vector; @@ -25,6 +26,7 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, { if (bClear) { + CINIOrderTracker::Clear(this); auto itr = Dict.end(); for (size_t i = 0, sz = Dict.size(); i < sz && itr != Dict.begin(); ++i) { --itr; @@ -150,6 +152,8 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, pCurrentSection = AddOrGetSection(CurrentSectionName); } + CINIOrderTracker::RecordSection(this, CurrentSectionName); + if (CMapDataExt::IsLoadingMapFile && ExtConfigs::SaveMap_PreserveINISorting) { auto it = std::find(CMapDataExt::MapIniSectionSorting.begin(), CMapDataExt::MapIniSectionSorting.end(), CurrentSectionName); if (it == CMapDataExt::MapIniSectionSorting.end()) { @@ -217,6 +221,7 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, if (!key.empty()) { size_t currentIndex = pCurrentSection->GetEntities().size(); writeString(pCurrentSection, key, value); + CINIOrderTracker::RecordKey(this, CurrentSectionName, key); if (keepComment) { PendingComment.Trim(); @@ -377,6 +382,7 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, for (const auto& [key, value] : targetIndicies) { writeString(pTargetSection, key, value); + CINIOrderTracker::RecordKey(this, sectionName, key); std::pair ins = std::make_pair((ppmfc::CString)key, index++); @@ -482,6 +488,7 @@ void CINIExt::InheritSectionRecursive(const ppmfc::CString& sectionName, size_t currentIndex = pSection->GetEntities().size(); writeString(pSection, key, value); + CINIOrderTracker::RecordKey(this, sectionName, key); std::pair ins = std::make_pair((ppmfc::CString)key, (int)currentIndex); @@ -680,12 +687,69 @@ DEFINE_HOOK(4536B0, CINI_WriteToFile, 8) } std::ostringstream oss; - for (auto& [sectionName, pSection] : pThis->Dict) + auto writeSection = [&](const ppmfc::CString& sectionName, INISection& section) { oss << "[" << sectionName << "]\n"; - for (const auto& pair : pSection.GetEntities()) - oss << pair.first << "=" << pair.second << "\n"; + if (ExtConfigs::SaveMap_PreserveINIKeySorting) + { + const auto* pKeyOrder = CINIOrderTracker::GetKeyOrder(pThis, sectionName); + if (pKeyOrder) + { + for (const auto& key : *pKeyOrder) + { + auto it = section.GetEntities().find(key); + if (it != section.GetEntities().end()) + { + oss << it->first << "=" << it->second << "\n"; + } + } + } + for (const auto& pair : section.GetEntities()) + { + if (!pKeyOrder || !pKeyOrder->Contains(pair.first)) + { + CINIOrderTracker::RecordKey(pThis, sectionName, pair.first); + oss << pair.first << "=" << pair.second << "\n"; + } + } + } + else + { + for (const auto& pair : section.GetEntities()) + oss << pair.first << "=" << pair.second << "\n"; + } oss << "\n"; + }; + + if (ExtConfigs::SaveMap_PreserveINISorting) + { + const auto* pSectionOrder = CINIOrderTracker::GetSectionOrder(pThis); + if (pSectionOrder) + { + for (const auto& secName : *pSectionOrder) + { + auto it = pThis->Dict.find(secName); + if (it != pThis->Dict.end()) + { + writeSection(it->first, it->second); + } + } + } + for (auto& [sectionName, pSection] : pThis->Dict) + { + if (!pSectionOrder || !pSectionOrder->Contains(sectionName)) + { + CINIOrderTracker::RecordSection(pThis, sectionName); + writeSection(sectionName, pSection); + } + } + } + else + { + for (auto& [sectionName, pSection] : pThis->Dict) + { + writeSection(sectionName, pSection); + } } FString output = oss.str(); diff --git a/FA2sp/Miscs/SaveMap.cpp b/FA2sp/Miscs/SaveMap.cpp index b90d3ea9..72330a77 100644 --- a/FA2sp/Miscs/SaveMap.cpp +++ b/FA2sp/Miscs/SaveMap.cpp @@ -33,6 +33,7 @@ #include "../Ext/CFinalSunApp/Body.h" #include "../Helpers/Helper.h" #include "../Helpers/TheaterHelpers.h" +#include "../Helpers/CINIOrderTracker.h" std::optional SaveMapExt::SaveTime; @@ -709,7 +710,7 @@ bool SaveMapExt::SaveMap(CINI* pINI, CFinalSunDlg* pFinalSun, FString filepath, includeIni->LoadINIExt((uint8_t*)buffer.data(), buffer.length(), nullptr, true, true, true, ¤tIncludeInis); } - auto saveSection = [&oss, &pInclude, &includeIni](INISection* pSection, FString sectionName) + auto saveSection = [&oss, &pInclude, &includeIni, pINI](INISection* pSection, FString sectionName) { bool hasInclude = includeIni && includeIni->SectionExists(sectionName); bool wroteSection = false; @@ -760,57 +761,66 @@ bool SaveMapExt::SaveMap(CINI* pINI, CFinalSunDlg* pFinalSun, FString filepath, wroteSection = true; }; - if (hasInclude) + auto writeEntry = [&](const ppmfc::CString& key, const ppmfc::CString& value) { - auto pIncludeSection = includeIni->GetSection(sectionName); - auto& keys = pIncludeSection->GetEntities(); + if (hasInclude) + { + if (auto pIncludeSection = includeIni->GetSection(sectionName)) + { + auto& keys = pIncludeSection->GetEntities(); + auto itr = keys.find(key); + if (itr != keys.end() && itr->second == value) + return; + } + } - for (auto& pair : pSection->GetEntities()) + writeSectionHeaderOnce(); + + auto fkIt = CMapDataExt::MapFrontlineComments[sectionName].find(key); + if (fkIt != CMapDataExt::MapFrontlineComments[sectionName].end()) { - auto itr = keys.find(pair.first); - if (itr != keys.end() && itr->second == pair.second) - continue; + writeCommentBlock(fkIt->second); + } - writeSectionHeaderOnce(); + oss << key << "=" << value; - auto fkIt = CMapDataExt::MapFrontlineComments[sectionName].find(pair.first); - if (fkIt != CMapDataExt::MapFrontlineComments[sectionName].end()) - { - writeCommentBlock(fkIt->second); - } + auto ikIt = CMapDataExt::MapInlineComments[sectionName].find(key); + if (ikIt != CMapDataExt::MapInlineComments[sectionName].end()) + { + oss << " ; " << ikIt->second; + } - oss << pair.first << "=" << pair.second; + oss << "\n"; + }; - auto ikIt = CMapDataExt::MapInlineComments[sectionName].find(pair.first); - if (ikIt != CMapDataExt::MapInlineComments[sectionName].end()) + if (ExtConfigs::SaveMap_PreserveINIKeySorting) + { + const auto* pKeyOrder = CINIOrderTracker::GetKeyOrder(pINI, sectionName); + if (pKeyOrder) + { + for (const auto& key : *pKeyOrder) { - oss << " ; " << ikIt->second; + auto it = pSection->GetEntities().find(key); + if (it != pSection->GetEntities().end()) + { + writeEntry(it->first, it->second); + } + } + } + for (const auto& pair : pSection->GetEntities()) + { + if (!pKeyOrder || !pKeyOrder->Contains(pair.first)) + { + CINIOrderTracker::RecordKey(pINI, sectionName, pair.first); + writeEntry(pair.first, pair.second); } - - oss << "\n"; } } else { for (const auto& pair : pSection->GetEntities()) { - writeSectionHeaderOnce(); - - auto fkIt = CMapDataExt::MapFrontlineComments[sectionName].find(pair.first); - if (fkIt != CMapDataExt::MapFrontlineComments[sectionName].end()) - { - writeCommentBlock(fkIt->second); - } - - oss << pair.first << "=" << pair.second; - - auto ikIt = CMapDataExt::MapInlineComments[sectionName].find(pair.first); - if (ikIt != CMapDataExt::MapInlineComments[sectionName].end()) - { - oss << " ; " << ikIt->second; - } - - oss << "\n"; + writeEntry(pair.first, pair.second); } } @@ -853,31 +863,64 @@ bool SaveMapExt::SaveMap(CINI* pINI, CFinalSunDlg* pFinalSun, FString filepath, if (!SaveMapExt::IsAutoSaving && ExtConfigs::SaveMap_PreserveINISorting) { - for (const auto& sectionName : CMapDataExt::MapIniSectionSorting) + const auto* pSectionOrder = CINIOrderTracker::GetSectionOrder(pINI); + if (pSectionOrder && !pSectionOrder->Empty()) { - if (!strcmp(sectionName, "Preview") - || !strcmp(sectionName, "PreviewPack") - || !strcmp(sectionName, "Header") - || !strcmp(sectionName, "Digest")) - continue; + for (const auto& sectionName : *pSectionOrder) + { + if (!strcmp(sectionName, "Preview") + || !strcmp(sectionName, "PreviewPack") + || !strcmp(sectionName, "Header") + || !strcmp(sectionName, "Digest")) + continue; - if (const auto pSection = pINI->GetSection(sectionName)) + if (const auto pSection = pINI->GetSection(sectionName)) + { + saveSection(pSection, sectionName); + } + } + for (auto& section : pINI->Dict) { - saveSection(pSection, sectionName); + if (!strcmp(section.first, "Preview") + || !strcmp(section.first, "PreviewPack") + || !strcmp(section.first, "Header") + || !strcmp(section.first, "Digest")) + continue; + + if (!pSectionOrder->Contains(section.first)) + { + saveSection(§ion.second, section.first); + } } } - for (auto& section : pINI->Dict) + else { - if (!strcmp(section.first, "Preview") - || !strcmp(section.first, "PreviewPack") - || !strcmp(section.first, "Header") - || !strcmp(section.first, "Digest")) - continue; + for (const auto& sectionName : CMapDataExt::MapIniSectionSorting) + { + if (!strcmp(sectionName, "Preview") + || !strcmp(sectionName, "PreviewPack") + || !strcmp(sectionName, "Header") + || !strcmp(sectionName, "Digest")) + continue; - auto it = std::find(CMapDataExt::MapIniSectionSorting.begin(), CMapDataExt::MapIniSectionSorting.end(), section.first); - if (it == CMapDataExt::MapIniSectionSorting.end()) + if (const auto pSection = pINI->GetSection(sectionName)) + { + saveSection(pSection, sectionName); + } + } + for (auto& section : pINI->Dict) { - saveSection(§ion.second, section.first); + if (!strcmp(section.first, "Preview") + || !strcmp(section.first, "PreviewPack") + || !strcmp(section.first, "Header") + || !strcmp(section.first, "Digest")) + continue; + + auto it = std::find(CMapDataExt::MapIniSectionSorting.begin(), CMapDataExt::MapIniSectionSorting.end(), section.first); + if (it == CMapDataExt::MapIniSectionSorting.end()) + { + saveSection(§ion.second, section.first); + } } } } diff --git a/Supplementary/FAData.ini b/Supplementary/FAData.ini index c5b9f317..1f7a6c90 100644 --- a/Supplementary/FAData.ini +++ b/Supplementary/FAData.ini @@ -252,6 +252,10 @@ SaveMap.KeepComments=false ; BOOLEAN ; ä¿�存地图时维æŒ�已有的 ini å°�节顺åº� SaveMap.PreserveINISorting=false +; BOOLEAN ; Preserve existing INI key order within sections when saving maps +; BOOLEAN ; ä¿�存地图时维æŒ�å°�节内已有的 ini 键值顺åº� +SaveMap.PreserveINIKeySorting=false + ; Number of recent maps to remember; range 4-9 ; 记录多少个最近打开地图, å�–值范围为4-9 RecentFileLimit=9 diff --git a/Supplementary/FALanguage_Chinese.ini b/Supplementary/FALanguage_Chinese.ini index 51d8f2a7..d5ecaeaa 100644 --- a/Supplementary/FALanguage_Chinese.ini +++ b/Supplementary/FALanguage_Chinese.ini @@ -1865,6 +1865,7 @@ SwitchConnectedTypeIsWaterCliff=(水上) Options.ExtFacings=å�¯ç”¨32å�‘é�¢å�‘ Options.ExtFacings.Drag=å�¯ç”¨32å�‘拖拽 Options.SaveMap.PreserveINISorting=ä¿�存时维æŒ�已有的iniå°�节顺åº� +Options.SaveMap.PreserveINIKeySorting=ä¿�存时维æŒ�已有的ini键值顺åº� Options.Title=å��好设置 Options.UndoRedo.RecordObjects=记录游æˆ�对象修改历å�² Options.ExtMixLoader=å�¯ç”¨æ–°çš„Mix加载方å¼� diff --git a/Supplementary/FALanguage_English.ini b/Supplementary/FALanguage_English.ini index 14c7e69c..9805e894 100644 --- a/Supplementary/FALanguage_English.ini +++ b/Supplementary/FALanguage_English.ini @@ -1181,6 +1181,7 @@ SwitchConnectedTypeIsWaterCliff=(Water) Options.ExtFacings=Enable 32 facings support Options.ExtFacings.Drag=Allow drag units into 32 facings Options.SaveMap.PreserveINISorting=Preserve existing INI section sorting when saving +Options.SaveMap.PreserveINIKeySorting=Preserve existing INI key sorting when saving Options.Title=Preferences Options.UndoRedo.RecordObjects=Record editing history of objects Options.ExtMixLoader=Enable new mix loader diff --git a/Supplementary/RevengeNow/FAData.ini b/Supplementary/RevengeNow/FAData.ini new file mode 100644 index 00000000..2078d472 --- /dev/null +++ b/Supplementary/RevengeNow/FAData.ini @@ -0,0 +1,11687 @@ +; FAData.ini - Data file for FinalAlert 2: Yuri's Revenge (tm) +; This file offers data for FinalAlert 2 + +; Debug section: use carefully! +[Debug] +;DisplayAllOverlay=true ; Doesn't cripple the overlay list in any way +EnableTrackLogic=true ; Enables Track Logic +;IgnoreSHPImageHeadUnused=true ; Use this *carefully* to make SHP graphics of some mods work that incorrectly have the shadow flag set +AllowTunnels=true ; Enables tunnel editing +AllowUnidirectionalTunnels=true +RenderPlainHouseColor=true + +; Recursive inclusion is not supported +[Include] +0=FAData_RandomPlacement.ini +1=FAData_ObjectBrowser.ini +2=FAData_TriggerAndScript.ini +3=FAData_Customized.ini + +[ExtConfigs] +; BOOLEAN ; Enables the redesigned ObjectBrowserView +; BOOLEAN ; å�¯ç”¨é‡�æž„å�Žçš„ ObjectBrowserView +BrowserRedraw=true + +; 0/1 ; Controls how FA2sp guesses a unit house: 0 (default) uses Prerequisite, 1 uses the first Owner +; 0/1 ; 决定 FA2sp 如何猜测å�•ä½�的阵è�? 0(默认)为Prerequisite, 1为第一个Owner +ObjectBrowser.GuessMode=0 + +; INTERGER ; Maximum number of sides to guess; higher values return Other (-1). Default 15 +; INTERGER ; 决定猜测阵è�¥çš„æœ€å¤§å€? 如果超过该值则返回为其ä»?-1), 默认ä¸?15 +ObjectBrowser.GuessMax=15 + +; BOOLEAN ; Remove empty entries from house categories +; BOOLEAN ; 阵è�¥åˆ†ç±»ä¼šæ¸…除空项目 +ObjectBrowser.CleanUp=true + +; BOOLEAN ; Hide houses that cannot be used +; BOOLEAN ; 决定 FA2sp 是å�¦å±�蔽掉ä¸�能使用的所属方 +ObjectBrowser.SafeHouses=true + +; BOOLEAN ; Additionally group structures by foundation size +; BOOLEAN ; 是å�¦ä¼šé¢�外按照建筑大å°�进行分ç±?ObjectBrowser.Foundation=false + +; BOOLEAN ; Use random ore in placing +; BOOLEAN ; 是å�¦åœ¨æ‘†æ”¾çŸ¿çŸ³æ—¶éš�机图åƒ� +ObjectBrowser.Ore.RandomPlacement=false + +; BOOLEAN ; Display extra two types of ores in "Ore and Gems" +; BOOLEAN ; 是å�¦åœ¨â€œé‡‘矿和水晶â€�中支æŒ�é¢�外矿石类型的摆æ”?ObjectBrowser.Ore.ExtraSupport=false + +; BOOLEAN ; Load EditorCategory in rules into object viewer +; BOOLEAN ; æ ¹æ�®å�•ä½�rules中的EditorCategory在对象查看器中分ç±?GridObjectViewer.LoadEditorCategory=true + +; BOOLEAN ; Load ForceSides in rules into object viewer +; BOOLEAN ; æ ¹æ�®å�•ä½�çš„ForceSides在对象查看器中分ç±?GridObjectViewer.LoadForceSides=true + +; BOOLEAN ; Load smudges/terrains/overlays into object viewer based on their ObjectBrowser group +; BOOLEAN ; æ ¹æ�®æ±¡æŸ“/地形对象/覆盖物在物å“�æµ�览器中的分组在对象查看器中分类 +GridObjectViewer.LoadObjectBrowserCategory=true + +; BOOLEAN ; Load the special civilian translation file (fa2civilian.csf) +; BOOLEAN ; 是å�¦åŠ è½½å¯¹å¹³æ°‘å�•ä½?建筑的特殊翻è¯?(fa2civilian.csf) +LoadCivilianStringtable=true + +; BOOLEAN ; Reload supporting files from the map folder without reconfiguring FinalAlert.ini; default false +; BOOLEAN ; 是å�¦ä»Žåœ°å›¾æ–‡ä»¶å¤¹é‡�新读å�–所有文ä»? 而ä¸�需è¦�é‡�新设ç½?FinalAlert.ini, 默认ä¸?false +ReloadGameFromMapFolder=true + +; BOOLEAN ; Reload game INIs when opening map file; default false +; BOOLEAN ; 是å�¦åœ¨æ‰“开地图时é‡�新加载游æˆ�ini, 默认ä¸?false +ReloadIniWhenOpeningMap=false + +; BOOLEAN ; Load game resources from map folder when directly open map; default false +; BOOLEAN ; å�Œå‡»æ‰“开地图文件时,从地图目录加载资æº�æ–‡ä»? 默认ä¸?false +LoadGameFromMapFolder.OnInit=false + +; BOOLEAN ; Read #include sections to load additional INI files (not recommended) +; BOOLEAN ; 读å�– #include 部分以获å�–å…¶ä»?ini(ä¸�推è�? +AllowIncludes=true + +; BOOLEAN ; Load inherited INI sections (not recommended) +; BOOLEAN ; 读å�–继承的INIå°�节(ä¸�推è�? +AllowInherits=false + +; BOOLEAN ; section name of include (yes = $Include(Phobos), no = #include(Ares)) +; BOOLEAN ; includeå°�节的å��ç§?(yes = $Include(Phobos), no = #include(Ares)) +IncludeType=false + +; BOOLEAN ; section name of inherit (yes = $Inherit(Phobos), no = []:[](Ares)) +; BOOLEAN ; inheritå°�节的å��ç§?(yes = $Inherit(Phobos), no = []:[](Ares)) +InheritType=false + +; BOOLEAN ; Allow the += syntax (not recommended) +; BOOLEAN ; 读å�– += (ä¸�推è�? +AllowPlusEqual=true + +; BOOLEAN ; Read Image= from infantry, vehicle, and aircraft art(md) +; BOOLEAN ; 读å�–步兵, 车辆, 飞行å™?art(md) 中的Image= +ArtImageSwap=false + +; BOOLEAN ; When enabled, selecting a CSF text argument opens the CSF browser +; BOOLEAN ; å�¯ç”¨æ­¤åŠŸèƒ½å�Ž, 当触å�‘å�‚数为CSF文本æ—? 点击下拉è�œå�•会弹出CSFæµ�览å™?TutorialTexts.Viewer=true + +; BOOLEAN ; Ask for confirmation when deleting sub-entries of triggers/scripts, etc. +; BOOLEAN ; 删除删除触å�‘/脚本等的å­�æ�¡ç›®æ—¶æ˜¯å�¦éœ€è¦�ç¡®è®?ConfirmDelete.SubEntries=false + +; BOOLEAN ; Clone triggers/teams/taskforces/scripts/AI triggers with an incrementing suffix instead of "Clone" +; BOOLEAN ; å�¯ç”¨æ­¤åŠŸèƒ½å�Ž, å¤�制触å�‘ã€�å°�队ã€�特é�£ã€�脚本ã€�AI触å�‘时,都会在å��称最å�Žæ–°å¢žé€’增编å�·ï¼Œè€Œä¸�是Clone +CloneWithOrderedID=true + +; BOOLEAN ; When creating new triggers/teams/taskforces/scripts/AI triggers, always use an incremented index (max + 1) instead of searching for the first available index +; BOOLEAN ; å�¯ç”¨æ­¤åŠŸèƒ½å�Ž, 创建触å�‘ã€�å°�队ã€�特é�£ã€�脚本ã€�AI触å�‘时,会在当å‰�最大IDå�Žé€’增,而ä¸�是寻找第一个å�¯ç”¨ID +UseSequentialIndexing=false + +; Independent suffixes (such as -TR for trigger) will be assigned when creating triggers, teams, taskforces, scripts, and AI triggers +; å�¯ç”¨æ­¤åŠŸèƒ½å�Ž, 创建触å�‘ã€�å°�队ã€�特é�£ã€�脚本ã€�AI触å�‘时,会分é…�独立的å�Žç¼€ï¼ˆå¦‚触å�‘å�Žç¼€ä¸?TRï¼? +UseSeparateIndexing=false + +; BOOLEAN ; Automatically adjust dropdown widths +; BOOLEAN ; å�¯ç”¨å�? FA2 将自动调整下拉è�œå�•宽åº?AdjustDropdownWidth=true + +; INTERGER ; Character width factor; default 8 +; INTERGER ; å�•个字符å� ç”¨ç©ºé—´, 默认ä¸? +AdjustDropdownWidth.Factor=6 + +; INTERGER ; Maximum dropdown width; default 360 +; INTERGER ; 下拉è�œå�•的最大长åº? 默认ä¸?60 +AdjustDropdownWidth.Max=420 + +; BOOLEAN ; Display the disabled status of the trigger in the dropdown menu of the trigger editor; default true +; BOOLEAN ; 在触å�‘编辑器下拉è�œå�•显示触å�‘çš„ç¦�止状æ€? 默认ä¸?true +DisplayTriggerEnableInfo=true + +; BOOLEAN ; Check whether attached trigger is itself, default true +; BOOLEAN ; 检查下级触å�‘是å�¦æ˜¯è‡ªèº«, 默认ä¸?true +AttachedTriggerIsSelfCheck=true + +; BOOLEAN ; Sort by name instead of ID in trigger/team/taskforce/script/terrain generator editors +; BOOLEAN ; 在触å�‘编辑器ã€�å°�队ã€�特é�£éƒ¨é˜Ÿã€�动作脚本ã€�地形生æˆ�器ä¸? 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº� +SortByLabelName=true + +; BOOLEAN ; Override sorting for teams to use names instead of IDs +; BOOLEAN ; 在排åº�å°�队时, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 +SortByLabelName.Team=true + +; BOOLEAN ; Override sorting for scripts to use names instead of IDs +; BOOLEAN ; 在排åº�脚本时, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 +SortByLabelName.Script=true + +; BOOLEAN ; Override sorting for triggers to use names instead of IDs +; BOOLEAN ; 在排åº�触å�‘æ—¶, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 +SortByLabelName.Trigger=true + +; BOOLEAN ; Override sorting for AI triggers to use names instead of IDs +; BOOLEAN ; 在排åº�AI触å�‘æ—? 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 +SortByLabelName.AITrigger=true + +; BOOLEAN ; Override sorting for taskforces to use names instead of IDs +; BOOLEAN ; 在排åº�特é�£éƒ¨é˜Ÿæ—¶, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 +SortByLabelName.Taskforce=true + +; BOOLEAN ; Override sorting for tags to use names instead of IDs +; BOOLEAN ; 在排åº�标签时, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 +SortByLabelName.Tag=true + +; BOOLEAN ; Disable automatic search for dropdown menus; search only when pressing Enter; default false +; BOOLEAN ; 是å�¦ç¦�止下拉è�œå�•的自动æ�œç´¢ï¼Œè‹¥ç¦�止,需è¦�按Enter执行æ�œç´¢, 默认ä¸?false +SearchCombobox.Disabled=false + +; BOOLEAN ; Allow automatic search for non-parameter (trigger actiontype, eventtype, etc) dropdown menus; default true +; BOOLEAN ; 是å�¦å…�许é�žå�‚数项(触å�‘事件ã€�行为ç§�类等)下拉è�œå�•的自动æ�œç´? 默认ä¸?true +SearchCombobox.AllowNonParams=true + +; BOOLEAN ; Enable auto-search when entering waypoints; default false +; BOOLEAN ; 是å�¦åœ¨ä¸‹æ‹‰è�œå�•中输入路径点时自动弹出æ�œç´¢, 默认ä¸?false +SearchCombobox.Waypoint=false + +; BOOLEAN ; Disable Lua console safety check; default false +; BOOLEAN ; 是å�¦ç¦�用Lua脚本安全检æŸ? 默认ä¸?false +DisableLuaConsoleSafetyCheck=false + +; BOOLEAN ; Display real HP in techno dialogs; default true +; BOOLEAN ; 是å�¦åœ¨å�•ä½�属性窗å�£å†…显示真实血é‡? 默认ä¸?true +DisplayRealHPinTechnoDlg=true + +; COLORREF(R,G,B) ; Outline color when copying; default 255,0,0. Range 0-255 +; COLORREF(R,G,B) ; å¤�制时æ��边的颜色, 默认ä¸?255,0,0. å�–值范围为0-255 +CopySelectionBound.Color=255,0,0 + +; COLORREF(R,G,B) ; Outline color for the hovered cell; default 60,160,60. Range 0-255 +; COLORREF(R,G,B) ; 鼠标所指å�•元格的æ��边的颜色, 默认ä¸?60,160,60. å�–值范围为0-255 +CursorSelectionBound.Color=30,30,255 + +; COLORREF(R,G,B) ; Dashed height indicator color; default 60,60,60. Range 0-255 +; COLORREF(R,G,B) ; 指示高度的虚线的颜色, 默认ä¸?60,60,60. å�–值范围为0-255 +CursorSelectionBound.HeightIndicatorColor=60,60,160 + +; BOOLEAN ; Adjust outline color by height level; default false +; BOOLEAN ; 是å�¦æ ¹æ�®å½“å‰�高度显示ä¸�å�Œçš„æ��边颜è‰? 默认ä¸?false +CursorSelectionBound.AutoHeightColor=true + +; BOOLEAN ; Auto-detect encoding when opening INI and map files +; BOOLEAN ; 是å�¦åœ¨æ‰“å¼€ini和地图文件时自动推断编ç �, 默认ä¸?true +UTF8Support.InferEncoding=true + +; BOOLEAN ; Always save maps using UTF-8 encoding +; BOOLEAN ; 是å�¦æ€»æ˜¯ä»¥UTF8ç¼–ç �ä¿�存地图, 默认ä¸?false +UTF8Support.AlwaysSaveAsUTF8=false + +; BOOLEAN ; Enable automatic map saves +; BOOLEAN ; 是å�¦è‡ªåЍä¿�存地图 +SaveMap.AutoSave=true + +; INTEGER ; Interval between autosaves in seconds; must be >= 30, default 300 +; INTEGER ; 应大于或等于30, 默认值为300, 决定两次自动ä¿�存间隔多少秒钟 +SaveMap.AutoSave.Interval=360 + +; INTEGER ; Number of backups to keep; -1 disables automatic cleanup. Default 10 +; INTEGER ; ä¿�存几个副本, 设置ä¸?1å°†ç¦�用自动删除备份功èƒ? 默认ä¸?0 +SaveMap.AutoSave.MaxCount=10 + +; BOOLEAN ; Only save maps in .map format +; BOOLEAN ; å�ªä»¥.mapæ ¼å¼�ä¿�存地图 +SaveMap.OnlySaveMAP=false + +; Generate preview option when saving multiplayer maps. 0 create new, 1 reuse existing, 2 solid black. Default 0 +; ä¿�存多人游æˆ�地图时生æˆ�预览的默认选项.0 生产新的预览, 1 使用已存在的, 2 使用纯黑预览. 默认ä¸? +SaveMap.DefaultPreviewOptionMP=0 + +; Same as above for singleplayer missions +; å�Œä¸Š, å�•人战役 +SaveMap.DefaultPreviewOptionSP=2 + +; BOOLEAN ; Produce higher fidelity RA2-style previews when generating new previews (multiplayer only) +; BOOLEAN ; 选择生æˆ�新的预览æ—? 生æˆ�更精细的, 原版风格的预览图 (仅支æŒ�多人游æˆ? +SaveMap.BetterMapPreview=true + +; BOOLEAN ; Add an encoding warning comment at the top when saving maps +; BOOLEAN ; ä¿�存地图时在开头添加编ç �警告注é‡?SaveMap.FileEncodingComment=true + +; BOOLEAN ; Keep existing comments when saving maps, ini editor can also save and display comments +; BOOLEAN ; ä¿�存地图时ä¿�留注é‡? ini编辑器也å�¯ä»¥ä¿�存并显示注é‡?SaveMap.KeepComments=true + +; BOOLEAN ; Preserve existing INI section order when saving maps +; BOOLEAN ; ä¿�存地图时维æŒ�已有的 ini å°�节顺åº� +SaveMap.PreserveINISorting=true + +; BOOLEAN ; Preserve existing INI key order within sections when saving maps +; BOOLEAN ; ä¿�存地图时维æŒ�å°�节内已有çš?ini 键值顺åº?SaveMap.PreserveINIKeySorting=true + +; Number of recent maps to remember; range 4-9 +; 记录多少个最近打开地图, å�–值范围为4-9 +RecentFileLimit=9 + +; BOOLEAN ; Enable unlimited waypoints; default false (requires Phobos) +; BOOLEAN ; å�¯ç”¨æ— é™�路径ç‚? 默认ä¸?false (需è¦�Phobos) +ExtWaypoints=true + +; BOOLEAN ; Enable unlimited variables; default false (requires Phobos) +; BOOLEAN ; å�¯ç”¨æ— é™�å�˜é‡�, 默认ä¸?false (需è¦�Phobos) +ExtVariables=true + +; BOOLEAN ; Enable unlimited overlays; switches NewINIFormat to 5 when overlay index exceeds 255. Default false (requires Phobos) +; BOOLEAN ; å�¯ç”¨æ— é™�覆盖ç‰? 当地图中覆盖物索引超è¿?55æ—? 会自动将 NewINIFormat 切æ�¢ä¸?5, 默认ä¸?false (需è¦�Phobos) +ExtOverlays=true + +; BOOLEAN ; Enable 32 facing directions; increases memory usage. Default false +; BOOLEAN ; å�¯ç”¨32å�‘é�¢å�? 会导致内存å� ç”¨å¢žå¤? 默认ä¸?false +ExtFacings=false + +; BOOLEAN ; Allow drag placement for 32 facings by holding Ctrl; otherwise 8 facings. Default false +; BOOLEAN ; å�¯ç”¨32å�‘æ‹–æ‹? 如果该值为 true, 则按ä½?ctrl 对å�•ä½�进行拖拽å�¯é€?2å�? å�¦åˆ™ä¸?å�? 默认ä¸?false +ExtFacings.Drag=false + +; BOOLEAN ; Show a live preview while dragging facings. Default true +; BOOLEAN ; å�¯ç”¨æ‹–拽é�¢å�‘的实时预è§? 默认ä¸?true +ExtFacings.DragPreview=true + +; BOOLEAN ; Allow scroll units into 32 facings when placing; otherwise 8 facings. Default false +; BOOLEAN ; å�¯ç”¨32å�‘的摆放时滚轮调整æœ�å�? å�¦åˆ™ä¸?å�? 默认ä¸?false +ExtFacings.Scroll=false + +; BOOLEAN ; Allow vehicles and aircraft to tilt on slopes. Default false +; BOOLEAN ; 车辆和飞行器在斜å�¡ä¸Šæ˜¾ç¤ºå€¾æ–œå›¾åƒ�, 默认ä¸?false +ExtTilts=false + +; BOOLEAN ; Enable the new MIX loader to reduce memory leaks. Default true +; BOOLEAN ; å�¯ç”¨æ–°çš„ Mix 加载å™? å�¯ä»¥å‡�少内存泄æ¼�, 默认ä¸?true +ExtMixLoader=true + +; BOOLEAN ; Load all in-map objects during map initialization to reduce lag during use. Default false +; BOOLEAN ; 在地图åˆ�始化时加载所有地图内对象, å�¯ä»¥å‡�少使用中å�¡é¡? 默认ä¸?false +LoadObjectsOnInit=false + +; INTEGER ; Number of undo/redo steps; default 64 +; INTEGER ; å�¯ä»¥è¿›è¡Œå¤šå°‘次撤销/é‡�å�š, 默认ä¸?4. +UndoRedoLimit=250 + +; BOOLEAN ; Holding Shift while placing terrain counts as a single history entry. Default true +; BOOLEAN ; 如果该值为 true, 则按ä½�shift放置地形时的å�˜åŠ¨ä»…è®°å½•ä¸€æ¬¡åŽ†å�²è®°å½? 撤销会全部撤销, 默认ä¸?true +UndoRedo.ShiftPlaceTile=true + +; BOOLEAN ; Holding placement when drawing overlays counts as a single history entry. Default true +; BOOLEAN ; 如果该值为 true, 则长按放置覆盖图时的å�˜åŠ¨ä»…è®°å½•ä¸€æ¬¡åŽ†å�²è®°å½? 撤销会全部撤销, 默认ä¸?true +UndoRedo.HoldPlaceOverlay=true + +; BOOLEAN ; Track history for game object edits. Default true +; BOOLEAN ; 如果该值为 true, 记录游æˆ�对象的修改历å�? 默认ä¸?true +UndoRedo.RecordObjects=true + +; BOOLEAN ; Draw a rectangle background for waypoints. Default false +; BOOLEAN ; 为路径点绘制矩形背景, 默认ä¸?false +Waypoint.Background=true + +; COLORREF(R,G,B) ; Waypoint background color. Range 0-255 +; COLORREF(R,G,B) ; 路径点背景的颜色. å�–值范围为0-255 +Waypoint.Background.Color=0,0,255 + +; COLORREF(R,G,B) ; Waypoint number color; default 0,0,255. Range 0-255 +; COLORREF(R,G,B) ; 路径点数字的颜色, 默认ä¸?0,0,255. å�–值范围为0-255 +Waypoint.Color=255,255,0 + +; X,Y offset for waypoint text, default 0,0 +; 路径点文本的X,Yå��æ ‡å��ç§»å€? 默认ä¸?0,0. +Waypoint.Text.ExtraOffset=0,0 + +; BOOLEAN ; Skip game directory validation (including ra2.mix). Default false +; BOOLEAN ; ç¦�用游æˆ�目录检æµ? å�¯ç”¨å�Žå°†ä¸�会检查游æˆ�目录是å�¦æœ‰æ•?(包括ra2.mix), 默认ä¸?false +DisableDirectoryCheck=false + +; COLORREF(R,G,B) ; Base node index color. Range 0-255 +; COLORREF(R,G,B) ; 基地节点索引å�·é¢œè‰? å�–值范围为0-255 +BaseNodeIndex.Color=255,255,0 + +; BOOLEAN ; Draw a rectangle background for index numbers. Default false +; BOOLEAN ; 为索引å�·ç»˜åˆ¶çŸ©å½¢èƒŒæ™¯, 默认ä¸?false +BaseNodeIndex.Background=true + +; COLORREF(R,G,B) ; Background color of basenode index. Range 0-255 +; COLORREF(R,G,B) ; 基地节点索引的背景颜è‰? å�–值范围为0-255 +BaseNodeIndex.Background.Color=60,60,60 + +; BOOLEAN ; Move the tile browser from bottom to right pane. Default false +; BOOLEAN ; 将地形æµ�览器从底部移至å�³ä¾? 默认ä¸?false +VerticalLayout=true + +; BOOLEAN ; Display tile browser as a standalone window. Default false +; BOOLEAN ; 将地形æµ�览器作为独立窗å�£æ˜¾ç¤º, 默认ä¸?false +TileSetBrowserFloating=false + +; BOOLEAN ; Display tile browser tabs in multiple rows to avoid horizontal scrolling. Default false +; BOOLEAN ; 地形æµ�览器标签页多行显示, é�¿å…�横å�‘滚动, 默认ä¸?false +TileSetBrowserMultiLineTabs=false + +; BOOLEAN ; Display object browser as a standalone window. Default false +; BOOLEAN ; 将物å“�æµ�览器作为独立窗å�£æ˜¾ç¤º, 默认ä¸?false +ViewObjectsFloating=false + +; BOOLEAN ; Enable dark theme. Default false +; BOOLEAN ; å�¯ç”¨æš—色模å¼�, 默认ä¸?false +EnableDarkMode=false + +; BOOLEAN ; Dim the map view when dark theme is active. Default false +; BOOLEAN ; å�¯ç”¨æš—色模å¼�æ—? 将地图视图整体å�˜æš? 默认ä¸?false +EnableDarkMode.DimMap=false + +; BOOLEAN ; Follow the system dark theme setting; checked only at startup. Default true +; BOOLEAN ; FA2 将跟éš�系统暗色模å¼? 仅会在å�¯åŠ¨æ—¶æ£€æµ? ä¸�能实时切æ�¢, 默认ä¸?true +AutoDarkMode=true + +; DOUBLE ; Scheduled dark theme start in 24-hour time; decimals allowed. Default -1 +; DOUBLE ; 指定进入暗色模å¼�的时é—? 24å°�æ—¶åˆ? å�¯ä»¥å¡«å°�æ•? 默认ä¸?-1 +AutoDarkMode.StartTime=-1 + +; DOUBLE ; Scheduled dark theme end in 24-hour time; decimals allowed. Default -1 +; DOUBLE ; 指定离开暗色模å¼�的时é—? 24å°�æ—¶åˆ? å�¯ä»¥å¡«å°�æ•? 默认ä¸?-1 +AutoDarkMode.EndTime=-1 + +; BOOLEAN ; Enable high-DPI awareness, Default true +; BOOLEAN ; å�¯ç”¨é«˜DPI感知, 默认ä¸?true +HiDPIAwareness=true + +; BOOLEAN ; Match IsoView default zoom to system scaling when high-DPI awareness is enabled, Default false +; BOOLEAN ; å�¯ç”¨é«?DPI 感知时,使地图视图默认匹é…�系统缩放比ä¾? 默认ä¸?true +HiDPIAwareness.ScaleIsoView=true + +; COLORREF(R,G,B) ; Highlight color for multi-selection cells +; COLORREF(R,G,B) ; 多选å�•元格功能中选中å�—的颜色 +MultiSelectionColor=255,47,255 + +; FLOAT ; Opacity of the overlay color on multi-selected cells +; FLOAT ; 多选å�•元格附加颜色的é€�明åº?MultiSelect.Opacity=0.33 + +; BOOLEAN ; Show all terrain objects in the random tree dialog. Default false +; BOOLEAN ; 在绘制éš�机树木对è¯�框中显示所有地形对è±? 默认ä¸?false +RandomTerrainObjects=false + +; BOOLEAN ; Allocate DirectDraw surfaces in video memory. Default true +; BOOLEAN ; 决定 FA2 是å�¦åœ¨æ˜¾å­˜ä¸­åˆ†é…� DirectDraw surface, 默认ä¸?true +DDrawInVideoMem=true + +; BOOLEAN ; Use emulation mode for DirectDrawCreate. Default false +; BOOLEAN ; 决定 FA2 是å�¦åœ?DirectDrawCreate 中使ç”?emulation mode, 默认ä¸?false +DDrawEmulation=false + +; BOOLEAN ; Support displaying IsoView on non-primary screens. Slight impact on performance. Default true +; BOOLEAN ; 是å�¦æ”¯æŒ�在副å±�上显示绘图界é�¢, 对性能有轻微影å“? 默认ä¸?true +SecondScreenSupport=true + +; DOUBLE ; Maximum render zoom (only in DDraw mode), Default 1.5 +; DOUBLE ; 绘图界é�¢çš„æœ€å¤§ç¼©æ”¾å€�率 (ä»…DDraw模å¼�有效), 默认ä¸?1.5 +DDrawScalingMaximum=1.5 + +; BOOLEAN ; Use bilinear filtering when scaling the render surface. Improves quality at a performance cost. Default true +; BOOLEAN ; 使用å�Œçº¿æ€§æ�’值缩放绘图界é�? 缩放质é‡�更高, 但会影å“�性能, 默认ä¸?true +DDrawScalingBilinear=true + +; BOOLEAN ; Only use bilinear filtering when zooming out. Default false +; BOOLEAN ; 仅在缩å°�界é�¢æ—¶ä½¿ç”¨å�Œçº¿æ€§æ�’å€? 默认ä¸?false +DDrawScalingBilinear.OnlyShrink=false + +; BOOLEAN ; Draw map using graphics card, dramatically improve performance. Default true +; BOOLEAN ; 使用显å�¡åŠ é€Ÿç»˜å›? å�¯ä»¥å¤§å¹…æ��å�‡æ€§èƒ½, 默认ä¸?true +DirectXRendering=true + +; BOOLEAN ; Select graphics rendering API, true is OpenGL 3.3, false is Direct3D 11, default true +; BOOLEAN ; 选择显å�¡æ¸²æŸ“API, true ä¸?OpenGL 3.3, false ä¸?Direct3D 11, 默认ä¸?true +OpenGLRendering=true + +; BOOLEAN ; Precisely calculate the depth relationship of game objects (slower). Default true +; BOOLEAN ; 精确计算游æˆ�对象间的深度关系 (轻微影å“�性能), 默认ä¸?true +PreciseDepthCalculation=true + +; BOOLEAN ; Enable MCP server automatically when the Lua script console starts, allowing connection to LLMs. Default false +; BOOLEAN ; Lua 脚本终端开å�¯æ—¶è‡ªåЍå�¯ç”¨ MCP æœ�务å™? å�¯ä»¥è¿žæŽ¥è‡³å¤§è¯­è¨€æ¨¡åž‹. 默认ä¸?false +MCP.Enable=false + +; INTEGER ; Port of MCP server. Default 19198 +; INTEGER ; MCP æœ�务器的端å�£, 默认ä¸?19198 +MCP.Port=19198 + +; How to integrate (change 19198 to your custom MCP.Port): +; 集æˆ�æ–¹å¼� (å°?9198替æ�¢ä¸ºä½ è‡ªå®šä¹‰çš„MCP.Port): +;{ +; "mcpServers": { +; "FA2spHE (RA2 map editor)": { +; "url": "http://localhost:19198" +; } +; } +;} + +; BOOLEAN ; Do not translate houses to their UIName. Default false +; BOOLEAN ; 决定 FA2 是å�¦*ä¸?将所属方翻译为其 UIName, 默认ä¸?false +NoHouseNameTranslation=false + +; BOOLEAN ; After translation, also display the English house name. Requires NoHouseNameTranslation to be false. Default false +; BOOLEAN ; 决定 FA2 是å�¦åœ¨æ‰€å±žæ–¹ç¿»è¯‘å�Žæ˜¾ç¤ºè‹±æ–‡åŽŸå�? 需è¦�关闭NoHouseNameTranslation, 默认ä¸?false +BetterHouseNameTranslation=true + +; BOOLEAN ; Show warnings instead of errors for new map validation checks. Default false +; BOOLEAN ; 如果该值为 true, 则检查地图的新功能ä¸�会显示错è¯? 而是显示警告, 默认ä¸?false +ExtendedValidationNoError=false + +; BOOLEAN ; Use a 512 value when checking map INI lengths (128 for Vanilla). Default false +; BOOLEAN ; 如果该值为 true, 则检查地图INI长度时会å�?12, 而ä¸�是原版的128, 默认ä¸?false +ExtendedValidationAres=false + +; BOOLEAN ; Do not render structures with HP = 0 and LeaveRubble=no. Default false +; BOOLEAN ; 如果该值为 true, 则ä¸�会渲æŸ?HP = 0 且带æœ?LeaveRubble=no 的建ç­? 默认ä¸?false +HideNoRubbleBuilding=false + +; BOOLEAN ; Enforce strict NewTheater logic; structures without art are hidden. Default false +; BOOLEAN ; 如果该值为 true, 则å�¯ç”¨ä¸¥æ ?NewTheater 逻辑, 未找到对应图åƒ�的建筑将ä¸�会显ç¤? 默认ä¸?false +UseStrictNewTheater=true + +; INTEGER ; Choose logic for reading the second art letter: 0 = Vanilla (G,N,C,Y), 1 = Ares (any letter). Default 1 +; INTEGER ; 设置读å�–建筑图åƒ�第二ä½�å­—æ¯�的逻辑, 0 = å°¤å¤�逻辑(G, N, C, Yå¼€å¤?, 1 = Ares逻辑(ä»»æ„�å­—æ¯�å¼€å¤?, 默认ä¸?1 +NewTheaterType=1 + +; BOOLEAN ; Prevent placing overlapping structures; ignores StructureOverlappingCheckIgnores entries. Default false +; BOOLEAN ; 如果该值为 true, 则ä¸�能摆放é‡�å� å»ºç­? 忽略StructureOverlappingCheckIgnores中的建筑, 默认ä¸?false +PlaceStructure.OverlappingCheck=true + +; BOOLEAN ; Auto-fill the Upgrade count. Default false +; BOOLEAN ; 如果该值为 true, 则自动填写Upgradeæ•°é‡�, 默认ä¸?false +PlaceStructure.AutoUpgrade=true + +; BOOLEAN ; Apply full health when an Upgrade is present to match in-game behavior. Default false +; BOOLEAN ; 如果该值为 true, 建筑存在Upgradeæ—? 自动将血é‡�设置为满血, 符å�ˆæ¸¸æˆ�内表çŽ? 默认ä¸?false +PlaceStructure.UpgradeStrength=true + +; BOOLEAN ; Upgrades can be directly placed onto buildings. Default false +; BOOLEAN ; 如果该值为 true, å�¯ä»¥ç›´æŽ¥å�‘建筑放置加载物, 默认ä¸?false +PlaceStructure.PlaceUpgrade=true + +; BOOLEAN ; When "Default Lighting" is selected, adjust unit RGB values. Default false +; BOOLEAN ; 选择光照沙盒çš?默认光照"æ—? 是å�¦è°ƒæ•´å»ºç­‘, 步兵, 载具, 飞行器的RGBå€? 默认ä¸?false +LightingPreview.MultUnitColor=false + +; BOOLEAN ; Tint the tileset browser using the lighting sandbox settings. Default false +; BOOLEAN ; 是å�¦æŒ‰ç…§å…‰ç…§æ²™ç›’的光照é‡�新渲染地形æµ�览器图åƒ�. 默认ä¸?false +LightingPreview.TintTileSetBrowserView=true + +; BOOLEAN ; Make the arrangement of images in tileset browser more compact. 默认ä¸?true +; BOOLEAN ; 紧凑排列地形æµ�览器的图åƒ�. 默认ä¸?true +TileSetBrowserViewCompactArrange=true + +; BOOLEAN ; Display the localsize border (blue outline) on the minimap. Default false +; BOOLEAN ; 在å°�地图中显示å�¯è§†åœ°å›¾è¾¹ç•?è“�色边框). 默认ä¸?false +ShowMapBoundInMiniMap=false + +; BOOLEAN ; Place the first infantry in subcell 4 (bottom) like the game. Default false +; BOOLEAN ; 如果该值为 true, å�•元格中第一个放置的步兵ä½�于最下方,å�³4å�·subcell, 默认ä¸?false +InfantrySubCell.GameDefault=true + +; BOOLEAN ; Select infantry by cursor position within the cell instead of cycling all. Default false +; BOOLEAN ; 如果该值为 true, 在编辑步兵时会根æ�®é¼ æ ‡åœ¨å�•元格中的相对ä½�置选择步兵, 而ä¸�是é��历全éƒ? 默认ä¸?false +InfantrySubCell.Edit=true + +; BOOLEAN ; When only one infantry in a cell, still honor cursor position. Default false selects the only infantry regardless of cursor position +; BOOLEAN ; 如果该值为 true, 当å�•元格内å�ªæœ‰ä¸€ä¸ªæ­¥å…µæ—¶, ä»�然会判断鼠标的相对ä½�ç½®, false 时会始终选å�–该步å…? 默认ä¸?false +InfantrySubCell.Edit.Single=false + +; BOOLEAN ; When dragging infantry, place them based on cursor position. Default false +; BOOLEAN ; 如果该值为 true, 在拖拽步兵时,会考虑鼠标的相对ä½�置放ç½? 默认ä¸?false +InfantrySubCell.Edit.Drag=true + +; BOOLEAN ; When placing infantry, place them based on cursor position. Default false +; BOOLEAN ; 如果该值为 true, 在放置步兵时,会考虑鼠标的相对ä½�置放ç½? 默认ä¸?false +InfantrySubCell.Edit.Place=true + +; BOOLEAN ; Lock infantry in the center to match InfantrySubCell.GameDefault, otherwise depend on cursor position. Default false +; BOOLEAN ; 如果该值为 true, 会固定å�•元格中间步兵的ä½�ç½®å�Œ InfantrySubCell.GameDefault 一è‡? å�¦åˆ™æ ¹æ�®é¼ æ ‡ä¸Šä¸‹ä½�置决定. 默认ä¸?false +InfantrySubCell.Edit.FixCenter=false + +; BOOLEAN ; Consider OccupationBits of terrain objects when placing infantry. Default false +; BOOLEAN ; 如果该值为 true, 在放置步兵时会考虑地形对象对å�•元格的å� ç”? 默认ä¸?false +InfantrySubCell.OccupationBits=true + +; STRING ; Default infantry parameterss matching the INI section +; STRING ; 摆放步兵的默认å�‚æ•? 顺åº�与INIå°�节一è‡?DefaultInfantryProperty=House,ID,256,X,Y,Subcell,Guard,64,None,0,-1,0,0,0 + +; STRING ; Default vehicle parameterss matching the INI section +; STRING ; 摆放车辆的默认å�‚æ•? 顺åº�与INIå°�节一è‡?DefaultUnitProperty=House,ID,256,X,Y,64,Guard,None,0,-1,0,-1,0,0 + +; STRING ; Default aircraft parameterss matching the INI section +; STRING ; 摆放飞行器的默认å�‚æ•°, 顺åº�与INIå°�节一è‡?DefaultAircraftProperty=House,ID,256,X,Y,64,Guard,None,0,-1,0,0 + +; STRING ; Default buildiing parameterss matching the INI section +; STRING ; 摆放建筑的默认å�‚æ•? 顺åº�与INIå°�节一è‡?DefaultBuildingProperty=House,ID,256,X,Y,0,None,0,0,1,0,0,None,None,None,1,0 + +; STRING ; Supported associable map file formats +; STRING ; 支æŒ�å…³è�”的地图文件格å¼?SupportedFormats=map,mpr,yrm,mmx,yro + +; BOOLEAN ; Force CString allocations on the stack for stability at minor perf cost. Default true +; BOOLEAN ; 强制CString内存在堆上分é…? å�¯ä»¥æ��å�‡ç¨³å®šæ€? 但å�¯èƒ½è½»å¾®é™�低效çŽ? 默认ä¸?true +StringBufferStackAllocation=true + +; BOOLEAN ; Use a stricter exception filter that catches C++ EH exceptions. Default false +; BOOLEAN ; å�¯ç”¨æ›´ä¸¥æ ¼çš„错误æ�•获, 会æ�•èŽ?C++ EH exception, 默认ä¸?false +StrictExceptionFilter=false + +; BOOLEAN ; Use the modern toolbar cameos. Default true +; BOOLEAN ; 是å�¦ä½¿ç”¨æ–°çš„工具æ �图æ ? 默认ä¸?true +UseNewToolBarCameo=true + +; BOOLEAN ; Skip the tips of the day dialog. Default false +; BOOLEAN ; 是å�¦ä¸�显示今日æ��示窗å�£ï¼Œé»˜è®¤ä¸?false +SkipTipsOfTheDay=false + +; BOOLEAN ; Prevent brush tools (raise/lower/flatten) from changing brush size automatically. Default false +; BOOLEAN ; 在选择地形工具(抬å�‡ã€�é™�低ã€�平整地å½?æ—? 是å�¦è·³è¿‡æ”¹å�˜ç¬”刷大å°�, 默认ä¸?false +SkipBrushSizeChangeOnTools=true + +; BOOLEAN ; Remember brush sizes for mouse commands and restore them when switching. Default false +; BOOLEAN ; 记忆å�„æ“�作的笔刷大å°�,并在切æ�¢æ—¶è‡ªåŠ¨è¿˜åŽŸ, 默认ä¸?false +RecordBrushSizeHistory=false + +; BOOLEAN ; When placing tiles, skip hidden cells. Default false +; BOOLEAN ; 在放置地形ã€�生æˆ�海岸ã€�抬å�‡åœ°è¡¨ã€�粘贴地形时, 是å�¦è·³è¿‡è¢«éš�è—�çš„å�•å…ƒæ ? 默认ä¸?false +PlaceTileSkipHide=true + +; BOOLEAN ; Enable Veinhole Monster logic to display corresponding overlays in the object browser and terrain browser. Default false +; BOOLEAN ; å�¯ç”¨æ³°ä¼¯åˆ©äºšè—¤è”“(蔓孔)逻辑, 在物å“�æµ�览器ã€�地形æµ�览器中显示对应的覆盖ç‰? 默认ä¸?false +EnableVeinholeLogic=false + +; BOOLEAN ; Hide team/taskforce/script sections in the INI editor. Default false +; BOOLEAN ; 在INI编辑器中, 是å�¦å¿½ç•¥å°�队ã€�特é�£ã€�脚本å°�èŠ? 默认ä¸?false +INIEditor.IgnoreTeams=true + +; BOOLEAN ; When holding Ctrl for fill, treat LAT tiles as the same group. Default true +; BOOLEAN ; 按ä½�ctrl填充地形æ—? 是å�¦å�Œæ—¶å¡«å……目标地形的LAT, 默认ä¸?true +FillArea.ConsiderLAT=true + +; BOOLEAN ; When holding Ctrl for fill, treat all water tiles as as the same group. Default true +; BOOLEAN ; 按ä½�ctrl填充地形æ—? 将所有水é�¢è§†ä¸ºä¸€ç±? 默认ä¸?true +FillArea.ConsiderWater=true + +; BOOLEAN ; When holding Ctrl for fill, treat sub tile blocks as as the same group. Default true +; BOOLEAN ; 按ä½�ctrl填充地形æ—? 将整个地形的å­�地形å�—视作一ç±? 默认ä¸?true +FillArea.ConsiderWholeTile=true + +; BOOLEAN ; Render object shadows in the map view. Default true +; BOOLEAN ; 是å�¦æ˜¾ç¤ºæ‰€æœ‰æ¸¸æˆ�对象的阴影, å¼€å�¯æ—¶å�¯ä»¥åœ¨å›¾å±‚中手动关闭, 默认ä¸?true +InGameDisplay.Shadow=true + +; BOOLEAN ; Display voxel shadow on the ground instead of in the bottom. Default false +; BOOLEAN ; 在地é�¢ä¸Šè€Œä¸�是体素的最底部渲染阴影, 默认ä¸?false +InGameDisplay.Shadow.OnGround=false + +; BOOLEAN ; Show deploy/unload images of units. Default true +; BOOLEAN ; 是å�¦å¯¹å�¯éƒ¨ç½²çš„Unload状æ€�çš„å�•ä½�显示部署图åƒ�, ä¸�会考虑å�‘生了å�•ä½�转æ�¢çš„å�•ä½�, 默认ä¸?true +InGameDisplay.Deploy=true + +; BOOLEAN ; Draw water images of units in water. Default true +; BOOLEAN ; 是å�¦å¯¹æ°´ä¸­çš„æ­¥å…µæˆ–载具显示水中图åƒ? ä¸�会考虑å�‘生了å�•ä½�转æ�¢çš„å�•ä½�, 默认ä¸?true +InGameDisplay.Water=true + +; BOOLEAN ; Support Phobos damaged art images. Default true +; BOOLEAN ; 是å�¦æ”¯æŒ� Phobos çš„å�•ä½�伤残更æ�¢å›¾åƒ�功èƒ? 默认ä¸?true +InGameDisplay.Damage=true + +; BOOLEAN ; Render hover unit a little higher. Default true +; BOOLEAN ; 是å�¦å°†æ‚¬æµ®å�•ä½�渲染的更高一äº? 默认ä¸?true +InGameDisplay.Hover=true + +; BOOLEAN ; Display alphaimages for terrain objects and buildings; can disable manually if needed. Default true +; BOOLEAN ; 是å�¦æ˜¾ç¤ºå»ºç­‘物和地形对象çš?AlphaImage, å¼€å�¯æ—¶å�¯ä»¥åœ¨å›¾å±‚中手动关闭, 默认ä¸?true +InGameDisplay.AlphaImage=true + +; BOOLEAN ; Render "OnBridge" unit a little higher. Default true +; BOOLEAN ; 是å�¦å°†â€œåœ¨æ¡¥æ¢�上â€�çš„å�•ä½�渲染的更高一äº? 默认ä¸?true +InGameDisplay.Bridge=true + +; BOOLEAN ; Respect animation offsets in art when rendering. Default true +; BOOLEAN ; 是å�¦æ ¹æ�®ç´ æ��ä¸?art 设置调整建筑动画图层, 在少数情况下å�¯èƒ½ä¸Žæ¸¸æˆ�内ä¸�一è‡? 默认ä¸?true +InGameDisplay.AnimAdjust=true + +; BOOLEAN ; Show cloaked units as transparent. Default false +; BOOLEAN ; éš�å½¢å�•ä½�是å�¦å�Šé€�明显示, 默认ä¸?false +InGameDisplay.Cloakable=false + +; BOOLEAN ; Display remapble colors of wall overlays by nearest building. Default false +; BOOLEAN ; æ ¹æ�®è·�离最近的建筑, 显示围墙覆盖物的所属色, 默认ä¸?false +InGameDisplay.RemapableOverlay=false + +; BOOLEAN ; Display invisible bridge overlays in numbers. Default false +; BOOLEAN ; 以数字显示ä¸�å�¯è§�的桥æ¢�覆盖物 , 默认ä¸?false +DisplayBridgeOverlay=false + +; BOOLEAN ; Display default images for vehicles, infantry, and aircraft without images, names are: FA2DEFAULT_AIRCRAFT, FA2DEFAULT_INFANTRY, FA2DEFAULT_UNIT. Default false +; BOOLEAN ; 为没有图åƒ�的车辆ã€�步兵与飞行器显示缺çœ�图åƒ? å��ç§°ä¸? FA2DEFAULT_AIRCRAFT, FA2DEFAULT_INFANTRY, FA2DEFAULT_UNIT, 默认ä¸?false +UseDefaultUnitImage=true + +; BOOLEAN ; Display default images for techno attachments without images. Default false +; BOOLEAN ; 为没有图åƒ�的附加å�•ä½�显示缺çœ�图åƒ�, 默认ä¸?false +UseDefaultUnitImage.TechnoAttachment=false + +; FLOAT ; Voxel light vector as X,Y,Z corresponding to game. Positive numbers are illuminated from the direction of the axis(â†? â†? â†?. Default 0.05,1,0.2 +; FLOAT ; VXL渲染的光æº�æ–¹å�? æ ¼å¼�ä¸?X,Y,Z, 正数为从数轴方å�‘ç…§å°„(â†? â†? â†?, 默认ä¸?0.05,1,0.2 +LightingSource=0.05,1,0.2 + +; INTERGER ; Maximum value of overlay data. Default 60 +; INTERGER ; 覆盖物数æ�®çš„æœ€å¤§å€? 默认ä¸?60 +OverlayDataLimit=256 + +; BOOLEAN ; Hide ExtraImage when Flat To Ground Mode enabled. Default false +; BOOLEAN ; å¼€å�¯å¹³é�¢æ˜¾ç¤ºæ—¶, 是å�¦éš�è—�地形çš?ExtraImage, 默认ä¸?false +FlatToGroundHideExtra=false + +; BOOLEAN ; Render objects outside of map bounds. Default false +; BOOLEAN ; 是å�¦æ˜¾ç¤ºåœ°å›¾è¾¹ç•Œå¤–的游æˆ�对象, 默认ä¸?false +DisplayObjectsOutside=false + +; BOOLEAN ; Show options for technos (Phobos). Default false +; BOOLEAN ; 科技类型窗å�£åœ¨å¤šäººåœ°å›¾ä¸­æ˜¾ç¤º Phobos 支æŒ�çš? 所属方, 默认ä¸?false +PlayerAtXForTechnos=false + +; BOOLEAN ; Show options for triggers (Phobos). Default false +; BOOLEAN ; 触å�‘编辑器窗å�£åœ¨å¤šäººåœ°å›¾ä¸­æ˜¾ç¤?Phobos 支æŒ�çš? 所属方, 默认ä¸?false +PlayerAtXForTriggers=false + +; BOOLEAN ; Monitor map files for external edits. Default true +; BOOLEAN ; 检测地图文件是å�¦è¢«å¤–部修改. 默认ä¸?true +FileWatcher=true + +; INTERGER ; Number of distance ruler history entries. Default 5 +; INTERGER ; è·�离标尺记录的历å�²æ•°é‡? 默认ä¸?5 +DistanceRuler.Records=5 + +; INTERGER ; Font size for money on map and property viewer. Default 18 +; INTERGER ; 资æº�总é‡�与属性查看字体的大å°�, 默认ä¸?18 +DisplayTextSize=18 + +; INTERGER ; Tree view cameo size; default 32 (min 16, max 64) +; INTERGER ; 物å“�æµ�览器图标的大å°�, 默认ä¸?32, 最å°?16, 最å¤?64 +TreeViewCameo.Size=32 + +; BOOLEAN ; Whether or not draw celltag icons translucently. Default false +; BOOLEAN ; 是å�¦å�Šé€�明绘制å�•元标记图标. 默认ä¸?false +DrawCelltagTranslucent=true + +; BOOLEAN ; Whether or not force Neutral and Special houses to use the light gray color in skirmish. Default true +; BOOLEAN ; 是å�¦åœ¨å¤šäººåœ°å›¾ä¸­, 强制 Neutral å’?Special 所属方使用浅ç�°è‰²é¢œè‰? 默认ä¸?true +ForceNeutralSpecialColor=true + +; BOOLEAN ; Map house color variants to their corresponding solid colors. Default false +; BOOLEAN ; å°†å�•ä½�所属色å�˜ä½“映射为纯è‰? 默认ä¸?false +UnifyHouseColors=false + +; COLORREF(R,G,B) ; Color in waypoint flag to be replaced in "Set waypoint color". Default 0,255,0. Range 0-255 +; COLORREF(R,G,B) ; 在“设置路径点颜色â€�中替æ�¢çš„路径点旗帜颜色, 默认ä¸?0,255,0. å�–值范围为0-255 +DisplayColor.Waypoint=0,255,0 + +; COLORREF(R,G,B) ; Color in celltag icon to be replaced in "Set celltag color". Default 255,0,0. Range 0-255 +; COLORREF(R,G,B) ; 在“设置å�•元标记颜色â€�中替æ�¢çš„å�•元标记图标颜è‰? 默认ä¸?255,0,0. å�–值范围为0-255 +DisplayColor.Celltag=255,0,0 + +; COLORREF(R,G,B) ; Distance ruler color. Default 255,0,0. Range 0-255 +; COLORREF(R,G,B) ; è·�离标尺线段的颜è‰? 默认ä¸?255,0,0. å�–值范围为0-255 +DistanceRuler.Color=255,0,0 + +; COLORREF(R,G,B) ; Boundary color for terrain generator. Default 255,255,0. Range 0-255 +; COLORREF(R,G,B) ; 地形生æˆ�器设置范围的颜色, 默认ä¸?255,255,0. å�–值范围为0-255 +TerrainGeneratorColor=255,255,0 + +; COLORREF(R,G,B) ; Player posistion indicator color for map renderer. Default 255,0,0. Range 0-255 +; COLORREF(R,G,B) ; 地图渲染器游æˆ�者ä½�置的颜色, 默认ä¸?255,0,0. å�–值范围为0-255 +PlayerLocation.Color=255,0,0 + +; INTEGER ; Maximum distance displayed by range overlays; very large values reduce performance. Default 50 +; INTEGER ; 范围属性最大显示的è·�离, 过大的范围会导致显示å�¡é¡¿, 默认ä¸?0 +RangeBound.MaxRange=50 + +; COLORREF(R,G,B) ; Primary weapon range color. Default 0,255,255. Range 0-255 +; COLORREF(R,G,B) ; 主武器射程范围的颜色, 默认ä¸?0,255,255. å�–值范围为0-255 +WeaponRangeBound.Color=0,255,255 + +; COLORREF(R,G,B) ; Primary minimum range color. Default 0,200,200. Range 0-255 +; COLORREF(R,G,B) ; 主武器最å°�射程范围的颜色, 默认ä¸?0,200,200. å�–值范围为0-255 +WeaponRangeMinimumBound.Color=0,200,200 + +; COLORREF(R,G,B) ; Secondary weapon range color. Default 0,255,130. Range 0-255 +; COLORREF(R,G,B) ; 副武器射程范围的颜色, 默认ä¸?0,255,130. å�–值范围为0-255 +SecondaryWeaponRangeBound.Color=0,255,130 + +; COLORREF(R,G,B) ; Secondary minimum range color. Default 0,200,100. Range 0-255 +; COLORREF(R,G,B) ; 副武器最å°�射程范围的颜色, 默认ä¸?0,200,100. å�–值范围为0-255 +SecondaryWeaponRangeMinimumBound.Color=0,200,100 + +; COLORREF(R,G,B) ; Death weapon range color. Default 255,127,39. Range 0-255 +; COLORREF(R,G,B) ; 自æ�€æ­¦å™¨èŒƒå›´çš„颜è‰? 默认ä¸?255,127,39. å�–值范围为0-255 +DeathWeaponRangeBound.Color=255,127,39 + +; COLORREF(R,G,B) ; Gap generator range color. Default 0,0,255. Range 0-255 +; COLORREF(R,G,B) ; 黑幕产生范围的颜è‰? 默认ä¸?0,0,255. å�–值范围为0-255 +GapRangeBound.Color=0,0,255 + +; COLORREF(R,G,B) ; Sensor array range color. Default 255,0,255. Range 0-255 +; COLORREF(R,G,B) ; éš�形检测范围的颜色, 默认ä¸?255,0,255. å�–值范围为0-255 +SensorsRangeBound.Color=255,0,255 + +; COLORREF(R,G,B) ; Cloak generator range color. Default 255,0,0. Range 0-255 +; COLORREF(R,G,B) ; éš�形范围的颜è‰? 默认ä¸?255,0,0. å�–值范围为0-255 +CloakRangeBound.Color=255,0,0 + +; COLORREF(R,G,B) ; Psychic sensor range color. Default 255,255,0. Range 0-255 +; COLORREF(R,G,B) ; 心ç�µæ„Ÿåº”范围的颜è‰? 默认ä¸?255,255,0. å�–值范围为0-255 +PsychicRangeBound.Color=255,255,0 + +; COLORREF(R,G,B) ; Guard area range color. Default 0,255,0. Range 0-255 +; COLORREF(R,G,B) ; 区域警戒范围的颜è‰? 默认ä¸?0,255,0. å�–值范围为0-255 +GuardRangeBound.Color=0,255,0 + +; COLORREF(R,G,B) ; Sight range color. Default 128,128,128. Range 0-255 +; COLORREF(R,G,B) ; 视野范围的颜è‰? 默认ä¸?128,128,128. å�–值范围为0-255 +SightRangeBound.Color=128,128,128 + +; COLORREF(R,G,B) ; Designator range color. Default 128,128,128. Range 0-255 +; COLORREF(R,G,B) ; 指示者范围的颜色, 默认ä¸?34,177,76. å�–值范围为0-255 +DesignatorRangeBound.Color=34,177,76 + +; COLORREF(R,G,B) ; Inhibitor range color. Default 128,128,128. Range 0-255 +; COLORREF(R,G,B) ; 抑制者范围的颜色, 默认ä¸?204,46,49. å�–值范围为0-255 +InhibitorRangeBound.Color=204,46,49 + +; BOOLEAN ; Apply elevation modifiers to weapon range preview; low accuracy. Default false +; BOOLEAN ; 计算武器射程时,是å�¦è€ƒè™‘高度对射程的影å“�, 精确度较ä½? ä»…ä¾›å�‚è€? 默认ä¸?false +WeaponRangeBound.SubjectToElevation=true + +; BOOLEAN ; Draw all ranges except for weapons subject to elevation using ellipses. Default true +; BOOLEAN ; 使用椭圆绘制除了å�—高度影å“�的武器外的所有范å›? 默认ä¸?false +RangeBound.DrawEllipse=true + +; BOOLEAN ; Show outlines by default when pasting. Default false +; BOOLEAN ; 粘贴地形æ—? 是å�¦é»˜è®¤æ˜¾ç¤ºæ��è¾¹, 默认ä¸?false +PasteShowOutline=true + +; Mix overrides, yes = relative path to FA2 installed folder +; Can be used to override game content to show in FA2 +; First one has highest loading priority +;[ExtraMixes] + +; Encrypted packages, yes = relative path to FA2 installed folder +; Can be used to override game content to show in FA2 +; First one has highest loading priority +; How to use, please refer to documentation +;[ExtraPackages] +;data.rpck=false + +; Custom resource directories, read in registration order +; Value: yes/true = relative path to FA2 installed folder, no/false = relative path to game folder +; Can be used to override game content to show in FA2 +; First one has highest loading priority +; Priority: lower than Resources\HighPriority\, higher than the game path +;[ExtraDirectories] +;voxels=false + +; Stringtable overrides, yes = relative path to FA2 installed folder +; Can be used to override stringtables to show in FA2 +; Support .csf, .llf, .ecs, and .ini (exported by Ra2CsfToolsGUI) +;[ExtraStringtables] + +; Custom nested mix files, format: nested mix = parent mix +; Can be used to override game content to show in FA2 +; First one has highest loading priority +;[NestedMixes] + +; Ignored mix files, format: index = ignored mix +;[IgnoredMixes] + +;[Filenames] +;EVA=eva.ini +;EVAYR=evamd.ini +;Sound=sound.ini +;SoundYR=soundmd.ini +;Theme=theme.ini +;ThemeYR=thememd.ini +;AI=ai.ini +;AIYR=aimd.ini +;RulesYR=rulesmd.ini +;Rules=rules.ini +;ArtYR=artmd.ini +;Art=art.ini +;TemperateYR=temperatmd.ini +;Temperate=temperat.ini +;SnowYR=snowmd.ini +;Snow=snow.ini +;UrbanYR=urbanmd.ini +;Urban=urban.ini +;UrbanNYR=urbannmd.ini +;LunarYR=lunarmd.ini +;DesertYR=desertmd.ini +;MapselYR=mapselmd.ini +;MixExtension=md + +; Contains a list of theater names, only the +; existing 6 names are valid. If not listed +; then all default 6 theaters are used. +; The second item separated by commas +; represents the name saved in the map file +; under [Map] -> Theater=. +[Customizations] +AnimationListID=OrderedAnimations +DefaultGameMode=standard +DefaultMinPlayers=2 +SaveMapExtensionOverride=no +SaveMapExtensionDefault=.map + +[Sides] +0=Allied +1=Soviet +2=Yuri +3=°²ËþÁÐÐÇ +4=¿Æ¼¼¹¦Äܽ¨Öþ,1 +5=µØ±ê½¨ÖþÀà,1 +6=´ó³ÇÊн¨Öþ,1 +7=ÖÐС³ÇÊн¨Öþ,1 +8=´åׯ½¨Öþ,1 +9=¹¤Òµ½¨Öþ,1 +10=СÐÍ×°Êΰڼþ,1 +11=ÖÐÁ¢ÌØÊ⽨Öþ,1 + +[GameModes] +standard=±ê×¼×÷Õ½ +teamgame=С¶ÓÁªÃË +cooperative=ºÏ×÷ÈÎÎñ +duel=ÇÀµØÅÌ +navalwar=º£Õ½ +meatgrind=ÉúËÀ¶· +megawealth=¾Þ¸» +airwar=(ÎÞЧ)¿ÕÕ½ +nukewar=(ÎÞЧ)ºËÕ½ + +[ForceUnitPalettePrefix] +0=TIBTRE + +[ForceIsoPalettePrefix] + +;===ScriptTemplates=== +;X=UIName, Name, Count, Key 1 ,Value 1 , Key 2 ,Value 2 , ..., Key Count ,Value Count +;EMPTY will be considered as a CONST, with it FA2Copy will ignore the value + +;By prry +[ScriptTemplates] +DefaultName=ĬÈÏ +Counts=5 +1=Á½µã¼äѲÂß,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 +2=Èýµã¼äѲÂß,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +3=Ëĵã¼äѲÂß,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +4=×°ÔØ²¿¶ÓÐ¶ÔØ¹¥»÷,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 +5=×°ÔØÈëÔØ¾ß²¢¹¥»÷,New load script,3,21,EMPTY,14,EMPTY,0,0 + +;===TeamTemplates=== +;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 +;Checkbox order matrix: +; |1 6 11 | +; |2 7 12 16| +; |3 8 13 17| +; |4 9 14 18| +; |5 10 15 19| + +;By Sandman +[TeamTemplates] +DefaultName=ĬÈÏ +Counts=3 +1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 + +; not NOSURFACES: +;[BuildingVoxelTurretsRA2] +;GTGCANX=-1 +;GTGCANY=0;-6 +;NASAMY=0;2 +;NALASRX=0 +;NALASRY=0;-3 +;NAFLAKY=10;10 + +[VehicleVoxelTurretsRA2Disabled] +;DISKX=-10 +;DISKY=-10 +;YTNKY=-30 +SREFX=4 +SREFY=3 + +[IgnoreArtImage] +BFRT=1 +CAML=1 + +[IgnoreSuperAnim1] + + +[IgnoreSuperAnim2] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim3] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim4] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +; fix for building list: +[GTGCAN] +AIBasePlanningSide=0 + +[YACOMD] +AIBasePlanningSide=2 + +[YADEPT] +AIBasePlanningSide=0 + +[NASPYB] +AIBasePlanningSide=2 + +; rename list for objects. ObjectID=StringID +[Rename] + +[MovieList] +Start=66; Anything below will not be listed! + +[StdBrushSize] +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 +WaterSet=2 + +[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 + +; SlopeSetPieces for cliffs have a specific direction. +; used for AutoLevel logic +; CURRENTLY IGNORED +[SlopeSetPiecesDirections] +Count=10 +0=Right_1 +1=Left_1 +2=Top_1 +3=Bottom_1 +4=Right_2 +5=Left_2 +6=Left_2 +7=Bottom_2 +8=Top_2 +9=Top_2 + +[LUNARLimits] +TreeMax=999 +TreeMin=999 + +[URBANLimits] +TreeMax=999 +;TreeMax=27 + +[TEMPERATELimits] +TreeMax=999 +;TreeMax=27 + +[SNOWLimits] +TreeMax=999 +;TreeMax=27 + +[NEWURBANLimits] +TreeMax=999 +;TreeMax=27 + +[DESERTLimits] +TreeMin=30 +TreeMax=999 + +; tileset ini overwritings +; only used by FinalAlert +[IgnoreSetTEMPERATE] +0=77 +1=78 +2=79 + +[IgnoreSetSNOW] +0=8 +1=46 + +[IgnoreSetURBAN] +0=49 +1=50 +2=51 +5=56 +7=30 +8=91 +9=92 +10=93 +11=94 +12=95 +13=96 +14=97 +15=98 +16=99 +17=100 +;3=53; Tunnel +;4=54; Tunnel Side +;6=73; Dirt Tunnel + +[IgnoreSetNEWURBAN] +0=101 + +[IgnoreSetDESERT] +0=19 +1=54 +2=53 +3=56 +4=73 +5=80 + +[IgnoreSetLUNAR] + +[UseSetTEMPERATE] +0=57 + +[UseSetSNOW] +[UseSetURBAN] + +[NewUrbanInfo] +Morphable2=114 +Ramps2=117 +Cliffs2=110 +CliffsWater2=112 + +; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! +; If a ground tile id exceeds this number, FA2 will assume the map is a YR map +[RA2TileMax] +Temperat=838 +Urban=1077 +Snow=798 + +[YRInfantry] +YENGINEER=1 +GGI=1 +INIT=1 +BORIS=1 +BRUTE=1 +VIRUS=1 +CLNT=1 +ARND=1 +STLN=1 +CAML=1 +EINS=1 +MUMY=1 +RMNV=1 +LUNR=1 +DNOA=1 +DNOB=1 +SLAV=1 +WWLF=1 +YDOG=1 +YADOG=1 + +[YRUnits] +YHVR=1 +PCV=1 +SMIN=1 +SMON=1 +YCAB=1 +YTNK=1 +BFRT=1 +TELE=1 +CAOS=1 +DDBX=1 +BCAB=1 +BSUB=1 +SCHP=1 +JEEP=1 +MIND=1 +DISK=1 +UTNK=1 +ROBO=1 +YDUM=1 +SCHD=1 +DOLY=1 +CBLC=1 +FTRK=1 +AMBU=1 +CIVP=1 + +[YRBuildings] +YACNST=1 +YAPOWR=1 +YABRCK=1 +YAWEAP=1 +YAYARD=1 +YADEPT=1 +YATECH=1 +GAFWLL=1 +YAGGUN=1 +YAPSYT=1 +NAINDP=1 +YAGRND=1 +YAGNTC=1 +CASLAB=1 +CATIME=1 +YAPPET=1 +CALOND04=1 +CALOND05=1 +CALOND06=1 +CAMOON01=1 +CATRAN03=1 +CAEAST01=1 +CAEGYP01=1 +CAEGYP02=1 +CAEGYP03=1 +CALA01=1 +CALA02=1 +CALA03=1 +CALA04=1 +CALA05=1 +CALOND01=1 +CALOND02=1 +CALOND03=1 +CAMORR01=1 +CAMORR02=1 +CAMORR03=1 +CASANF01=1 +CASANF02=1 +CASANF03=1 +CASANF04=1 +CASANF05=1 +CASEAT01=1 +NATBNK=1 +GAGATE_A=1 +CASANF09=1 +CASANF10=1 +CASANF11=1 +CASANF12=1 +CASANF13=1 +CASANF14=1 +CASANF06=1 +CASANF07=1 +CASANF08=1 +CASEAT02=1 +YACOMD=1 +YAPPPT=1 +GAROBO=1 +YAREFN=1 +YAROCK=1 +NABNKR=1 +CASANF15=1 +CASANF16=1 +CASANF17=1 +CASANF18=1 +CASIN03E=1 +CASIN03S=1 +CAURB01=1 +CAURB02=1 +CAURB03=1 +CAPOWR=1 +CALA07=1 +CAEGYP06=1 +CALA08=1 +CAEAST02=1 +CABARR01=1 +CABARR02=1 +CAMORR04=1 +CAMORR05=1 +CALA09=1 +CAEGYP04=1 +CAEGYP05=1 +CALA06=1 +CAMORR06=1 +CAMORR07=1 +CAMORR08=1 +CAMORR09=1 +CAMORR10=1 +CATIME01=1 +CATIME02=1 +CALA10=1 +CALA11=1 +CALA12=1 +CALA13=1 +CAPARK04=1 +CAPARK05=1 +CAPARK06=1 +CALA14=1 +CALA15=1 +CABUNK03=1 +CABUNK04=1 +CALUNR01=1 +CALUNR02=1 + +[YRTerrain] +TREE31=1 +TREE32=1 +TREE33=1 +TREE34=1 +TREE35=1 +TREE36=1 + +[YRAircraft] +BPLN=1 +SPYP=1 +CMISL=1 + +[YROverlay] +Begin=243; which number is the first from new YR overlay? + +; things only FinalAlert will ignore +; these are usually all dummies and leftovers from TS +[IgnoreRA2] +0=GAARMORY +1=APACHE +2=DeathDummy +3=WEEDGUY +4=GADUMY +5=NAWAST +6=GARADR +7=CAIRSFGL +8=CALIT01E +9=CALIT01N +10=CALIT01S +11=CALIT01W +12=CALIT03E +13=CALIT03N +14=CALIT03S +15=CALIT03W +16=CALIT02L +17=CALIT02R +18=NAHPAD +19=CAEURO01 +20=CACITY01 +21=CACITY02 +22=CACITY03 +23=CACITY04 +24=CITY06 +25=CITY05 +26=CITY04 +27=CITY03 +28=CITY02 +29=CITY01 +30=CAARMR +31=TREE29 +32=TREE30 +33=CANEWY05 +34=REDLAMP +35=GRENLAMP +36=BLUELAMP +37=YELWLAMP +38=PURPLAMP +39=INORANLAMP +;40=NEGLAMP ; NEGLAMP added again, invisible in game +41=NEGRED +42=TSTLAMP +43=CAPOL01E +44=CAPOL01N +45=CAPOL01S +46=CAPOL01W +47=CASIN01E +48=CASIN01N +49=CASIN01W +50=CASIN01S +51=GAGREEN +52=GALITE +53=CARGOPLANE +; 54=CAHOSP +55=XCOMET +56=CAKRMW +57=CAFNCB +58=CAFNCW +59=CAFNCP +60=CR1 +61=CR2 +62=CR3 +63=CR4 +64=CR5 +65=CR6 +66=BURN01 +67=BURN02 +68=BURN03 +69=BURN04 +70=BURN05 +71=BURN06 +72=BURN07 +73=BURN08 +74=BURN09 +75=BURN10 +76=BURN11 +77=BURN12 +78=BURN13 +79=BURN14 +80=BURN15 +Another one :) =BURN16 +82=CASYDN01 +83=CATIME +84=CALOND02;? +;85=CAMORR01 +;86=CAMORR02 +;87=CAMORR03 +;88=CAEGYP06 +;89=CAMORR04 +;90=CAEGYP04 +;91=CAEGYP05 +;92=CALA06 + +97=DNOB;? +98=GAWRONG +99=CALA02;? +100=CAMOON01 +;101=CAEGYP01 +102=UTNK +103=YDUM +104=WWLF +105=YADOG +106=YDOG +107=SMON +108=CMON +109=YADEPT +110=CALOND06;? +;111=TREE32 + +; Yes means Image= in art ini will be ignored +[IgnoreArtImage] +CAML=yes + +; hacks for shore pieces +; shore id_pos=iswater +; pos: count from left top to right, then next "row" + +; RA2 only needs one fix (for URBAN specifically) +[ShoreTerrainRA2] +12_4=1 +12_5=1 + +; But TS needs all :( +[ShoreTerrainTS] +0_0=0 +0_1=0 +0_2=1 +0_3=1 +1_0=0 +1_1=0 +2_0=0 +2_1=0 +3_0=0 +4_0=0 +4_1=0 +4_3=0 +5_0=0 +5_1=0 +5_2=0 +6_0=0 +7_0=0 +8_0=0 +8_2=0 +9_0=0 +9_2=0 +10_0=0 +10_2=0 +11_0=0 +12_0=0 +12_1=0 +12_3=0 +13_0=0 +13_3=0 +13_4=0 +14_2=0 +15_2=0 +16_2=0 +16_3=0 +17_2=0 +17_3=0 +18_2=0 +18_3=0 +19_1=0 +20_3=0 +20_4=0 +20_5=0 +21_2=0 +21_4=0 +21_5=0 +22_3=0 +23_3=0 +24_1=0 +24_3=0 +25_1=0 +25_3=0 +26_1=0 +26_3=0 +27_1=0 +28_1=0 +28_2=0 +28_5=0 +29_2=0 +29_4=0 +29_5=0 +30_1=0 +31_1=0 +32_0=0 +32_1=0 +32_2=0 +33_0=0 +33_1=0 +33_2=0 +34_0=0 +34_2=0 +34_3=0 +35_0=0 +35_2=0 +35_3=0 +36_1=0 +36_2=0 +36_3=0 +37_1=0 +37_2=0 +37_3=0 +38_0=0 +38_1=0 +38_3=0 +39_0=0 +39_1=0 +39_3=0 + +; tilesets that may be modified using the shore or a similar logic +[SoftTileSets] +ClearTile=1 +RoughTile=1 +ClearToRoughLat=1 +SandTile =1 +ClearToSandLat=1 +GreenTile=1 +ClearToGreenLat=1 +PaveTile=1 +MiscPaveTile =1 +ClearToPaveLat=1 +RoughGround=0; no +WaterSet=1 +ShorePieces=1 + +; corner strings are: cornerleft, cornerright, cornerbottom, cornertop + +[CliffBackData] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataAlt] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataNEWURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffFrontData] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataAlt] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataNEWURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +; EVENTS AND ACTIONS +; param type format: Description,ListType +; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): +; 0-Nothing +; 1-Houses +; 2-Teamtypes +; 3-UnitTypes +; 4-InfantryTypes +; 5-AircraftTypes +; 6-BuildingTypes +; 7-Videos +; 8-tutorial texts +; 9-Triggers +; 10-yes/no +; 11=sounds +; 12=themes +; 13=speeches +; 14=special weapons +; 15=animations +; 16=particles +; 17=waypoints +; 18=crate types * +; 19=speech bubble types * +; 20=Global variables <--- wrong, local variables! +; 21=.CSF strings (RA2 only) * +; 22=Tag * +; 23=Meteors * +; 24=Weapons * +; 25=Light behavior * +; 26=Shower * +; 27=Rules Global variables +; 28=Building INI names +; 29=Techtypes + + +; ParamTypes +; Name, ListType, [Code] +[ParamTypes] +-1=δʹÓÃ,0,1;not listed in FA2 +0=δʹÓÃ,0 +1=δ֪,0 +2=ËùÊô·½,1 +3=¾Ö²¿±äÁ¿,20 +4=ʱ¼ä,0 +5=»ý·Ö,0 +6=ÊýÖµ,0 +7=С¶ÓÀàÐÍ,2 +8=½¨Öþ,6 +9=·ÉÐÐÆ÷,5 +10=²½±ø,4 +11=µ¥Î»,3 +12=µçÓ°,7 +13=Îı¾,8 +14=´¥·¢,9 +15=ÔÊÐí,10 +16=ÉùÒô,11 +17=ÀÖÇú,12 +18=ÓïÒô,13 +19=²½Öè,0 +20=³¬¼¶ÎäÆ÷,14 +21=×ó,0 +22=ÉÏ,0 +23=¿í,0 +24=¸ß,0 +25=¶¯»­,15 +26=Á£×Ó,16 +27=³ÖÐøÊ±¼ä,0 +28=ËÙ¶È,0 +29=VoxelË鯬IDºÅ,29 +30=·¾¶µã,17 +31=ľÏäÀàÐÍ,PT_CrateTypes +32=ÓïÒôÌáʾ¿ò,19 +33=×Ö·û,21 +34=ÐÐΪ,9 +35=È«¾Ö±äÁ¿,27 +36=ÌØ¶¨ÎäÆ÷,14 +37=ÒѼ¤»î,10 +38=´¥·¢±êÇ©,22 +39=¿Æ¼¼ÀàÐÍ,0 +40=À´Ô´,0 +41=ÎäÆ÷,24 +42=·¢¹âÐÐΪ,25 +43=ʼþ,9 +44=ÕóÓê,26 +45=¸¡µãÖµ,0 +46=¿Æ¼¼ÀàÐÍ,29,2 +47=½¨Öþ,28 +48=ÊýÁ¿,0 +49=ÏñËØ¶¯»­,23 +50=ӰƬ,7 +51=À×´ïʼþ,PT_RadarEventTypes + +; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C +; Origianl definitinos are as follows: +; "Money" +; "Unit" +; "HealBase" +; "Cloak" +; "Explosion" +; "Napalm" +; "Squad" +; "Darkness" +; "Reveal" +; "Armor" +; "Speed" +; "Firepower" +; "ICBM" +; "Invulnerability" +; "Veteran" +; "IonStorm" +; "Gas" +; "Tiberium" +; "Pod" +[PT_CrateTypes] +FixedValueCount=19 +0=0 - Ç®Ïä +1=1 - Ëæ»úÔØ¾ßµ¥Î» +2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ +3=3 - ÓÀ¾ÃÒþÐÎ +4=4 - C4µ¯Í·É˺¦ +5=5 - »ðÑæ±¬Õ¨É˺¦ +6=6 - Ëæ»ú²½±øÐ¡¶Ó +7=7 - ȫͼºÚÄ» +8=8 - ÏÔʾȫµØÍ¼ +9=9 - »¤¼×Ç¿»¯ +10=10 - ËÙ¶ÈÌáÉý +11=11 - »ðÁ¦ÌáÉý +12=12 - ºËµ¯³¬Îäµ¥´Î +13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© +14=14 - ¾­ÑéÉýÐÇ +15=15 - Àë×ӷ籩£¨ÎÞЧ£© +16=16 - ¶¾ÆøÁ£×Ó +17=17 - СƬ¿óʯ +18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© + +; Controls for radar events +; The events, in order, are: +; (1) Generic Combat Event, +; (2) Generic Noncombat Event, +; (3) Dropzone Event, +; (4) Base Under Attack Event, +; (5) Harvester Under Attack Event, +; (6) Enemy Object Sensed Event +[PT_RadarEventTypes] +FixedValueCount=6 +0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ +1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ +2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ +3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ +4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ +5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» + +[ScriptParams] +0=ռλ,0 +1=Ä¿±ê,1 +2=·¾¶µã,2 +3=Ìø×ªÖÁÐÐ#,3 +4=·ÖÀëС¶Ó,4 +5=È«¾Ö±äÁ¿,5 +6=½Å±¾,6 +7=С¶Ó,7 +8=ËùÊô·½,8 +9=ÓïÒô,9 +10=ÒôЧ,10 +11=ӰƬ,11 +12=ÒôÀÖ,12 +13=¹ú¼Ò,13 +14=¾Ö²¿±äÁ¿,14 +15=³¯Ïò,15 +16=½¨Öþ,16 +17=¶¯»­,17 +18=¶Ô»°ÆøÅÝ,18 +19=½øÈë״̬,19 +20=ÕûÊý,0 +21=²¼¶û,20 +22=Ä¿±êÁбí,SP_TargetList + +[SP_TargetList] +ParseFromSection=TeamTargetTechnoTypes +ExtraValueType=0 + +[ScriptExtras] +0=SE_TargetScanStrategy + +[SE_TargetScanStrategy] +0=0 - ×îСÍþв +1=1 - ×î´óÍþв +2=2 - ×î½ü¾àÀë +3=3 - ×îÔ¶¾àÀë + +;Index=Name,ParamType,Obsolete,YROnly,Description +[ScriptsRA2] +0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ +1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ +2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ +3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ +4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ +5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© +6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ +7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ +8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ +9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ +10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ +11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ +12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ +13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© +14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© +15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© +16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ +17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© +18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© +19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ +20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© +21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ +22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ +23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ +24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ +25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ +26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ +27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ +28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ +29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ +30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ +31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ +32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ +33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ +34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© +35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ +36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ +37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ +38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ +39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ +40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ +41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ +42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ +43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ +44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© +45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© +46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ +47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ +48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ +49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ +50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© +51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ +52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ +53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ +56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +;YR Only +58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ +59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ +60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ +61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ +62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ +63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ +64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ +;Hares Only +65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ +66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ +67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ +68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ +69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ +70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü +71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï + +[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? +0=5 +1=9 +;2=10 +3=11 + +; events format: +; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] +; negative number for type currently not supported (only Actions do support yet)! +; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. +; NOTE: ID must be the same like # +[EventsRA2] +0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 +1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 +2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 +3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 +4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 +5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 +6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 +7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 +8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 +9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 +10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 +11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 +12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 +13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 +14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 +15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 +16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 +17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 +18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 +19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 +20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 +21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 +22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 +23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 +24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 +25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 +26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 +27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 +28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 +29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 +30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 +31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 +32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 +33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 +34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 +35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 +36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 +37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 +38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 +39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 +40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 +41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 +42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 +43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 +44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 +45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 +46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 +47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 +48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 +49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 +50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 +51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 +52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 +53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 +54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 +55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 +56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 +57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 + +; YR +58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 +59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 + +; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters +60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 +61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 +86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 + + +; action format: +; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] +; if using negative number for type, param will be set to the absolute value of this number +; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. +; NOTE: ID must be the same like # +[ActionsRA2] +0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 +1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 +2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 +3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 +4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 +5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 +6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 +7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 +8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 +9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 +10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 +11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 +12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 +13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 +14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 +15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 +16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 +17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 +18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 +19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 +20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 +21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 +22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 +23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 +24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 +25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 +26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 +27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 +28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 +29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 +30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 +31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 +32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 +33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 +34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 +35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 +36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 +37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 +38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 +39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 +40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 +41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 +42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 +43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 +44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 +45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 +46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 +47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 +48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 +49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 +50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 +51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 +52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 +53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 +54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 +55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 +56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 +57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 +58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 +59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 +60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 +61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 +62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 +63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 +64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 +65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 +66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 +67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 +68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 +69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 +70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 +71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 +72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 +73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 +74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 +75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 +76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 +77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 +78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 +79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 +80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 +81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 +82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 +83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 +84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 +85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 +86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 +87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 +88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 +89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 +90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 +91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 +92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 +93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 +94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 +95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 +96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 +97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 +98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 +99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 +100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 +101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 +102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 +103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 +104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 +105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 +106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 +107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 +108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 +109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 +110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 +111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 +112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 +113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 +114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 +115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 +116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 +117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 +118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 +119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 +120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 +121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 +122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 +123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 +124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 +125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 +126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 +127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 +128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 +129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 + +; YR +130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 +131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 +132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 +133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 +134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 +135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 +136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 +137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 +138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 +139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 +140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 +141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 +142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 +143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 +144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 +145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 +;bellow only added in hares +146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 +147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 +148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 +149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 +150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 +151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 +152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 +153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 +154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 + +[BridgesTS] + +[BridgesRA2] + +[SpecialOverlayTS] + +[SpecialOverlayRA2] + +[IgnoreTerrainRA2] + +[Sides] +0=Allied +1=Soviet +2=Yuri +3=°²ËþÁÐÐÇ +4=¿Æ¼¼¹¦Äܽ¨Öþ,1 +5=µØ±ê½¨ÖþÀà,1 +6=´ó³ÇÊн¨Öþ,1 +7=ÖÐС³ÇÊн¨Öþ,1 +8=´åׯ½¨Öþ,1 +9=¹¤Òµ½¨Öþ,1 +10=СÐÍ×°Êΰڼþ,1 +11=ÖÐÁ¢ÌØÊ⽨Öþ,1 + +[GameModes] +standard=±ê×¼×÷Õ½ +teamgame=С¶ÓÁªÃË +cooperative=ºÏ×÷ÈÎÎñ +duel=ÇÀµØÅÌ +navalwar=º£Õ½ +meatgrind=ÉúËÀ¶· +megawealth=¾Þ¸» +airwar=(ÎÞЧ)¿ÕÕ½ +nukewar=(ÎÞЧ)ºËÕ½ + +[ForceUnitPalettePrefix] +0=TIBTRE + +[ForceIsoPalettePrefix] + +;===ScriptTemplates=== +;X=UIName, Name, Count, Key 1 ,Value 1 , Key 2 ,Value 2 , ..., Key Count ,Value Count +;EMPTY will be considered as a CONST, with it FA2Copy will ignore the value + +;By prry +[ScriptTemplates] +DefaultName=ĬÈÏ +Counts=5 +1=Á½µã¼äѲÂß,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 +2=Èýµã¼äѲÂß,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +3=Ëĵã¼äѲÂß,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +4=×°ÔØ²¿¶ÓÐ¶ÔØ¹¥»÷,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 +5=×°ÔØÈëÔØ¾ß²¢¹¥»÷,New load script,3,21,EMPTY,14,EMPTY,0,0 + +;===TeamTemplates=== +;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 +;Checkbox order matrix: +; |1 6 11 | +; |2 7 12 16| +; |3 8 13 17| +; |4 9 14 18| +; |5 10 15 19| + +;By Sandman +[TeamTemplates] +DefaultName=ĬÈÏ +Counts=3 +1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 + +; not NOSURFACES: +;[BuildingVoxelTurretsRA2] +;GTGCANX=-1 +;GTGCANY=0;-6 +;NASAMY=0;2 +;NALASRX=0 +;NALASRY=0;-3 +;NAFLAKY=10;10 + +[VehicleVoxelTurretsRA2Disabled] +;DISKX=-10 +;DISKY=-10 +;YTNKY=-30 +SREFX=4 +SREFY=3 + +[IgnoreArtImage] +BFRT=1 +CAML=1 + +[IgnoreSuperAnim1] + + +[IgnoreSuperAnim2] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim3] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim4] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +; fix for building list: +[GTGCAN] +AIBasePlanningSide=0 + +[YACOMD] +AIBasePlanningSide=2 + +[YADEPT] +AIBasePlanningSide=0 + +[NASPYB] +AIBasePlanningSide=2 + +; rename list for objects. ObjectID=StringID +[Rename] + +[MovieList] +Start=66; Anything below will not be listed! + +[StdBrushSize] +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 +WaterSet=2 + +[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 + +; SlopeSetPieces for cliffs have a specific direction. +; used for AutoLevel logic +; CURRENTLY IGNORED +[SlopeSetPiecesDirections] +Count=10 +0=Right_1 +1=Left_1 +2=Top_1 +3=Bottom_1 +4=Right_2 +5=Left_2 +6=Left_2 +7=Bottom_2 +8=Top_2 +9=Top_2 + +[LUNARLimits] +TreeMax=999 +TreeMin=999 + +[URBANLimits] +TreeMax=999 +;TreeMax=27 + +[TEMPERATELimits] +TreeMax=999 +;TreeMax=27 + +[SNOWLimits] +TreeMax=999 +;TreeMax=27 + +[NEWURBANLimits] +TreeMax=999 +;TreeMax=27 + +[DESERTLimits] +TreeMin=30 +TreeMax=999 + +; tileset ini overwritings +; only used by FinalAlert +[IgnoreSetTEMPERATE] +0=77 +1=78 +2=79 + +[IgnoreSetSNOW] +0=8 +1=46 + +[IgnoreSetURBAN] +0=49 +1=50 +2=51 +5=56 +7=30 +8=91 +9=92 +10=93 +11=94 +12=95 +13=96 +14=97 +15=98 +16=99 +17=100 +;3=53; Tunnel +;4=54; Tunnel Side +;6=73; Dirt Tunnel + +[IgnoreSetNEWURBAN] +0=101 + +[IgnoreSetDESERT] +0=19 +1=54 +2=53 +3=56 +4=73 +5=80 + +[IgnoreSetLUNAR] + +[UseSetTEMPERATE] +0=57 + +[UseSetSNOW] +[UseSetURBAN] + +[NewUrbanInfo] +Morphable2=114 +Ramps2=117 +Cliffs2=110 +CliffsWater2=112 + +; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! +; If a ground tile id exceeds this number, FA2 will assume the map is a YR map +[RA2TileMax] +Temperat=838 +Urban=1077 +Snow=798 + +[YRInfantry] +YENGINEER=1 +GGI=1 +INIT=1 +BORIS=1 +BRUTE=1 +VIRUS=1 +CLNT=1 +ARND=1 +STLN=1 +CAML=1 +EINS=1 +MUMY=1 +RMNV=1 +LUNR=1 +DNOA=1 +DNOB=1 +SLAV=1 +WWLF=1 +YDOG=1 +YADOG=1 + +[YRUnits] +YHVR=1 +PCV=1 +SMIN=1 +SMON=1 +YCAB=1 +YTNK=1 +BFRT=1 +TELE=1 +CAOS=1 +DDBX=1 +BCAB=1 +BSUB=1 +SCHP=1 +JEEP=1 +MIND=1 +DISK=1 +UTNK=1 +ROBO=1 +YDUM=1 +SCHD=1 +DOLY=1 +CBLC=1 +FTRK=1 +AMBU=1 +CIVP=1 + +[YRBuildings] +YACNST=1 +YAPOWR=1 +YABRCK=1 +YAWEAP=1 +YAYARD=1 +YADEPT=1 +YATECH=1 +GAFWLL=1 +YAGGUN=1 +YAPSYT=1 +NAINDP=1 +YAGRND=1 +YAGNTC=1 +CASLAB=1 +CATIME=1 +YAPPET=1 +CALOND04=1 +CALOND05=1 +CALOND06=1 +CAMOON01=1 +CATRAN03=1 +CAEAST01=1 +CAEGYP01=1 +CAEGYP02=1 +CAEGYP03=1 +CALA01=1 +CALA02=1 +CALA03=1 +CALA04=1 +CALA05=1 +CALOND01=1 +CALOND02=1 +CALOND03=1 +CAMORR01=1 +CAMORR02=1 +CAMORR03=1 +CASANF01=1 +CASANF02=1 +CASANF03=1 +CASANF04=1 +CASANF05=1 +CASEAT01=1 +NATBNK=1 +GAGATE_A=1 +CASANF09=1 +CASANF10=1 +CASANF11=1 +CASANF12=1 +CASANF13=1 +CASANF14=1 +CASANF06=1 +CASANF07=1 +CASANF08=1 +CASEAT02=1 +YACOMD=1 +YAPPPT=1 +GAROBO=1 +YAREFN=1 +YAROCK=1 +NABNKR=1 +CASANF15=1 +CASANF16=1 +CASANF17=1 +CASANF18=1 +CASIN03E=1 +CASIN03S=1 +CAURB01=1 +CAURB02=1 +CAURB03=1 +CAPOWR=1 +CALA07=1 +CAEGYP06=1 +CALA08=1 +CAEAST02=1 +CABARR01=1 +CABARR02=1 +CAMORR04=1 +CAMORR05=1 +CALA09=1 +CAEGYP04=1 +CAEGYP05=1 +CALA06=1 +CAMORR06=1 +CAMORR07=1 +CAMORR08=1 +CAMORR09=1 +CAMORR10=1 +CATIME01=1 +CATIME02=1 +CALA10=1 +CALA11=1 +CALA12=1 +CALA13=1 +CAPARK04=1 +CAPARK05=1 +CAPARK06=1 +CALA14=1 +CALA15=1 +CABUNK03=1 +CABUNK04=1 +CALUNR01=1 +CALUNR02=1 + +[YRTerrain] +TREE31=1 +TREE32=1 +TREE33=1 +TREE34=1 +TREE35=1 +TREE36=1 + +[YRAircraft] +BPLN=1 +SPYP=1 +CMISL=1 + +[YROverlay] +Begin=243; which number is the first from new YR overlay? + +; things only FinalAlert will ignore +; these are usually all dummies and leftovers from TS +[IgnoreRA2] +0=GAARMORY +1=APACHE +2=DeathDummy +3=WEEDGUY +4=GADUMY +5=NAWAST +6=GARADR +7=CAIRSFGL +8=CALIT01E +9=CALIT01N +10=CALIT01S +11=CALIT01W +12=CALIT03E +13=CALIT03N +14=CALIT03S +15=CALIT03W +16=CALIT02L +17=CALIT02R +18=NAHPAD +19=CAEURO01 +20=CACITY01 +21=CACITY02 +22=CACITY03 +23=CACITY04 +24=CITY06 +25=CITY05 +26=CITY04 +27=CITY03 +28=CITY02 +29=CITY01 +30=CAARMR +31=TREE29 +32=TREE30 +33=CANEWY05 +34=REDLAMP +35=GRENLAMP +36=BLUELAMP +37=YELWLAMP +38=PURPLAMP +39=INORANLAMP +;40=NEGLAMP ; NEGLAMP added again, invisible in game +41=NEGRED +42=TSTLAMP +43=CAPOL01E +44=CAPOL01N +45=CAPOL01S +46=CAPOL01W +47=CASIN01E +48=CASIN01N +49=CASIN01W +50=CASIN01S +51=GAGREEN +52=GALITE +53=CARGOPLANE +; 54=CAHOSP +55=XCOMET +56=CAKRMW +57=CAFNCB +58=CAFNCW +59=CAFNCP +60=CR1 +61=CR2 +62=CR3 +63=CR4 +64=CR5 +65=CR6 +66=BURN01 +67=BURN02 +68=BURN03 +69=BURN04 +70=BURN05 +71=BURN06 +72=BURN07 +73=BURN08 +74=BURN09 +75=BURN10 +76=BURN11 +77=BURN12 +78=BURN13 +79=BURN14 +80=BURN15 +Another one :) =BURN16 +82=CASYDN01 +83=CATIME +84=CALOND02;? +;85=CAMORR01 +;86=CAMORR02 +;87=CAMORR03 +;88=CAEGYP06 +;89=CAMORR04 +;90=CAEGYP04 +;91=CAEGYP05 +;92=CALA06 + +97=DNOB;? +98=GAWRONG +99=CALA02;? +100=CAMOON01 +;101=CAEGYP01 +102=UTNK +103=YDUM +104=WWLF +105=YADOG +106=YDOG +107=SMON +108=CMON +109=YADEPT +110=CALOND06;? +;111=TREE32 + +; Yes means Image= in art ini will be ignored +[IgnoreArtImage] +CAML=yes + +; hacks for shore pieces +; shore id_pos=iswater +; pos: count from left top to right, then next "row" + +; RA2 only needs one fix (for URBAN specifically) +[ShoreTerrainRA2] +12_4=1 +12_5=1 + +; But TS needs all :( +[ShoreTerrainTS] +0_0=0 +0_1=0 +0_2=1 +0_3=1 +1_0=0 +1_1=0 +2_0=0 +2_1=0 +3_0=0 +4_0=0 +4_1=0 +4_3=0 +5_0=0 +5_1=0 +5_2=0 +6_0=0 +7_0=0 +8_0=0 +8_2=0 +9_0=0 +9_2=0 +10_0=0 +10_2=0 +11_0=0 +12_0=0 +12_1=0 +12_3=0 +13_0=0 +13_3=0 +13_4=0 +14_2=0 +15_2=0 +16_2=0 +16_3=0 +17_2=0 +17_3=0 +18_2=0 +18_3=0 +19_1=0 +20_3=0 +20_4=0 +20_5=0 +21_2=0 +21_4=0 +21_5=0 +22_3=0 +23_3=0 +24_1=0 +24_3=0 +25_1=0 +25_3=0 +26_1=0 +26_3=0 +27_1=0 +28_1=0 +28_2=0 +28_5=0 +29_2=0 +29_4=0 +29_5=0 +30_1=0 +31_1=0 +32_0=0 +32_1=0 +32_2=0 +33_0=0 +33_1=0 +33_2=0 +34_0=0 +34_2=0 +34_3=0 +35_0=0 +35_2=0 +35_3=0 +36_1=0 +36_2=0 +36_3=0 +37_1=0 +37_2=0 +37_3=0 +38_0=0 +38_1=0 +38_3=0 +39_0=0 +39_1=0 +39_3=0 + +; tilesets that may be modified using the shore or a similar logic +[SoftTileSets] +ClearTile=1 +RoughTile=1 +ClearToRoughLat=1 +SandTile =1 +ClearToSandLat=1 +GreenTile=1 +ClearToGreenLat=1 +PaveTile=1 +MiscPaveTile =1 +ClearToPaveLat=1 +RoughGround=0; no +WaterSet=1 +ShorePieces=1 + +; corner strings are: cornerleft, cornerright, cornerbottom, cornertop + +[CliffBackData] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataAlt] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataNEWURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffFrontData] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataAlt] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataNEWURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +; EVENTS AND ACTIONS +; param type format: Description,ListType +; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): +; 0-Nothing +; 1-Houses +; 2-Teamtypes +; 3-UnitTypes +; 4-InfantryTypes +; 5-AircraftTypes +; 6-BuildingTypes +; 7-Videos +; 8-tutorial texts +; 9-Triggers +; 10-yes/no +; 11=sounds +; 12=themes +; 13=speeches +; 14=special weapons +; 15=animations +; 16=particles +; 17=waypoints +; 18=crate types * +; 19=speech bubble types * +; 20=Global variables <--- wrong, local variables! +; 21=.CSF strings (RA2 only) * +; 22=Tag * +; 23=Meteors * +; 24=Weapons * +; 25=Light behavior * +; 26=Shower * +; 27=Rules Global variables +; 28=Building INI names +; 29=Techtypes + + +; ParamTypes +; Name, ListType, [Code] +[ParamTypes] +-1=δʹÓÃ,0,1;not listed in FA2 +0=δʹÓÃ,0 +1=δ֪,0 +2=ËùÊô·½,1 +3=¾Ö²¿±äÁ¿,20 +4=ʱ¼ä,0 +5=»ý·Ö,0 +6=ÊýÖµ,0 +7=С¶ÓÀàÐÍ,2 +8=½¨Öþ,6 +9=·ÉÐÐÆ÷,5 +10=²½±ø,4 +11=µ¥Î»,3 +12=µçÓ°,7 +13=Îı¾,8 +14=´¥·¢,9 +15=ÔÊÐí,10 +16=ÉùÒô,11 +17=ÀÖÇú,12 +18=ÓïÒô,13 +19=²½Öè,0 +20=³¬¼¶ÎäÆ÷,14 +21=×ó,0 +22=ÉÏ,0 +23=¿í,0 +24=¸ß,0 +25=¶¯»­,15 +26=Á£×Ó,16 +27=³ÖÐøÊ±¼ä,0 +28=ËÙ¶È,0 +29=VoxelË鯬IDºÅ,29 +30=·¾¶µã,17 +31=ľÏäÀàÐÍ,PT_CrateTypes +32=ÓïÒôÌáʾ¿ò,19 +33=×Ö·û,21 +34=ÐÐΪ,9 +35=È«¾Ö±äÁ¿,27 +36=ÌØ¶¨ÎäÆ÷,14 +37=ÒѼ¤»î,10 +38=´¥·¢±êÇ©,22 +39=¿Æ¼¼ÀàÐÍ,0 +40=À´Ô´,0 +41=ÎäÆ÷,24 +42=·¢¹âÐÐΪ,25 +43=ʼþ,9 +44=ÕóÓê,26 +45=¸¡µãÖµ,0 +46=¿Æ¼¼ÀàÐÍ,29,2 +47=½¨Öþ,28 +48=ÊýÁ¿,0 +49=ÏñËØ¶¯»­,23 +50=ӰƬ,7 +51=À×´ïʼþ,PT_RadarEventTypes + +; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C +; Origianl definitinos are as follows: +; "Money" +; "Unit" +; "HealBase" +; "Cloak" +; "Explosion" +; "Napalm" +; "Squad" +; "Darkness" +; "Reveal" +; "Armor" +; "Speed" +; "Firepower" +; "ICBM" +; "Invulnerability" +; "Veteran" +; "IonStorm" +; "Gas" +; "Tiberium" +; "Pod" +[PT_CrateTypes] +FixedValueCount=19 +0=0 - Ç®Ïä +1=1 - Ëæ»úÔØ¾ßµ¥Î» +2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ +3=3 - ÓÀ¾ÃÒþÐÎ +4=4 - C4µ¯Í·É˺¦ +5=5 - »ðÑæ±¬Õ¨É˺¦ +6=6 - Ëæ»ú²½±øÐ¡¶Ó +7=7 - ȫͼºÚÄ» +8=8 - ÏÔʾȫµØÍ¼ +9=9 - »¤¼×Ç¿»¯ +10=10 - ËÙ¶ÈÌáÉý +11=11 - »ðÁ¦ÌáÉý +12=12 - ºËµ¯³¬Îäµ¥´Î +13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© +14=14 - ¾­ÑéÉýÐÇ +15=15 - Àë×ӷ籩£¨ÎÞЧ£© +16=16 - ¶¾ÆøÁ£×Ó +17=17 - СƬ¿óʯ +18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© + +; Controls for radar events +; The events, in order, are: +; (1) Generic Combat Event, +; (2) Generic Noncombat Event, +; (3) Dropzone Event, +; (4) Base Under Attack Event, +; (5) Harvester Under Attack Event, +; (6) Enemy Object Sensed Event +[PT_RadarEventTypes] +FixedValueCount=6 +0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ +1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ +2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ +3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ +4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ +5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» + +[ScriptParams] +0=ռλ,0 +1=Ä¿±ê,1 +2=·¾¶µã,2 +3=Ìø×ªÖÁÐÐ#,3 +4=·ÖÀëС¶Ó,4 +5=È«¾Ö±äÁ¿,5 +6=½Å±¾,6 +7=С¶Ó,7 +8=ËùÊô·½,8 +9=ÓïÒô,9 +10=ÒôЧ,10 +11=ӰƬ,11 +12=ÒôÀÖ,12 +13=¹ú¼Ò,13 +14=¾Ö²¿±äÁ¿,14 +15=³¯Ïò,15 +16=½¨Öþ,16 +17=¶¯»­,17 +18=¶Ô»°ÆøÅÝ,18 +19=½øÈë״̬,19 +20=ÕûÊý,0 +21=²¼¶û,20 +22=Ä¿±êÁбí,SP_TargetList + +[SP_TargetList] +ParseFromSection=TeamTargetTechnoTypes +ExtraValueType=0 + +[ScriptExtras] +0=SE_TargetScanStrategy + +[SE_TargetScanStrategy] +0=0 - ×îСÍþв +1=1 - ×î´óÍþв +2=2 - ×î½ü¾àÀë +3=3 - ×îÔ¶¾àÀë + +;Index=Name,ParamType,Obsolete,YROnly,Description +[ScriptsRA2] +0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ +1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ +2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ +3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ +4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ +5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© +6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ +7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ +8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ +9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ +10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ +11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ +12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ +13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© +14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© +15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© +16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ +17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© +18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© +19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ +20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© +21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ +22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ +23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ +24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ +25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ +26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ +27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ +28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ +29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ +30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ +31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ +32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ +33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ +34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© +35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ +36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ +37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ +38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ +39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ +40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ +41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ +42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ +43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ +44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© +45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© +46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ +47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ +48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ +49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ +50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© +51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ +52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ +53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ +56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +;YR Only +58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ +59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ +60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ +61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ +62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ +63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ +64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ +;Hares Only +65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ +66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ +67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ +68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ +69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ +70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü +71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï + +[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? +0=5 +1=9 +;2=10 +3=11 + +; events format: +; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] +; negative number for type currently not supported (only Actions do support yet)! +; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. +; NOTE: ID must be the same like # +[EventsRA2] +0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 +1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 +2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 +3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 +4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 +5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 +6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 +7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 +8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 +9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 +10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 +11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 +12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 +13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 +14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 +15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 +16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 +17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 +18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 +19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 +20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 +21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 +22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 +23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 +24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 +25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 +26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 +27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 +28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 +29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 +30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 +31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 +32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 +33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 +34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 +35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 +36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 +37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 +38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 +39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 +40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 +41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 +42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 +43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 +44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 +45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 +46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 +47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 +48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 +49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 +50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 +51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 +52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 +53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 +54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 +55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 +56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 +57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 + +; YR +58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 +59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 + +; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters +60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 +61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 +86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 + + +; action format: +; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] +; if using negative number for type, param will be set to the absolute value of this number +; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. +; NOTE: ID must be the same like # +[ActionsRA2] +0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 +1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 +2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 +3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 +4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 +5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 +6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 +7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 +8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 +9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 +10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 +11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 +12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 +13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 +14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 +15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 +16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 +17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 +18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 +19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 +20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 +21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 +22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 +23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 +24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 +25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 +26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 +27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 +28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 +29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 +30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 +31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 +32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 +33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 +34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 +35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 +36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 +37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 +38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 +39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 +40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 +41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 +42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 +43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 +44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 +45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 +46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 +47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 +48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 +49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 +50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 +51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 +52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 +53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 +54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 +55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 +56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 +57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 +58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 +59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 +60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 +61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 +62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 +63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 +64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 +65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 +66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 +67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 +68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 +69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 +70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 +71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 +72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 +73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 +74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 +75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 +76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 +77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 +78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 +79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 +80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 +81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 +82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 +83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 +84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 +85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 +86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 +87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 +88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 +89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 +90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 +91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 +92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 +93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 +94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 +95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 +96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 +97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 +98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 +99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 +100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 +101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 +102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 +103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 +104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 +105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 +106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 +107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 +108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 +109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 +110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 +111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 +112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 +113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 +114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 +115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 +116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 +117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 +118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 +119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 +120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 +121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 +122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 +123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 +124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 +125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 +126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 +127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 +128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 +129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 + +; YR +130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 +131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 +132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 +133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 +134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 +135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 +136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 +137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 +138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 +139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 +140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 +141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 +142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 +143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 +144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 +145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 +;bellow only added in hares +146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 +147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 +148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 +149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 +150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 +151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 +152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 +153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 +154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 + +[BridgesTS] + +[BridgesRA2] + +[SpecialOverlayTS] + +[SpecialOverlayRA2] + +[IgnoreTerrainRA2] + +[GameModes] +standard=±ê×¼×÷Õ½ +teamgame=С¶ÓÁªÃË +cooperative=ºÏ×÷ÈÎÎñ +duel=ÇÀµØÅÌ +navalwar=º£Õ½ +meatgrind=ÉúËÀ¶· +megawealth=¾Þ¸» +airwar=(ÎÞЧ)¿ÕÕ½ +nukewar=(ÎÞЧ)ºËÕ½ + +[ForceUnitPalettePrefix] +0=TIBTRE + +[ForceIsoPalettePrefix] + +;===ScriptTemplates=== +;X=UIName, Name, Count, Key 1 ,Value 1 , Key 2 ,Value 2 , ..., Key Count ,Value Count +;EMPTY will be considered as a CONST, with it FA2Copy will ignore the value + +;By prry +[ScriptTemplates] +DefaultName=ĬÈÏ +Counts=5 +1=Á½µã¼äѲÂß,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 +2=Èýµã¼äѲÂß,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +3=Ëĵã¼äѲÂß,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +4=×°ÔØ²¿¶ÓÐ¶ÔØ¹¥»÷,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 +5=×°ÔØÈëÔØ¾ß²¢¹¥»÷,New load script,3,21,EMPTY,14,EMPTY,0,0 + +;===TeamTemplates=== +;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 +;Checkbox order matrix: +; |1 6 11 | +; |2 7 12 16| +; |3 8 13 17| +; |4 9 14 18| +; |5 10 15 19| + +;By Sandman +[TeamTemplates] +DefaultName=ĬÈÏ +Counts=3 +1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 + +; not NOSURFACES: +;[BuildingVoxelTurretsRA2] +;GTGCANX=-1 +;GTGCANY=0;-6 +;NASAMY=0;2 +;NALASRX=0 +;NALASRY=0;-3 +;NAFLAKY=10;10 + +[VehicleVoxelTurretsRA2Disabled] +;DISKX=-10 +;DISKY=-10 +;YTNKY=-30 +SREFX=4 +SREFY=3 + +[IgnoreArtImage] +BFRT=1 +CAML=1 + +[IgnoreSuperAnim1] + + +[IgnoreSuperAnim2] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim3] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim4] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +; fix for building list: +[GTGCAN] +AIBasePlanningSide=0 + +[YACOMD] +AIBasePlanningSide=2 + +[YADEPT] +AIBasePlanningSide=0 + +[NASPYB] +AIBasePlanningSide=2 + +; rename list for objects. ObjectID=StringID +[Rename] + +[MovieList] +Start=66; Anything below will not be listed! + +[StdBrushSize] +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 +WaterSet=2 + +[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 + +; SlopeSetPieces for cliffs have a specific direction. +; used for AutoLevel logic +; CURRENTLY IGNORED +[SlopeSetPiecesDirections] +Count=10 +0=Right_1 +1=Left_1 +2=Top_1 +3=Bottom_1 +4=Right_2 +5=Left_2 +6=Left_2 +7=Bottom_2 +8=Top_2 +9=Top_2 + +[LUNARLimits] +TreeMax=999 +TreeMin=999 + +[URBANLimits] +TreeMax=999 +;TreeMax=27 + +[TEMPERATELimits] +TreeMax=999 +;TreeMax=27 + +[SNOWLimits] +TreeMax=999 +;TreeMax=27 + +[NEWURBANLimits] +TreeMax=999 +;TreeMax=27 + +[DESERTLimits] +TreeMin=30 +TreeMax=999 + +; tileset ini overwritings +; only used by FinalAlert +[IgnoreSetTEMPERATE] +0=77 +1=78 +2=79 + +[IgnoreSetSNOW] +0=8 +1=46 + +[IgnoreSetURBAN] +0=49 +1=50 +2=51 +5=56 +7=30 +8=91 +9=92 +10=93 +11=94 +12=95 +13=96 +14=97 +15=98 +16=99 +17=100 +;3=53; Tunnel +;4=54; Tunnel Side +;6=73; Dirt Tunnel + +[IgnoreSetNEWURBAN] +0=101 + +[IgnoreSetDESERT] +0=19 +1=54 +2=53 +3=56 +4=73 +5=80 + +[IgnoreSetLUNAR] + +[UseSetTEMPERATE] +0=57 + +[UseSetSNOW] +[UseSetURBAN] + +[NewUrbanInfo] +Morphable2=114 +Ramps2=117 +Cliffs2=110 +CliffsWater2=112 + +; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! +; If a ground tile id exceeds this number, FA2 will assume the map is a YR map +[RA2TileMax] +Temperat=838 +Urban=1077 +Snow=798 + +[YRInfantry] +YENGINEER=1 +GGI=1 +INIT=1 +BORIS=1 +BRUTE=1 +VIRUS=1 +CLNT=1 +ARND=1 +STLN=1 +CAML=1 +EINS=1 +MUMY=1 +RMNV=1 +LUNR=1 +DNOA=1 +DNOB=1 +SLAV=1 +WWLF=1 +YDOG=1 +YADOG=1 + +[YRUnits] +YHVR=1 +PCV=1 +SMIN=1 +SMON=1 +YCAB=1 +YTNK=1 +BFRT=1 +TELE=1 +CAOS=1 +DDBX=1 +BCAB=1 +BSUB=1 +SCHP=1 +JEEP=1 +MIND=1 +DISK=1 +UTNK=1 +ROBO=1 +YDUM=1 +SCHD=1 +DOLY=1 +CBLC=1 +FTRK=1 +AMBU=1 +CIVP=1 + +[YRBuildings] +YACNST=1 +YAPOWR=1 +YABRCK=1 +YAWEAP=1 +YAYARD=1 +YADEPT=1 +YATECH=1 +GAFWLL=1 +YAGGUN=1 +YAPSYT=1 +NAINDP=1 +YAGRND=1 +YAGNTC=1 +CASLAB=1 +CATIME=1 +YAPPET=1 +CALOND04=1 +CALOND05=1 +CALOND06=1 +CAMOON01=1 +CATRAN03=1 +CAEAST01=1 +CAEGYP01=1 +CAEGYP02=1 +CAEGYP03=1 +CALA01=1 +CALA02=1 +CALA03=1 +CALA04=1 +CALA05=1 +CALOND01=1 +CALOND02=1 +CALOND03=1 +CAMORR01=1 +CAMORR02=1 +CAMORR03=1 +CASANF01=1 +CASANF02=1 +CASANF03=1 +CASANF04=1 +CASANF05=1 +CASEAT01=1 +NATBNK=1 +GAGATE_A=1 +CASANF09=1 +CASANF10=1 +CASANF11=1 +CASANF12=1 +CASANF13=1 +CASANF14=1 +CASANF06=1 +CASANF07=1 +CASANF08=1 +CASEAT02=1 +YACOMD=1 +YAPPPT=1 +GAROBO=1 +YAREFN=1 +YAROCK=1 +NABNKR=1 +CASANF15=1 +CASANF16=1 +CASANF17=1 +CASANF18=1 +CASIN03E=1 +CASIN03S=1 +CAURB01=1 +CAURB02=1 +CAURB03=1 +CAPOWR=1 +CALA07=1 +CAEGYP06=1 +CALA08=1 +CAEAST02=1 +CABARR01=1 +CABARR02=1 +CAMORR04=1 +CAMORR05=1 +CALA09=1 +CAEGYP04=1 +CAEGYP05=1 +CALA06=1 +CAMORR06=1 +CAMORR07=1 +CAMORR08=1 +CAMORR09=1 +CAMORR10=1 +CATIME01=1 +CATIME02=1 +CALA10=1 +CALA11=1 +CALA12=1 +CALA13=1 +CAPARK04=1 +CAPARK05=1 +CAPARK06=1 +CALA14=1 +CALA15=1 +CABUNK03=1 +CABUNK04=1 +CALUNR01=1 +CALUNR02=1 + +[YRTerrain] +TREE31=1 +TREE32=1 +TREE33=1 +TREE34=1 +TREE35=1 +TREE36=1 + +[YRAircraft] +BPLN=1 +SPYP=1 +CMISL=1 + +[YROverlay] +Begin=243; which number is the first from new YR overlay? + +; things only FinalAlert will ignore +; these are usually all dummies and leftovers from TS +[IgnoreRA2] +0=GAARMORY +1=APACHE +2=DeathDummy +3=WEEDGUY +4=GADUMY +5=NAWAST +6=GARADR +7=CAIRSFGL +8=CALIT01E +9=CALIT01N +10=CALIT01S +11=CALIT01W +12=CALIT03E +13=CALIT03N +14=CALIT03S +15=CALIT03W +16=CALIT02L +17=CALIT02R +18=NAHPAD +19=CAEURO01 +20=CACITY01 +21=CACITY02 +22=CACITY03 +23=CACITY04 +24=CITY06 +25=CITY05 +26=CITY04 +27=CITY03 +28=CITY02 +29=CITY01 +30=CAARMR +31=TREE29 +32=TREE30 +33=CANEWY05 +34=REDLAMP +35=GRENLAMP +36=BLUELAMP +37=YELWLAMP +38=PURPLAMP +39=INORANLAMP +;40=NEGLAMP ; NEGLAMP added again, invisible in game +41=NEGRED +42=TSTLAMP +43=CAPOL01E +44=CAPOL01N +45=CAPOL01S +46=CAPOL01W +47=CASIN01E +48=CASIN01N +49=CASIN01W +50=CASIN01S +51=GAGREEN +52=GALITE +53=CARGOPLANE +; 54=CAHOSP +55=XCOMET +56=CAKRMW +57=CAFNCB +58=CAFNCW +59=CAFNCP +60=CR1 +61=CR2 +62=CR3 +63=CR4 +64=CR5 +65=CR6 +66=BURN01 +67=BURN02 +68=BURN03 +69=BURN04 +70=BURN05 +71=BURN06 +72=BURN07 +73=BURN08 +74=BURN09 +75=BURN10 +76=BURN11 +77=BURN12 +78=BURN13 +79=BURN14 +80=BURN15 +Another one :) =BURN16 +82=CASYDN01 +83=CATIME +84=CALOND02;? +;85=CAMORR01 +;86=CAMORR02 +;87=CAMORR03 +;88=CAEGYP06 +;89=CAMORR04 +;90=CAEGYP04 +;91=CAEGYP05 +;92=CALA06 + +97=DNOB;? +98=GAWRONG +99=CALA02;? +100=CAMOON01 +;101=CAEGYP01 +102=UTNK +103=YDUM +104=WWLF +105=YADOG +106=YDOG +107=SMON +108=CMON +109=YADEPT +110=CALOND06;? +;111=TREE32 + +; Yes means Image= in art ini will be ignored +[IgnoreArtImage] +CAML=yes + +; hacks for shore pieces +; shore id_pos=iswater +; pos: count from left top to right, then next "row" + +; RA2 only needs one fix (for URBAN specifically) +[ShoreTerrainRA2] +12_4=1 +12_5=1 + +; But TS needs all :( +[ShoreTerrainTS] +0_0=0 +0_1=0 +0_2=1 +0_3=1 +1_0=0 +1_1=0 +2_0=0 +2_1=0 +3_0=0 +4_0=0 +4_1=0 +4_3=0 +5_0=0 +5_1=0 +5_2=0 +6_0=0 +7_0=0 +8_0=0 +8_2=0 +9_0=0 +9_2=0 +10_0=0 +10_2=0 +11_0=0 +12_0=0 +12_1=0 +12_3=0 +13_0=0 +13_3=0 +13_4=0 +14_2=0 +15_2=0 +16_2=0 +16_3=0 +17_2=0 +17_3=0 +18_2=0 +18_3=0 +19_1=0 +20_3=0 +20_4=0 +20_5=0 +21_2=0 +21_4=0 +21_5=0 +22_3=0 +23_3=0 +24_1=0 +24_3=0 +25_1=0 +25_3=0 +26_1=0 +26_3=0 +27_1=0 +28_1=0 +28_2=0 +28_5=0 +29_2=0 +29_4=0 +29_5=0 +30_1=0 +31_1=0 +32_0=0 +32_1=0 +32_2=0 +33_0=0 +33_1=0 +33_2=0 +34_0=0 +34_2=0 +34_3=0 +35_0=0 +35_2=0 +35_3=0 +36_1=0 +36_2=0 +36_3=0 +37_1=0 +37_2=0 +37_3=0 +38_0=0 +38_1=0 +38_3=0 +39_0=0 +39_1=0 +39_3=0 + +; tilesets that may be modified using the shore or a similar logic +[SoftTileSets] +ClearTile=1 +RoughTile=1 +ClearToRoughLat=1 +SandTile =1 +ClearToSandLat=1 +GreenTile=1 +ClearToGreenLat=1 +PaveTile=1 +MiscPaveTile =1 +ClearToPaveLat=1 +RoughGround=0; no +WaterSet=1 +ShorePieces=1 + +; corner strings are: cornerleft, cornerright, cornerbottom, cornertop + +[CliffBackData] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataAlt] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataNEWURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffFrontData] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataAlt] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataNEWURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +; EVENTS AND ACTIONS +; param type format: Description,ListType +; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): +; 0-Nothing +; 1-Houses +; 2-Teamtypes +; 3-UnitTypes +; 4-InfantryTypes +; 5-AircraftTypes +; 6-BuildingTypes +; 7-Videos +; 8-tutorial texts +; 9-Triggers +; 10-yes/no +; 11=sounds +; 12=themes +; 13=speeches +; 14=special weapons +; 15=animations +; 16=particles +; 17=waypoints +; 18=crate types * +; 19=speech bubble types * +; 20=Global variables <--- wrong, local variables! +; 21=.CSF strings (RA2 only) * +; 22=Tag * +; 23=Meteors * +; 24=Weapons * +; 25=Light behavior * +; 26=Shower * +; 27=Rules Global variables +; 28=Building INI names +; 29=Techtypes + + +; ParamTypes +; Name, ListType, [Code] +[ParamTypes] +-1=δʹÓÃ,0,1;not listed in FA2 +0=δʹÓÃ,0 +1=δ֪,0 +2=ËùÊô·½,1 +3=¾Ö²¿±äÁ¿,20 +4=ʱ¼ä,0 +5=»ý·Ö,0 +6=ÊýÖµ,0 +7=С¶ÓÀàÐÍ,2 +8=½¨Öþ,6 +9=·ÉÐÐÆ÷,5 +10=²½±ø,4 +11=µ¥Î»,3 +12=µçÓ°,7 +13=Îı¾,8 +14=´¥·¢,9 +15=ÔÊÐí,10 +16=ÉùÒô,11 +17=ÀÖÇú,12 +18=ÓïÒô,13 +19=²½Öè,0 +20=³¬¼¶ÎäÆ÷,14 +21=×ó,0 +22=ÉÏ,0 +23=¿í,0 +24=¸ß,0 +25=¶¯»­,15 +26=Á£×Ó,16 +27=³ÖÐøÊ±¼ä,0 +28=ËÙ¶È,0 +29=VoxelË鯬IDºÅ,29 +30=·¾¶µã,17 +31=ľÏäÀàÐÍ,PT_CrateTypes +32=ÓïÒôÌáʾ¿ò,19 +33=×Ö·û,21 +34=ÐÐΪ,9 +35=È«¾Ö±äÁ¿,27 +36=ÌØ¶¨ÎäÆ÷,14 +37=ÒѼ¤»î,10 +38=´¥·¢±êÇ©,22 +39=¿Æ¼¼ÀàÐÍ,0 +40=À´Ô´,0 +41=ÎäÆ÷,24 +42=·¢¹âÐÐΪ,25 +43=ʼþ,9 +44=ÕóÓê,26 +45=¸¡µãÖµ,0 +46=¿Æ¼¼ÀàÐÍ,29,2 +47=½¨Öþ,28 +48=ÊýÁ¿,0 +49=ÏñËØ¶¯»­,23 +50=ӰƬ,7 +51=À×´ïʼþ,PT_RadarEventTypes + +; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C +; Origianl definitinos are as follows: +; "Money" +; "Unit" +; "HealBase" +; "Cloak" +; "Explosion" +; "Napalm" +; "Squad" +; "Darkness" +; "Reveal" +; "Armor" +; "Speed" +; "Firepower" +; "ICBM" +; "Invulnerability" +; "Veteran" +; "IonStorm" +; "Gas" +; "Tiberium" +; "Pod" +[PT_CrateTypes] +FixedValueCount=19 +0=0 - Ç®Ïä +1=1 - Ëæ»úÔØ¾ßµ¥Î» +2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ +3=3 - ÓÀ¾ÃÒþÐÎ +4=4 - C4µ¯Í·É˺¦ +5=5 - »ðÑæ±¬Õ¨É˺¦ +6=6 - Ëæ»ú²½±øÐ¡¶Ó +7=7 - ȫͼºÚÄ» +8=8 - ÏÔʾȫµØÍ¼ +9=9 - »¤¼×Ç¿»¯ +10=10 - ËÙ¶ÈÌáÉý +11=11 - »ðÁ¦ÌáÉý +12=12 - ºËµ¯³¬Îäµ¥´Î +13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© +14=14 - ¾­ÑéÉýÐÇ +15=15 - Àë×ӷ籩£¨ÎÞЧ£© +16=16 - ¶¾ÆøÁ£×Ó +17=17 - СƬ¿óʯ +18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© + +; Controls for radar events +; The events, in order, are: +; (1) Generic Combat Event, +; (2) Generic Noncombat Event, +; (3) Dropzone Event, +; (4) Base Under Attack Event, +; (5) Harvester Under Attack Event, +; (6) Enemy Object Sensed Event +[PT_RadarEventTypes] +FixedValueCount=6 +0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ +1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ +2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ +3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ +4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ +5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» + +[ScriptParams] +0=ռλ,0 +1=Ä¿±ê,1 +2=·¾¶µã,2 +3=Ìø×ªÖÁÐÐ#,3 +4=·ÖÀëС¶Ó,4 +5=È«¾Ö±äÁ¿,5 +6=½Å±¾,6 +7=С¶Ó,7 +8=ËùÊô·½,8 +9=ÓïÒô,9 +10=ÒôЧ,10 +11=ӰƬ,11 +12=ÒôÀÖ,12 +13=¹ú¼Ò,13 +14=¾Ö²¿±äÁ¿,14 +15=³¯Ïò,15 +16=½¨Öþ,16 +17=¶¯»­,17 +18=¶Ô»°ÆøÅÝ,18 +19=½øÈë״̬,19 +20=ÕûÊý,0 +21=²¼¶û,20 +22=Ä¿±êÁбí,SP_TargetList + +[SP_TargetList] +ParseFromSection=TeamTargetTechnoTypes +ExtraValueType=0 + +[ScriptExtras] +0=SE_TargetScanStrategy + +[SE_TargetScanStrategy] +0=0 - ×îСÍþв +1=1 - ×î´óÍþв +2=2 - ×î½ü¾àÀë +3=3 - ×îÔ¶¾àÀë + +;Index=Name,ParamType,Obsolete,YROnly,Description +[ScriptsRA2] +0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ +1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ +2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ +3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ +4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ +5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© +6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ +7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ +8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ +9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ +10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ +11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ +12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ +13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© +14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© +15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© +16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ +17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© +18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© +19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ +20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© +21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ +22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ +23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ +24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ +25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ +26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ +27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ +28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ +29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ +30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ +31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ +32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ +33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ +34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© +35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ +36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ +37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ +38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ +39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ +40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ +41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ +42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ +43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ +44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© +45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© +46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ +47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ +48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ +49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ +50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© +51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ +52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ +53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ +56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +;YR Only +58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ +59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ +60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ +61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ +62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ +63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ +64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ +;Hares Only +65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ +66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ +67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ +68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ +69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ +70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü +71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï + +[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? +0=5 +1=9 +;2=10 +3=11 + +; events format: +; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] +; negative number for type currently not supported (only Actions do support yet)! +; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. +; NOTE: ID must be the same like # +[EventsRA2] +0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 +1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 +2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 +3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 +4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 +5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 +6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 +7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 +8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 +9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 +10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 +11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 +12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 +13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 +14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 +15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 +16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 +17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 +18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 +19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 +20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 +21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 +22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 +23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 +24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 +25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 +26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 +27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 +28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 +29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 +30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 +31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 +32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 +33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 +34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 +35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 +36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 +37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 +38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 +39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 +40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 +41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 +42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 +43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 +44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 +45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 +46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 +47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 +48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 +49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 +50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 +51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 +52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 +53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 +54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 +55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 +56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 +57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 + +; YR +58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 +59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 + +; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters +60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 +61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 +86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 + + +; action format: +; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] +; if using negative number for type, param will be set to the absolute value of this number +; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. +; NOTE: ID must be the same like # +[ActionsRA2] +0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 +1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 +2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 +3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 +4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 +5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 +6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 +7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 +8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 +9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 +10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 +11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 +12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 +13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 +14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 +15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 +16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 +17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 +18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 +19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 +20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 +21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 +22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 +23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 +24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 +25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 +26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 +27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 +28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 +29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 +30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 +31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 +32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 +33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 +34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 +35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 +36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 +37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 +38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 +39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 +40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 +41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 +42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 +43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 +44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 +45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 +46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 +47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 +48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 +49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 +50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 +51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 +52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 +53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 +54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 +55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 +56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 +57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 +58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 +59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 +60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 +61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 +62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 +63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 +64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 +65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 +66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 +67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 +68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 +69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 +70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 +71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 +72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 +73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 +74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 +75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 +76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 +77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 +78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 +79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 +80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 +81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 +82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 +83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 +84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 +85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 +86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 +87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 +88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 +89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 +90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 +91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 +92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 +93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 +94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 +95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 +96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 +97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 +98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 +99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 +100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 +101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 +102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 +103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 +104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 +105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 +106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 +107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 +108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 +109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 +110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 +111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 +112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 +113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 +114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 +115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 +116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 +117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 +118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 +119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 +120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 +121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 +122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 +123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 +124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 +125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 +126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 +127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 +128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 +129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 + +; YR +130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 +131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 +132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 +133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 +134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 +135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 +136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 +137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 +138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 +139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 +140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 +141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 +142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 +143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 +144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 +145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 +;bellow only added in hares +146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 +147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 +148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 +149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 +150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 +151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 +152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 +153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 +154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 + +[BridgesTS] + +[BridgesRA2] + +[SpecialOverlayTS] + +[SpecialOverlayRA2] + +[IgnoreTerrainRA2] + +[ForceUnitPalettePrefix] +0=TIBTRE + +[ForceIsoPalettePrefix] + +;===ScriptTemplates=== +;X=UIName, Name, Count, Key 1 ,Value 1 , Key 2 ,Value 2 , ..., Key Count ,Value Count +;EMPTY will be considered as a CONST, with it FA2Copy will ignore the value + +;By prry +[ScriptTemplates] +DefaultName=ĬÈÏ +Counts=5 +1=Á½µã¼äѲÂß,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 +2=Èýµã¼äѲÂß,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +3=Ëĵã¼äѲÂß,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +4=×°ÔØ²¿¶ÓÐ¶ÔØ¹¥»÷,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 +5=×°ÔØÈëÔØ¾ß²¢¹¥»÷,New load script,3,21,EMPTY,14,EMPTY,0,0 + +;===TeamTemplates=== +;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 +;Checkbox order matrix: +; |1 6 11 | +; |2 7 12 16| +; |3 8 13 17| +; |4 9 14 18| +; |5 10 15 19| + +;By Sandman +[TeamTemplates] +DefaultName=ĬÈÏ +Counts=3 +1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 + +; not NOSURFACES: +;[BuildingVoxelTurretsRA2] +;GTGCANX=-1 +;GTGCANY=0;-6 +;NASAMY=0;2 +;NALASRX=0 +;NALASRY=0;-3 +;NAFLAKY=10;10 + +[VehicleVoxelTurretsRA2Disabled] +;DISKX=-10 +;DISKY=-10 +;YTNKY=-30 +SREFX=4 +SREFY=3 + +[IgnoreArtImage] +BFRT=1 +CAML=1 + +[IgnoreSuperAnim1] + + +[IgnoreSuperAnim2] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim3] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim4] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +; fix for building list: +[GTGCAN] +AIBasePlanningSide=0 + +[YACOMD] +AIBasePlanningSide=2 + +[YADEPT] +AIBasePlanningSide=0 + +[NASPYB] +AIBasePlanningSide=2 + +; rename list for objects. ObjectID=StringID +[Rename] + +[MovieList] +Start=66; Anything below will not be listed! + +[StdBrushSize] +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 +WaterSet=2 + +[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 + +; SlopeSetPieces for cliffs have a specific direction. +; used for AutoLevel logic +; CURRENTLY IGNORED +[SlopeSetPiecesDirections] +Count=10 +0=Right_1 +1=Left_1 +2=Top_1 +3=Bottom_1 +4=Right_2 +5=Left_2 +6=Left_2 +7=Bottom_2 +8=Top_2 +9=Top_2 + +[LUNARLimits] +TreeMax=999 +TreeMin=999 + +[URBANLimits] +TreeMax=999 +;TreeMax=27 + +[TEMPERATELimits] +TreeMax=999 +;TreeMax=27 + +[SNOWLimits] +TreeMax=999 +;TreeMax=27 + +[NEWURBANLimits] +TreeMax=999 +;TreeMax=27 + +[DESERTLimits] +TreeMin=30 +TreeMax=999 + +; tileset ini overwritings +; only used by FinalAlert +[IgnoreSetTEMPERATE] +0=77 +1=78 +2=79 + +[IgnoreSetSNOW] +0=8 +1=46 + +[IgnoreSetURBAN] +0=49 +1=50 +2=51 +5=56 +7=30 +8=91 +9=92 +10=93 +11=94 +12=95 +13=96 +14=97 +15=98 +16=99 +17=100 +;3=53; Tunnel +;4=54; Tunnel Side +;6=73; Dirt Tunnel + +[IgnoreSetNEWURBAN] +0=101 + +[IgnoreSetDESERT] +0=19 +1=54 +2=53 +3=56 +4=73 +5=80 + +[IgnoreSetLUNAR] + +[UseSetTEMPERATE] +0=57 + +[UseSetSNOW] +[UseSetURBAN] + +[NewUrbanInfo] +Morphable2=114 +Ramps2=117 +Cliffs2=110 +CliffsWater2=112 + +; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! +; If a ground tile id exceeds this number, FA2 will assume the map is a YR map +[RA2TileMax] +Temperat=838 +Urban=1077 +Snow=798 + +[YRInfantry] +YENGINEER=1 +GGI=1 +INIT=1 +BORIS=1 +BRUTE=1 +VIRUS=1 +CLNT=1 +ARND=1 +STLN=1 +CAML=1 +EINS=1 +MUMY=1 +RMNV=1 +LUNR=1 +DNOA=1 +DNOB=1 +SLAV=1 +WWLF=1 +YDOG=1 +YADOG=1 + +[YRUnits] +YHVR=1 +PCV=1 +SMIN=1 +SMON=1 +YCAB=1 +YTNK=1 +BFRT=1 +TELE=1 +CAOS=1 +DDBX=1 +BCAB=1 +BSUB=1 +SCHP=1 +JEEP=1 +MIND=1 +DISK=1 +UTNK=1 +ROBO=1 +YDUM=1 +SCHD=1 +DOLY=1 +CBLC=1 +FTRK=1 +AMBU=1 +CIVP=1 + +[YRBuildings] +YACNST=1 +YAPOWR=1 +YABRCK=1 +YAWEAP=1 +YAYARD=1 +YADEPT=1 +YATECH=1 +GAFWLL=1 +YAGGUN=1 +YAPSYT=1 +NAINDP=1 +YAGRND=1 +YAGNTC=1 +CASLAB=1 +CATIME=1 +YAPPET=1 +CALOND04=1 +CALOND05=1 +CALOND06=1 +CAMOON01=1 +CATRAN03=1 +CAEAST01=1 +CAEGYP01=1 +CAEGYP02=1 +CAEGYP03=1 +CALA01=1 +CALA02=1 +CALA03=1 +CALA04=1 +CALA05=1 +CALOND01=1 +CALOND02=1 +CALOND03=1 +CAMORR01=1 +CAMORR02=1 +CAMORR03=1 +CASANF01=1 +CASANF02=1 +CASANF03=1 +CASANF04=1 +CASANF05=1 +CASEAT01=1 +NATBNK=1 +GAGATE_A=1 +CASANF09=1 +CASANF10=1 +CASANF11=1 +CASANF12=1 +CASANF13=1 +CASANF14=1 +CASANF06=1 +CASANF07=1 +CASANF08=1 +CASEAT02=1 +YACOMD=1 +YAPPPT=1 +GAROBO=1 +YAREFN=1 +YAROCK=1 +NABNKR=1 +CASANF15=1 +CASANF16=1 +CASANF17=1 +CASANF18=1 +CASIN03E=1 +CASIN03S=1 +CAURB01=1 +CAURB02=1 +CAURB03=1 +CAPOWR=1 +CALA07=1 +CAEGYP06=1 +CALA08=1 +CAEAST02=1 +CABARR01=1 +CABARR02=1 +CAMORR04=1 +CAMORR05=1 +CALA09=1 +CAEGYP04=1 +CAEGYP05=1 +CALA06=1 +CAMORR06=1 +CAMORR07=1 +CAMORR08=1 +CAMORR09=1 +CAMORR10=1 +CATIME01=1 +CATIME02=1 +CALA10=1 +CALA11=1 +CALA12=1 +CALA13=1 +CAPARK04=1 +CAPARK05=1 +CAPARK06=1 +CALA14=1 +CALA15=1 +CABUNK03=1 +CABUNK04=1 +CALUNR01=1 +CALUNR02=1 + +[YRTerrain] +TREE31=1 +TREE32=1 +TREE33=1 +TREE34=1 +TREE35=1 +TREE36=1 + +[YRAircraft] +BPLN=1 +SPYP=1 +CMISL=1 + +[YROverlay] +Begin=243; which number is the first from new YR overlay? + +; things only FinalAlert will ignore +; these are usually all dummies and leftovers from TS +[IgnoreRA2] +0=GAARMORY +1=APACHE +2=DeathDummy +3=WEEDGUY +4=GADUMY +5=NAWAST +6=GARADR +7=CAIRSFGL +8=CALIT01E +9=CALIT01N +10=CALIT01S +11=CALIT01W +12=CALIT03E +13=CALIT03N +14=CALIT03S +15=CALIT03W +16=CALIT02L +17=CALIT02R +18=NAHPAD +19=CAEURO01 +20=CACITY01 +21=CACITY02 +22=CACITY03 +23=CACITY04 +24=CITY06 +25=CITY05 +26=CITY04 +27=CITY03 +28=CITY02 +29=CITY01 +30=CAARMR +31=TREE29 +32=TREE30 +33=CANEWY05 +34=REDLAMP +35=GRENLAMP +36=BLUELAMP +37=YELWLAMP +38=PURPLAMP +39=INORANLAMP +;40=NEGLAMP ; NEGLAMP added again, invisible in game +41=NEGRED +42=TSTLAMP +43=CAPOL01E +44=CAPOL01N +45=CAPOL01S +46=CAPOL01W +47=CASIN01E +48=CASIN01N +49=CASIN01W +50=CASIN01S +51=GAGREEN +52=GALITE +53=CARGOPLANE +; 54=CAHOSP +55=XCOMET +56=CAKRMW +57=CAFNCB +58=CAFNCW +59=CAFNCP +60=CR1 +61=CR2 +62=CR3 +63=CR4 +64=CR5 +65=CR6 +66=BURN01 +67=BURN02 +68=BURN03 +69=BURN04 +70=BURN05 +71=BURN06 +72=BURN07 +73=BURN08 +74=BURN09 +75=BURN10 +76=BURN11 +77=BURN12 +78=BURN13 +79=BURN14 +80=BURN15 +Another one :) =BURN16 +82=CASYDN01 +83=CATIME +84=CALOND02;? +;85=CAMORR01 +;86=CAMORR02 +;87=CAMORR03 +;88=CAEGYP06 +;89=CAMORR04 +;90=CAEGYP04 +;91=CAEGYP05 +;92=CALA06 + +97=DNOB;? +98=GAWRONG +99=CALA02;? +100=CAMOON01 +;101=CAEGYP01 +102=UTNK +103=YDUM +104=WWLF +105=YADOG +106=YDOG +107=SMON +108=CMON +109=YADEPT +110=CALOND06;? +;111=TREE32 + +; Yes means Image= in art ini will be ignored +[IgnoreArtImage] +CAML=yes + +; hacks for shore pieces +; shore id_pos=iswater +; pos: count from left top to right, then next "row" + +; RA2 only needs one fix (for URBAN specifically) +[ShoreTerrainRA2] +12_4=1 +12_5=1 + +; But TS needs all :( +[ShoreTerrainTS] +0_0=0 +0_1=0 +0_2=1 +0_3=1 +1_0=0 +1_1=0 +2_0=0 +2_1=0 +3_0=0 +4_0=0 +4_1=0 +4_3=0 +5_0=0 +5_1=0 +5_2=0 +6_0=0 +7_0=0 +8_0=0 +8_2=0 +9_0=0 +9_2=0 +10_0=0 +10_2=0 +11_0=0 +12_0=0 +12_1=0 +12_3=0 +13_0=0 +13_3=0 +13_4=0 +14_2=0 +15_2=0 +16_2=0 +16_3=0 +17_2=0 +17_3=0 +18_2=0 +18_3=0 +19_1=0 +20_3=0 +20_4=0 +20_5=0 +21_2=0 +21_4=0 +21_5=0 +22_3=0 +23_3=0 +24_1=0 +24_3=0 +25_1=0 +25_3=0 +26_1=0 +26_3=0 +27_1=0 +28_1=0 +28_2=0 +28_5=0 +29_2=0 +29_4=0 +29_5=0 +30_1=0 +31_1=0 +32_0=0 +32_1=0 +32_2=0 +33_0=0 +33_1=0 +33_2=0 +34_0=0 +34_2=0 +34_3=0 +35_0=0 +35_2=0 +35_3=0 +36_1=0 +36_2=0 +36_3=0 +37_1=0 +37_2=0 +37_3=0 +38_0=0 +38_1=0 +38_3=0 +39_0=0 +39_1=0 +39_3=0 + +; tilesets that may be modified using the shore or a similar logic +[SoftTileSets] +ClearTile=1 +RoughTile=1 +ClearToRoughLat=1 +SandTile =1 +ClearToSandLat=1 +GreenTile=1 +ClearToGreenLat=1 +PaveTile=1 +MiscPaveTile =1 +ClearToPaveLat=1 +RoughGround=0; no +WaterSet=1 +ShorePieces=1 + +; corner strings are: cornerleft, cornerright, cornerbottom, cornertop + +[CliffBackData] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataAlt] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataNEWURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffFrontData] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataAlt] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataNEWURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +; EVENTS AND ACTIONS +; param type format: Description,ListType +; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): +; 0-Nothing +; 1-Houses +; 2-Teamtypes +; 3-UnitTypes +; 4-InfantryTypes +; 5-AircraftTypes +; 6-BuildingTypes +; 7-Videos +; 8-tutorial texts +; 9-Triggers +; 10-yes/no +; 11=sounds +; 12=themes +; 13=speeches +; 14=special weapons +; 15=animations +; 16=particles +; 17=waypoints +; 18=crate types * +; 19=speech bubble types * +; 20=Global variables <--- wrong, local variables! +; 21=.CSF strings (RA2 only) * +; 22=Tag * +; 23=Meteors * +; 24=Weapons * +; 25=Light behavior * +; 26=Shower * +; 27=Rules Global variables +; 28=Building INI names +; 29=Techtypes + + +; ParamTypes +; Name, ListType, [Code] +[ParamTypes] +-1=δʹÓÃ,0,1;not listed in FA2 +0=δʹÓÃ,0 +1=δ֪,0 +2=ËùÊô·½,1 +3=¾Ö²¿±äÁ¿,20 +4=ʱ¼ä,0 +5=»ý·Ö,0 +6=ÊýÖµ,0 +7=С¶ÓÀàÐÍ,2 +8=½¨Öþ,6 +9=·ÉÐÐÆ÷,5 +10=²½±ø,4 +11=µ¥Î»,3 +12=µçÓ°,7 +13=Îı¾,8 +14=´¥·¢,9 +15=ÔÊÐí,10 +16=ÉùÒô,11 +17=ÀÖÇú,12 +18=ÓïÒô,13 +19=²½Öè,0 +20=³¬¼¶ÎäÆ÷,14 +21=×ó,0 +22=ÉÏ,0 +23=¿í,0 +24=¸ß,0 +25=¶¯»­,15 +26=Á£×Ó,16 +27=³ÖÐøÊ±¼ä,0 +28=ËÙ¶È,0 +29=VoxelË鯬IDºÅ,29 +30=·¾¶µã,17 +31=ľÏäÀàÐÍ,PT_CrateTypes +32=ÓïÒôÌáʾ¿ò,19 +33=×Ö·û,21 +34=ÐÐΪ,9 +35=È«¾Ö±äÁ¿,27 +36=ÌØ¶¨ÎäÆ÷,14 +37=ÒѼ¤»î,10 +38=´¥·¢±êÇ©,22 +39=¿Æ¼¼ÀàÐÍ,0 +40=À´Ô´,0 +41=ÎäÆ÷,24 +42=·¢¹âÐÐΪ,25 +43=ʼþ,9 +44=ÕóÓê,26 +45=¸¡µãÖµ,0 +46=¿Æ¼¼ÀàÐÍ,29,2 +47=½¨Öþ,28 +48=ÊýÁ¿,0 +49=ÏñËØ¶¯»­,23 +50=ӰƬ,7 +51=À×´ïʼþ,PT_RadarEventTypes + +; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C +; Origianl definitinos are as follows: +; "Money" +; "Unit" +; "HealBase" +; "Cloak" +; "Explosion" +; "Napalm" +; "Squad" +; "Darkness" +; "Reveal" +; "Armor" +; "Speed" +; "Firepower" +; "ICBM" +; "Invulnerability" +; "Veteran" +; "IonStorm" +; "Gas" +; "Tiberium" +; "Pod" +[PT_CrateTypes] +FixedValueCount=19 +0=0 - Ç®Ïä +1=1 - Ëæ»úÔØ¾ßµ¥Î» +2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ +3=3 - ÓÀ¾ÃÒþÐÎ +4=4 - C4µ¯Í·É˺¦ +5=5 - »ðÑæ±¬Õ¨É˺¦ +6=6 - Ëæ»ú²½±øÐ¡¶Ó +7=7 - ȫͼºÚÄ» +8=8 - ÏÔʾȫµØÍ¼ +9=9 - »¤¼×Ç¿»¯ +10=10 - ËÙ¶ÈÌáÉý +11=11 - »ðÁ¦ÌáÉý +12=12 - ºËµ¯³¬Îäµ¥´Î +13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© +14=14 - ¾­ÑéÉýÐÇ +15=15 - Àë×ӷ籩£¨ÎÞЧ£© +16=16 - ¶¾ÆøÁ£×Ó +17=17 - СƬ¿óʯ +18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© + +; Controls for radar events +; The events, in order, are: +; (1) Generic Combat Event, +; (2) Generic Noncombat Event, +; (3) Dropzone Event, +; (4) Base Under Attack Event, +; (5) Harvester Under Attack Event, +; (6) Enemy Object Sensed Event +[PT_RadarEventTypes] +FixedValueCount=6 +0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ +1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ +2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ +3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ +4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ +5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» + +[ScriptParams] +0=ռλ,0 +1=Ä¿±ê,1 +2=·¾¶µã,2 +3=Ìø×ªÖÁÐÐ#,3 +4=·ÖÀëС¶Ó,4 +5=È«¾Ö±äÁ¿,5 +6=½Å±¾,6 +7=С¶Ó,7 +8=ËùÊô·½,8 +9=ÓïÒô,9 +10=ÒôЧ,10 +11=ӰƬ,11 +12=ÒôÀÖ,12 +13=¹ú¼Ò,13 +14=¾Ö²¿±äÁ¿,14 +15=³¯Ïò,15 +16=½¨Öþ,16 +17=¶¯»­,17 +18=¶Ô»°ÆøÅÝ,18 +19=½øÈë״̬,19 +20=ÕûÊý,0 +21=²¼¶û,20 +22=Ä¿±êÁбí,SP_TargetList + +[SP_TargetList] +ParseFromSection=TeamTargetTechnoTypes +ExtraValueType=0 + +[ScriptExtras] +0=SE_TargetScanStrategy + +[SE_TargetScanStrategy] +0=0 - ×îСÍþв +1=1 - ×î´óÍþв +2=2 - ×î½ü¾àÀë +3=3 - ×îÔ¶¾àÀë + +;Index=Name,ParamType,Obsolete,YROnly,Description +[ScriptsRA2] +0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ +1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ +2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ +3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ +4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ +5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© +6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ +7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ +8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ +9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ +10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ +11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ +12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ +13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© +14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© +15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© +16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ +17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© +18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© +19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ +20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© +21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ +22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ +23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ +24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ +25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ +26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ +27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ +28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ +29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ +30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ +31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ +32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ +33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ +34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© +35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ +36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ +37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ +38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ +39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ +40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ +41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ +42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ +43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ +44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© +45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© +46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ +47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ +48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ +49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ +50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© +51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ +52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ +53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ +56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +;YR Only +58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ +59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ +60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ +61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ +62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ +63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ +64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ +;Hares Only +65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ +66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ +67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ +68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ +69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ +70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü +71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï + +[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? +0=5 +1=9 +;2=10 +3=11 + +; events format: +; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] +; negative number for type currently not supported (only Actions do support yet)! +; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. +; NOTE: ID must be the same like # +[EventsRA2] +0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 +1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 +2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 +3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 +4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 +5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 +6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 +7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 +8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 +9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 +10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 +11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 +12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 +13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 +14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 +15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 +16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 +17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 +18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 +19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 +20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 +21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 +22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 +23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 +24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 +25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 +26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 +27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 +28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 +29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 +30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 +31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 +32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 +33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 +34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 +35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 +36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 +37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 +38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 +39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 +40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 +41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 +42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 +43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 +44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 +45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 +46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 +47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 +48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 +49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 +50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 +51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 +52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 +53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 +54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 +55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 +56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 +57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 + +; YR +58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 +59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 + +; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters +60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 +61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 +86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 + + +; action format: +; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] +; if using negative number for type, param will be set to the absolute value of this number +; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. +; NOTE: ID must be the same like # +[ActionsRA2] +0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 +1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 +2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 +3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 +4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 +5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 +6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 +7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 +8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 +9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 +10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 +11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 +12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 +13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 +14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 +15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 +16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 +17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 +18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 +19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 +20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 +21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 +22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 +23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 +24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 +25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 +26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 +27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 +28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 +29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 +30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 +31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 +32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 +33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 +34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 +35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 +36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 +37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 +38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 +39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 +40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 +41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 +42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 +43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 +44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 +45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 +46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 +47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 +48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 +49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 +50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 +51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 +52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 +53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 +54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 +55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 +56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 +57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 +58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 +59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 +60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 +61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 +62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 +63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 +64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 +65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 +66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 +67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 +68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 +69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 +70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 +71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 +72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 +73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 +74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 +75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 +76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 +77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 +78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 +79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 +80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 +81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 +82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 +83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 +84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 +85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 +86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 +87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 +88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 +89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 +90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 +91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 +92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 +93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 +94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 +95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 +96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 +97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 +98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 +99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 +100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 +101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 +102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 +103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 +104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 +105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 +106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 +107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 +108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 +109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 +110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 +111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 +112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 +113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 +114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 +115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 +116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 +117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 +118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 +119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 +120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 +121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 +122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 +123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 +124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 +125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 +126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 +127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 +128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 +129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 + +; YR +130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 +131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 +132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 +133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 +134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 +135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 +136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 +137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 +138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 +139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 +140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 +141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 +142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 +143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 +144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 +145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 +;bellow only added in hares +146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 +147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 +148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 +149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 +150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 +151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 +152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 +153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 +154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 + +[BridgesTS] + +[BridgesRA2] + +[SpecialOverlayTS] + +[SpecialOverlayRA2] + +[IgnoreTerrainRA2] + +[ForceIsoPalettePrefix] + +;===ScriptTemplates=== +;X=UIName, Name, Count, Key 1 ,Value 1 , Key 2 ,Value 2 , ..., Key Count ,Value Count +;EMPTY will be considered as a CONST, with it FA2Copy will ignore the value + +;By prry +[ScriptTemplates] +DefaultName=ĬÈÏ +Counts=5 +1=Á½µã¼äѲÂß,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 +2=Èýµã¼äѲÂß,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +3=Ëĵã¼äѲÂß,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +4=×°ÔØ²¿¶ÓÐ¶ÔØ¹¥»÷,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 +5=×°ÔØÈëÔØ¾ß²¢¹¥»÷,New load script,3,21,EMPTY,14,EMPTY,0,0 + +;===TeamTemplates=== +;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 +;Checkbox order matrix: +; |1 6 11 | +; |2 7 12 16| +; |3 8 13 17| +; |4 9 14 18| +; |5 10 15 19| + +;By Sandman +[TeamTemplates] +DefaultName=ĬÈÏ +Counts=3 +1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 + +; not NOSURFACES: +;[BuildingVoxelTurretsRA2] +;GTGCANX=-1 +;GTGCANY=0;-6 +;NASAMY=0;2 +;NALASRX=0 +;NALASRY=0;-3 +;NAFLAKY=10;10 + +[VehicleVoxelTurretsRA2Disabled] +;DISKX=-10 +;DISKY=-10 +;YTNKY=-30 +SREFX=4 +SREFY=3 + +[IgnoreArtImage] +BFRT=1 +CAML=1 + +[IgnoreSuperAnim1] + + +[IgnoreSuperAnim2] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim3] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim4] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +; fix for building list: +[GTGCAN] +AIBasePlanningSide=0 + +[YACOMD] +AIBasePlanningSide=2 + +[YADEPT] +AIBasePlanningSide=0 + +[NASPYB] +AIBasePlanningSide=2 + +; rename list for objects. ObjectID=StringID +[Rename] + +[MovieList] +Start=66; Anything below will not be listed! + +[StdBrushSize] +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 +WaterSet=2 + +[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 + +; SlopeSetPieces for cliffs have a specific direction. +; used for AutoLevel logic +; CURRENTLY IGNORED +[SlopeSetPiecesDirections] +Count=10 +0=Right_1 +1=Left_1 +2=Top_1 +3=Bottom_1 +4=Right_2 +5=Left_2 +6=Left_2 +7=Bottom_2 +8=Top_2 +9=Top_2 + +[LUNARLimits] +TreeMax=999 +TreeMin=999 + +[URBANLimits] +TreeMax=999 +;TreeMax=27 + +[TEMPERATELimits] +TreeMax=999 +;TreeMax=27 + +[SNOWLimits] +TreeMax=999 +;TreeMax=27 + +[NEWURBANLimits] +TreeMax=999 +;TreeMax=27 + +[DESERTLimits] +TreeMin=30 +TreeMax=999 + +; tileset ini overwritings +; only used by FinalAlert +[IgnoreSetTEMPERATE] +0=77 +1=78 +2=79 + +[IgnoreSetSNOW] +0=8 +1=46 + +[IgnoreSetURBAN] +0=49 +1=50 +2=51 +5=56 +7=30 +8=91 +9=92 +10=93 +11=94 +12=95 +13=96 +14=97 +15=98 +16=99 +17=100 +;3=53; Tunnel +;4=54; Tunnel Side +;6=73; Dirt Tunnel + +[IgnoreSetNEWURBAN] +0=101 + +[IgnoreSetDESERT] +0=19 +1=54 +2=53 +3=56 +4=73 +5=80 + +[IgnoreSetLUNAR] + +[UseSetTEMPERATE] +0=57 + +[UseSetSNOW] +[UseSetURBAN] + +[NewUrbanInfo] +Morphable2=114 +Ramps2=117 +Cliffs2=110 +CliffsWater2=112 + +; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! +; If a ground tile id exceeds this number, FA2 will assume the map is a YR map +[RA2TileMax] +Temperat=838 +Urban=1077 +Snow=798 + +[YRInfantry] +YENGINEER=1 +GGI=1 +INIT=1 +BORIS=1 +BRUTE=1 +VIRUS=1 +CLNT=1 +ARND=1 +STLN=1 +CAML=1 +EINS=1 +MUMY=1 +RMNV=1 +LUNR=1 +DNOA=1 +DNOB=1 +SLAV=1 +WWLF=1 +YDOG=1 +YADOG=1 + +[YRUnits] +YHVR=1 +PCV=1 +SMIN=1 +SMON=1 +YCAB=1 +YTNK=1 +BFRT=1 +TELE=1 +CAOS=1 +DDBX=1 +BCAB=1 +BSUB=1 +SCHP=1 +JEEP=1 +MIND=1 +DISK=1 +UTNK=1 +ROBO=1 +YDUM=1 +SCHD=1 +DOLY=1 +CBLC=1 +FTRK=1 +AMBU=1 +CIVP=1 + +[YRBuildings] +YACNST=1 +YAPOWR=1 +YABRCK=1 +YAWEAP=1 +YAYARD=1 +YADEPT=1 +YATECH=1 +GAFWLL=1 +YAGGUN=1 +YAPSYT=1 +NAINDP=1 +YAGRND=1 +YAGNTC=1 +CASLAB=1 +CATIME=1 +YAPPET=1 +CALOND04=1 +CALOND05=1 +CALOND06=1 +CAMOON01=1 +CATRAN03=1 +CAEAST01=1 +CAEGYP01=1 +CAEGYP02=1 +CAEGYP03=1 +CALA01=1 +CALA02=1 +CALA03=1 +CALA04=1 +CALA05=1 +CALOND01=1 +CALOND02=1 +CALOND03=1 +CAMORR01=1 +CAMORR02=1 +CAMORR03=1 +CASANF01=1 +CASANF02=1 +CASANF03=1 +CASANF04=1 +CASANF05=1 +CASEAT01=1 +NATBNK=1 +GAGATE_A=1 +CASANF09=1 +CASANF10=1 +CASANF11=1 +CASANF12=1 +CASANF13=1 +CASANF14=1 +CASANF06=1 +CASANF07=1 +CASANF08=1 +CASEAT02=1 +YACOMD=1 +YAPPPT=1 +GAROBO=1 +YAREFN=1 +YAROCK=1 +NABNKR=1 +CASANF15=1 +CASANF16=1 +CASANF17=1 +CASANF18=1 +CASIN03E=1 +CASIN03S=1 +CAURB01=1 +CAURB02=1 +CAURB03=1 +CAPOWR=1 +CALA07=1 +CAEGYP06=1 +CALA08=1 +CAEAST02=1 +CABARR01=1 +CABARR02=1 +CAMORR04=1 +CAMORR05=1 +CALA09=1 +CAEGYP04=1 +CAEGYP05=1 +CALA06=1 +CAMORR06=1 +CAMORR07=1 +CAMORR08=1 +CAMORR09=1 +CAMORR10=1 +CATIME01=1 +CATIME02=1 +CALA10=1 +CALA11=1 +CALA12=1 +CALA13=1 +CAPARK04=1 +CAPARK05=1 +CAPARK06=1 +CALA14=1 +CALA15=1 +CABUNK03=1 +CABUNK04=1 +CALUNR01=1 +CALUNR02=1 + +[YRTerrain] +TREE31=1 +TREE32=1 +TREE33=1 +TREE34=1 +TREE35=1 +TREE36=1 + +[YRAircraft] +BPLN=1 +SPYP=1 +CMISL=1 + +[YROverlay] +Begin=243; which number is the first from new YR overlay? + +; things only FinalAlert will ignore +; these are usually all dummies and leftovers from TS +[IgnoreRA2] +0=GAARMORY +1=APACHE +2=DeathDummy +3=WEEDGUY +4=GADUMY +5=NAWAST +6=GARADR +7=CAIRSFGL +8=CALIT01E +9=CALIT01N +10=CALIT01S +11=CALIT01W +12=CALIT03E +13=CALIT03N +14=CALIT03S +15=CALIT03W +16=CALIT02L +17=CALIT02R +18=NAHPAD +19=CAEURO01 +20=CACITY01 +21=CACITY02 +22=CACITY03 +23=CACITY04 +24=CITY06 +25=CITY05 +26=CITY04 +27=CITY03 +28=CITY02 +29=CITY01 +30=CAARMR +31=TREE29 +32=TREE30 +33=CANEWY05 +34=REDLAMP +35=GRENLAMP +36=BLUELAMP +37=YELWLAMP +38=PURPLAMP +39=INORANLAMP +;40=NEGLAMP ; NEGLAMP added again, invisible in game +41=NEGRED +42=TSTLAMP +43=CAPOL01E +44=CAPOL01N +45=CAPOL01S +46=CAPOL01W +47=CASIN01E +48=CASIN01N +49=CASIN01W +50=CASIN01S +51=GAGREEN +52=GALITE +53=CARGOPLANE +; 54=CAHOSP +55=XCOMET +56=CAKRMW +57=CAFNCB +58=CAFNCW +59=CAFNCP +60=CR1 +61=CR2 +62=CR3 +63=CR4 +64=CR5 +65=CR6 +66=BURN01 +67=BURN02 +68=BURN03 +69=BURN04 +70=BURN05 +71=BURN06 +72=BURN07 +73=BURN08 +74=BURN09 +75=BURN10 +76=BURN11 +77=BURN12 +78=BURN13 +79=BURN14 +80=BURN15 +Another one :) =BURN16 +82=CASYDN01 +83=CATIME +84=CALOND02;? +;85=CAMORR01 +;86=CAMORR02 +;87=CAMORR03 +;88=CAEGYP06 +;89=CAMORR04 +;90=CAEGYP04 +;91=CAEGYP05 +;92=CALA06 + +97=DNOB;? +98=GAWRONG +99=CALA02;? +100=CAMOON01 +;101=CAEGYP01 +102=UTNK +103=YDUM +104=WWLF +105=YADOG +106=YDOG +107=SMON +108=CMON +109=YADEPT +110=CALOND06;? +;111=TREE32 + +; Yes means Image= in art ini will be ignored +[IgnoreArtImage] +CAML=yes + +; hacks for shore pieces +; shore id_pos=iswater +; pos: count from left top to right, then next "row" + +; RA2 only needs one fix (for URBAN specifically) +[ShoreTerrainRA2] +12_4=1 +12_5=1 + +; But TS needs all :( +[ShoreTerrainTS] +0_0=0 +0_1=0 +0_2=1 +0_3=1 +1_0=0 +1_1=0 +2_0=0 +2_1=0 +3_0=0 +4_0=0 +4_1=0 +4_3=0 +5_0=0 +5_1=0 +5_2=0 +6_0=0 +7_0=0 +8_0=0 +8_2=0 +9_0=0 +9_2=0 +10_0=0 +10_2=0 +11_0=0 +12_0=0 +12_1=0 +12_3=0 +13_0=0 +13_3=0 +13_4=0 +14_2=0 +15_2=0 +16_2=0 +16_3=0 +17_2=0 +17_3=0 +18_2=0 +18_3=0 +19_1=0 +20_3=0 +20_4=0 +20_5=0 +21_2=0 +21_4=0 +21_5=0 +22_3=0 +23_3=0 +24_1=0 +24_3=0 +25_1=0 +25_3=0 +26_1=0 +26_3=0 +27_1=0 +28_1=0 +28_2=0 +28_5=0 +29_2=0 +29_4=0 +29_5=0 +30_1=0 +31_1=0 +32_0=0 +32_1=0 +32_2=0 +33_0=0 +33_1=0 +33_2=0 +34_0=0 +34_2=0 +34_3=0 +35_0=0 +35_2=0 +35_3=0 +36_1=0 +36_2=0 +36_3=0 +37_1=0 +37_2=0 +37_3=0 +38_0=0 +38_1=0 +38_3=0 +39_0=0 +39_1=0 +39_3=0 + +; tilesets that may be modified using the shore or a similar logic +[SoftTileSets] +ClearTile=1 +RoughTile=1 +ClearToRoughLat=1 +SandTile =1 +ClearToSandLat=1 +GreenTile=1 +ClearToGreenLat=1 +PaveTile=1 +MiscPaveTile =1 +ClearToPaveLat=1 +RoughGround=0; no +WaterSet=1 +ShorePieces=1 + +; corner strings are: cornerleft, cornerright, cornerbottom, cornertop + +[CliffBackData] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataAlt] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataNEWURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffFrontData] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataAlt] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataNEWURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +; EVENTS AND ACTIONS +; param type format: Description,ListType +; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): +; 0-Nothing +; 1-Houses +; 2-Teamtypes +; 3-UnitTypes +; 4-InfantryTypes +; 5-AircraftTypes +; 6-BuildingTypes +; 7-Videos +; 8-tutorial texts +; 9-Triggers +; 10-yes/no +; 11=sounds +; 12=themes +; 13=speeches +; 14=special weapons +; 15=animations +; 16=particles +; 17=waypoints +; 18=crate types * +; 19=speech bubble types * +; 20=Global variables <--- wrong, local variables! +; 21=.CSF strings (RA2 only) * +; 22=Tag * +; 23=Meteors * +; 24=Weapons * +; 25=Light behavior * +; 26=Shower * +; 27=Rules Global variables +; 28=Building INI names +; 29=Techtypes + + +; ParamTypes +; Name, ListType, [Code] +[ParamTypes] +-1=δʹÓÃ,0,1;not listed in FA2 +0=δʹÓÃ,0 +1=δ֪,0 +2=ËùÊô·½,1 +3=¾Ö²¿±äÁ¿,20 +4=ʱ¼ä,0 +5=»ý·Ö,0 +6=ÊýÖµ,0 +7=С¶ÓÀàÐÍ,2 +8=½¨Öþ,6 +9=·ÉÐÐÆ÷,5 +10=²½±ø,4 +11=µ¥Î»,3 +12=µçÓ°,7 +13=Îı¾,8 +14=´¥·¢,9 +15=ÔÊÐí,10 +16=ÉùÒô,11 +17=ÀÖÇú,12 +18=ÓïÒô,13 +19=²½Öè,0 +20=³¬¼¶ÎäÆ÷,14 +21=×ó,0 +22=ÉÏ,0 +23=¿í,0 +24=¸ß,0 +25=¶¯»­,15 +26=Á£×Ó,16 +27=³ÖÐøÊ±¼ä,0 +28=ËÙ¶È,0 +29=VoxelË鯬IDºÅ,29 +30=·¾¶µã,17 +31=ľÏäÀàÐÍ,PT_CrateTypes +32=ÓïÒôÌáʾ¿ò,19 +33=×Ö·û,21 +34=ÐÐΪ,9 +35=È«¾Ö±äÁ¿,27 +36=ÌØ¶¨ÎäÆ÷,14 +37=ÒѼ¤»î,10 +38=´¥·¢±êÇ©,22 +39=¿Æ¼¼ÀàÐÍ,0 +40=À´Ô´,0 +41=ÎäÆ÷,24 +42=·¢¹âÐÐΪ,25 +43=ʼþ,9 +44=ÕóÓê,26 +45=¸¡µãÖµ,0 +46=¿Æ¼¼ÀàÐÍ,29,2 +47=½¨Öþ,28 +48=ÊýÁ¿,0 +49=ÏñËØ¶¯»­,23 +50=ӰƬ,7 +51=À×´ïʼþ,PT_RadarEventTypes + +; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C +; Origianl definitinos are as follows: +; "Money" +; "Unit" +; "HealBase" +; "Cloak" +; "Explosion" +; "Napalm" +; "Squad" +; "Darkness" +; "Reveal" +; "Armor" +; "Speed" +; "Firepower" +; "ICBM" +; "Invulnerability" +; "Veteran" +; "IonStorm" +; "Gas" +; "Tiberium" +; "Pod" +[PT_CrateTypes] +FixedValueCount=19 +0=0 - Ç®Ïä +1=1 - Ëæ»úÔØ¾ßµ¥Î» +2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ +3=3 - ÓÀ¾ÃÒþÐÎ +4=4 - C4µ¯Í·É˺¦ +5=5 - »ðÑæ±¬Õ¨É˺¦ +6=6 - Ëæ»ú²½±øÐ¡¶Ó +7=7 - ȫͼºÚÄ» +8=8 - ÏÔʾȫµØÍ¼ +9=9 - »¤¼×Ç¿»¯ +10=10 - ËÙ¶ÈÌáÉý +11=11 - »ðÁ¦ÌáÉý +12=12 - ºËµ¯³¬Îäµ¥´Î +13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© +14=14 - ¾­ÑéÉýÐÇ +15=15 - Àë×ӷ籩£¨ÎÞЧ£© +16=16 - ¶¾ÆøÁ£×Ó +17=17 - СƬ¿óʯ +18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© + +; Controls for radar events +; The events, in order, are: +; (1) Generic Combat Event, +; (2) Generic Noncombat Event, +; (3) Dropzone Event, +; (4) Base Under Attack Event, +; (5) Harvester Under Attack Event, +; (6) Enemy Object Sensed Event +[PT_RadarEventTypes] +FixedValueCount=6 +0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ +1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ +2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ +3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ +4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ +5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» + +[ScriptParams] +0=ռλ,0 +1=Ä¿±ê,1 +2=·¾¶µã,2 +3=Ìø×ªÖÁÐÐ#,3 +4=·ÖÀëС¶Ó,4 +5=È«¾Ö±äÁ¿,5 +6=½Å±¾,6 +7=С¶Ó,7 +8=ËùÊô·½,8 +9=ÓïÒô,9 +10=ÒôЧ,10 +11=ӰƬ,11 +12=ÒôÀÖ,12 +13=¹ú¼Ò,13 +14=¾Ö²¿±äÁ¿,14 +15=³¯Ïò,15 +16=½¨Öþ,16 +17=¶¯»­,17 +18=¶Ô»°ÆøÅÝ,18 +19=½øÈë״̬,19 +20=ÕûÊý,0 +21=²¼¶û,20 +22=Ä¿±êÁбí,SP_TargetList + +[SP_TargetList] +ParseFromSection=TeamTargetTechnoTypes +ExtraValueType=0 + +[ScriptExtras] +0=SE_TargetScanStrategy + +[SE_TargetScanStrategy] +0=0 - ×îСÍþв +1=1 - ×î´óÍþв +2=2 - ×î½ü¾àÀë +3=3 - ×îÔ¶¾àÀë + +;Index=Name,ParamType,Obsolete,YROnly,Description +[ScriptsRA2] +0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ +1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ +2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ +3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ +4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ +5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© +6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ +7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ +8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ +9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ +10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ +11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ +12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ +13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© +14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© +15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© +16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ +17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© +18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© +19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ +20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© +21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ +22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ +23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ +24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ +25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ +26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ +27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ +28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ +29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ +30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ +31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ +32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ +33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ +34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© +35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ +36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ +37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ +38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ +39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ +40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ +41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ +42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ +43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ +44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© +45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© +46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ +47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ +48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ +49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ +50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© +51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ +52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ +53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ +56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +;YR Only +58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ +59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ +60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ +61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ +62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ +63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ +64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ +;Hares Only +65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ +66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ +67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ +68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ +69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ +70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü +71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï + +[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? +0=5 +1=9 +;2=10 +3=11 + +; events format: +; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] +; negative number for type currently not supported (only Actions do support yet)! +; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. +; NOTE: ID must be the same like # +[EventsRA2] +0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 +1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 +2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 +3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 +4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 +5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 +6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 +7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 +8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 +9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 +10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 +11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 +12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 +13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 +14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 +15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 +16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 +17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 +18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 +19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 +20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 +21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 +22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 +23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 +24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 +25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 +26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 +27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 +28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 +29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 +30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 +31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 +32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 +33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 +34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 +35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 +36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 +37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 +38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 +39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 +40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 +41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 +42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 +43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 +44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 +45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 +46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 +47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 +48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 +49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 +50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 +51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 +52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 +53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 +54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 +55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 +56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 +57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 + +; YR +58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 +59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 + +; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters +60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 +61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 +86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 + + +; action format: +; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] +; if using negative number for type, param will be set to the absolute value of this number +; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. +; NOTE: ID must be the same like # +[ActionsRA2] +0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 +1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 +2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 +3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 +4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 +5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 +6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 +7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 +8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 +9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 +10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 +11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 +12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 +13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 +14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 +15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 +16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 +17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 +18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 +19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 +20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 +21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 +22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 +23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 +24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 +25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 +26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 +27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 +28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 +29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 +30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 +31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 +32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 +33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 +34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 +35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 +36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 +37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 +38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 +39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 +40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 +41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 +42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 +43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 +44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 +45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 +46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 +47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 +48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 +49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 +50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 +51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 +52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 +53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 +54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 +55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 +56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 +57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 +58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 +59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 +60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 +61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 +62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 +63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 +64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 +65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 +66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 +67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 +68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 +69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 +70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 +71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 +72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 +73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 +74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 +75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 +76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 +77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 +78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 +79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 +80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 +81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 +82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 +83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 +84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 +85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 +86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 +87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 +88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 +89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 +90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 +91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 +92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 +93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 +94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 +95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 +96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 +97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 +98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 +99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 +100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 +101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 +102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 +103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 +104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 +105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 +106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 +107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 +108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 +109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 +110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 +111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 +112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 +113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 +114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 +115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 +116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 +117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 +118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 +119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 +120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 +121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 +122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 +123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 +124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 +125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 +126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 +127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 +128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 +129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 + +; YR +130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 +131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 +132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 +133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 +134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 +135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 +136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 +137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 +138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 +139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 +140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 +141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 +142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 +143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 +144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 +145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 +;bellow only added in hares +146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 +147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 +148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 +149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 +150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 +151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 +152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 +153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 +154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 + +[BridgesTS] + +[BridgesRA2] + +[SpecialOverlayTS] + +[SpecialOverlayRA2] + +[IgnoreTerrainRA2] + +[ScriptTemplates] +DefaultName=ĬÈÏ +Counts=5 +1=Á½µã¼äѲÂß,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 +2=Èýµã¼äѲÂß,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +3=Ëĵã¼äѲÂß,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +4=×°ÔØ²¿¶ÓÐ¶ÔØ¹¥»÷,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 +5=×°ÔØÈëÔØ¾ß²¢¹¥»÷,New load script,3,21,EMPTY,14,EMPTY,0,0 + +;===TeamTemplates=== +;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 +;Checkbox order matrix: +; |1 6 11 | +; |2 7 12 16| +; |3 8 13 17| +; |4 9 14 18| +; |5 10 15 19| + +;By Sandman +[TeamTemplates] +DefaultName=ĬÈÏ +Counts=3 +1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 + +; not NOSURFACES: +;[BuildingVoxelTurretsRA2] +;GTGCANX=-1 +;GTGCANY=0;-6 +;NASAMY=0;2 +;NALASRX=0 +;NALASRY=0;-3 +;NAFLAKY=10;10 + +[VehicleVoxelTurretsRA2Disabled] +;DISKX=-10 +;DISKY=-10 +;YTNKY=-30 +SREFX=4 +SREFY=3 + +[IgnoreArtImage] +BFRT=1 +CAML=1 + +[IgnoreSuperAnim1] + + +[IgnoreSuperAnim2] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim3] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim4] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +; fix for building list: +[GTGCAN] +AIBasePlanningSide=0 + +[YACOMD] +AIBasePlanningSide=2 + +[YADEPT] +AIBasePlanningSide=0 + +[NASPYB] +AIBasePlanningSide=2 + +; rename list for objects. ObjectID=StringID +[Rename] + +[MovieList] +Start=66; Anything below will not be listed! + +[StdBrushSize] +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 +WaterSet=2 + +[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 + +; SlopeSetPieces for cliffs have a specific direction. +; used for AutoLevel logic +; CURRENTLY IGNORED +[SlopeSetPiecesDirections] +Count=10 +0=Right_1 +1=Left_1 +2=Top_1 +3=Bottom_1 +4=Right_2 +5=Left_2 +6=Left_2 +7=Bottom_2 +8=Top_2 +9=Top_2 + +[LUNARLimits] +TreeMax=999 +TreeMin=999 + +[URBANLimits] +TreeMax=999 +;TreeMax=27 + +[TEMPERATELimits] +TreeMax=999 +;TreeMax=27 + +[SNOWLimits] +TreeMax=999 +;TreeMax=27 + +[NEWURBANLimits] +TreeMax=999 +;TreeMax=27 + +[DESERTLimits] +TreeMin=30 +TreeMax=999 + +; tileset ini overwritings +; only used by FinalAlert +[IgnoreSetTEMPERATE] +0=77 +1=78 +2=79 + +[IgnoreSetSNOW] +0=8 +1=46 + +[IgnoreSetURBAN] +0=49 +1=50 +2=51 +5=56 +7=30 +8=91 +9=92 +10=93 +11=94 +12=95 +13=96 +14=97 +15=98 +16=99 +17=100 +;3=53; Tunnel +;4=54; Tunnel Side +;6=73; Dirt Tunnel + +[IgnoreSetNEWURBAN] +0=101 + +[IgnoreSetDESERT] +0=19 +1=54 +2=53 +3=56 +4=73 +5=80 + +[IgnoreSetLUNAR] + +[UseSetTEMPERATE] +0=57 + +[UseSetSNOW] +[UseSetURBAN] + +[NewUrbanInfo] +Morphable2=114 +Ramps2=117 +Cliffs2=110 +CliffsWater2=112 + +; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! +; If a ground tile id exceeds this number, FA2 will assume the map is a YR map +[RA2TileMax] +Temperat=838 +Urban=1077 +Snow=798 + +[YRInfantry] +YENGINEER=1 +GGI=1 +INIT=1 +BORIS=1 +BRUTE=1 +VIRUS=1 +CLNT=1 +ARND=1 +STLN=1 +CAML=1 +EINS=1 +MUMY=1 +RMNV=1 +LUNR=1 +DNOA=1 +DNOB=1 +SLAV=1 +WWLF=1 +YDOG=1 +YADOG=1 + +[YRUnits] +YHVR=1 +PCV=1 +SMIN=1 +SMON=1 +YCAB=1 +YTNK=1 +BFRT=1 +TELE=1 +CAOS=1 +DDBX=1 +BCAB=1 +BSUB=1 +SCHP=1 +JEEP=1 +MIND=1 +DISK=1 +UTNK=1 +ROBO=1 +YDUM=1 +SCHD=1 +DOLY=1 +CBLC=1 +FTRK=1 +AMBU=1 +CIVP=1 + +[YRBuildings] +YACNST=1 +YAPOWR=1 +YABRCK=1 +YAWEAP=1 +YAYARD=1 +YADEPT=1 +YATECH=1 +GAFWLL=1 +YAGGUN=1 +YAPSYT=1 +NAINDP=1 +YAGRND=1 +YAGNTC=1 +CASLAB=1 +CATIME=1 +YAPPET=1 +CALOND04=1 +CALOND05=1 +CALOND06=1 +CAMOON01=1 +CATRAN03=1 +CAEAST01=1 +CAEGYP01=1 +CAEGYP02=1 +CAEGYP03=1 +CALA01=1 +CALA02=1 +CALA03=1 +CALA04=1 +CALA05=1 +CALOND01=1 +CALOND02=1 +CALOND03=1 +CAMORR01=1 +CAMORR02=1 +CAMORR03=1 +CASANF01=1 +CASANF02=1 +CASANF03=1 +CASANF04=1 +CASANF05=1 +CASEAT01=1 +NATBNK=1 +GAGATE_A=1 +CASANF09=1 +CASANF10=1 +CASANF11=1 +CASANF12=1 +CASANF13=1 +CASANF14=1 +CASANF06=1 +CASANF07=1 +CASANF08=1 +CASEAT02=1 +YACOMD=1 +YAPPPT=1 +GAROBO=1 +YAREFN=1 +YAROCK=1 +NABNKR=1 +CASANF15=1 +CASANF16=1 +CASANF17=1 +CASANF18=1 +CASIN03E=1 +CASIN03S=1 +CAURB01=1 +CAURB02=1 +CAURB03=1 +CAPOWR=1 +CALA07=1 +CAEGYP06=1 +CALA08=1 +CAEAST02=1 +CABARR01=1 +CABARR02=1 +CAMORR04=1 +CAMORR05=1 +CALA09=1 +CAEGYP04=1 +CAEGYP05=1 +CALA06=1 +CAMORR06=1 +CAMORR07=1 +CAMORR08=1 +CAMORR09=1 +CAMORR10=1 +CATIME01=1 +CATIME02=1 +CALA10=1 +CALA11=1 +CALA12=1 +CALA13=1 +CAPARK04=1 +CAPARK05=1 +CAPARK06=1 +CALA14=1 +CALA15=1 +CABUNK03=1 +CABUNK04=1 +CALUNR01=1 +CALUNR02=1 + +[YRTerrain] +TREE31=1 +TREE32=1 +TREE33=1 +TREE34=1 +TREE35=1 +TREE36=1 + +[YRAircraft] +BPLN=1 +SPYP=1 +CMISL=1 + +[YROverlay] +Begin=243; which number is the first from new YR overlay? + +; things only FinalAlert will ignore +; these are usually all dummies and leftovers from TS +[IgnoreRA2] +0=GAARMORY +1=APACHE +2=DeathDummy +3=WEEDGUY +4=GADUMY +5=NAWAST +6=GARADR +7=CAIRSFGL +8=CALIT01E +9=CALIT01N +10=CALIT01S +11=CALIT01W +12=CALIT03E +13=CALIT03N +14=CALIT03S +15=CALIT03W +16=CALIT02L +17=CALIT02R +18=NAHPAD +19=CAEURO01 +20=CACITY01 +21=CACITY02 +22=CACITY03 +23=CACITY04 +24=CITY06 +25=CITY05 +26=CITY04 +27=CITY03 +28=CITY02 +29=CITY01 +30=CAARMR +31=TREE29 +32=TREE30 +33=CANEWY05 +34=REDLAMP +35=GRENLAMP +36=BLUELAMP +37=YELWLAMP +38=PURPLAMP +39=INORANLAMP +;40=NEGLAMP ; NEGLAMP added again, invisible in game +41=NEGRED +42=TSTLAMP +43=CAPOL01E +44=CAPOL01N +45=CAPOL01S +46=CAPOL01W +47=CASIN01E +48=CASIN01N +49=CASIN01W +50=CASIN01S +51=GAGREEN +52=GALITE +53=CARGOPLANE +; 54=CAHOSP +55=XCOMET +56=CAKRMW +57=CAFNCB +58=CAFNCW +59=CAFNCP +60=CR1 +61=CR2 +62=CR3 +63=CR4 +64=CR5 +65=CR6 +66=BURN01 +67=BURN02 +68=BURN03 +69=BURN04 +70=BURN05 +71=BURN06 +72=BURN07 +73=BURN08 +74=BURN09 +75=BURN10 +76=BURN11 +77=BURN12 +78=BURN13 +79=BURN14 +80=BURN15 +Another one :) =BURN16 +82=CASYDN01 +83=CATIME +84=CALOND02;? +;85=CAMORR01 +;86=CAMORR02 +;87=CAMORR03 +;88=CAEGYP06 +;89=CAMORR04 +;90=CAEGYP04 +;91=CAEGYP05 +;92=CALA06 + +97=DNOB;? +98=GAWRONG +99=CALA02;? +100=CAMOON01 +;101=CAEGYP01 +102=UTNK +103=YDUM +104=WWLF +105=YADOG +106=YDOG +107=SMON +108=CMON +109=YADEPT +110=CALOND06;? +;111=TREE32 + +; Yes means Image= in art ini will be ignored +[IgnoreArtImage] +CAML=yes + +; hacks for shore pieces +; shore id_pos=iswater +; pos: count from left top to right, then next "row" + +; RA2 only needs one fix (for URBAN specifically) +[ShoreTerrainRA2] +12_4=1 +12_5=1 + +; But TS needs all :( +[ShoreTerrainTS] +0_0=0 +0_1=0 +0_2=1 +0_3=1 +1_0=0 +1_1=0 +2_0=0 +2_1=0 +3_0=0 +4_0=0 +4_1=0 +4_3=0 +5_0=0 +5_1=0 +5_2=0 +6_0=0 +7_0=0 +8_0=0 +8_2=0 +9_0=0 +9_2=0 +10_0=0 +10_2=0 +11_0=0 +12_0=0 +12_1=0 +12_3=0 +13_0=0 +13_3=0 +13_4=0 +14_2=0 +15_2=0 +16_2=0 +16_3=0 +17_2=0 +17_3=0 +18_2=0 +18_3=0 +19_1=0 +20_3=0 +20_4=0 +20_5=0 +21_2=0 +21_4=0 +21_5=0 +22_3=0 +23_3=0 +24_1=0 +24_3=0 +25_1=0 +25_3=0 +26_1=0 +26_3=0 +27_1=0 +28_1=0 +28_2=0 +28_5=0 +29_2=0 +29_4=0 +29_5=0 +30_1=0 +31_1=0 +32_0=0 +32_1=0 +32_2=0 +33_0=0 +33_1=0 +33_2=0 +34_0=0 +34_2=0 +34_3=0 +35_0=0 +35_2=0 +35_3=0 +36_1=0 +36_2=0 +36_3=0 +37_1=0 +37_2=0 +37_3=0 +38_0=0 +38_1=0 +38_3=0 +39_0=0 +39_1=0 +39_3=0 + +; tilesets that may be modified using the shore or a similar logic +[SoftTileSets] +ClearTile=1 +RoughTile=1 +ClearToRoughLat=1 +SandTile =1 +ClearToSandLat=1 +GreenTile=1 +ClearToGreenLat=1 +PaveTile=1 +MiscPaveTile =1 +ClearToPaveLat=1 +RoughGround=0; no +WaterSet=1 +ShorePieces=1 + +; corner strings are: cornerleft, cornerright, cornerbottom, cornertop + +[CliffBackData] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataAlt] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataNEWURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffFrontData] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataAlt] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataNEWURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +; EVENTS AND ACTIONS +; param type format: Description,ListType +; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): +; 0-Nothing +; 1-Houses +; 2-Teamtypes +; 3-UnitTypes +; 4-InfantryTypes +; 5-AircraftTypes +; 6-BuildingTypes +; 7-Videos +; 8-tutorial texts +; 9-Triggers +; 10-yes/no +; 11=sounds +; 12=themes +; 13=speeches +; 14=special weapons +; 15=animations +; 16=particles +; 17=waypoints +; 18=crate types * +; 19=speech bubble types * +; 20=Global variables <--- wrong, local variables! +; 21=.CSF strings (RA2 only) * +; 22=Tag * +; 23=Meteors * +; 24=Weapons * +; 25=Light behavior * +; 26=Shower * +; 27=Rules Global variables +; 28=Building INI names +; 29=Techtypes + + +; ParamTypes +; Name, ListType, [Code] +[ParamTypes] +-1=δʹÓÃ,0,1;not listed in FA2 +0=δʹÓÃ,0 +1=δ֪,0 +2=ËùÊô·½,1 +3=¾Ö²¿±äÁ¿,20 +4=ʱ¼ä,0 +5=»ý·Ö,0 +6=ÊýÖµ,0 +7=С¶ÓÀàÐÍ,2 +8=½¨Öþ,6 +9=·ÉÐÐÆ÷,5 +10=²½±ø,4 +11=µ¥Î»,3 +12=µçÓ°,7 +13=Îı¾,8 +14=´¥·¢,9 +15=ÔÊÐí,10 +16=ÉùÒô,11 +17=ÀÖÇú,12 +18=ÓïÒô,13 +19=²½Öè,0 +20=³¬¼¶ÎäÆ÷,14 +21=×ó,0 +22=ÉÏ,0 +23=¿í,0 +24=¸ß,0 +25=¶¯»­,15 +26=Á£×Ó,16 +27=³ÖÐøÊ±¼ä,0 +28=ËÙ¶È,0 +29=VoxelË鯬IDºÅ,29 +30=·¾¶µã,17 +31=ľÏäÀàÐÍ,PT_CrateTypes +32=ÓïÒôÌáʾ¿ò,19 +33=×Ö·û,21 +34=ÐÐΪ,9 +35=È«¾Ö±äÁ¿,27 +36=ÌØ¶¨ÎäÆ÷,14 +37=ÒѼ¤»î,10 +38=´¥·¢±êÇ©,22 +39=¿Æ¼¼ÀàÐÍ,0 +40=À´Ô´,0 +41=ÎäÆ÷,24 +42=·¢¹âÐÐΪ,25 +43=ʼþ,9 +44=ÕóÓê,26 +45=¸¡µãÖµ,0 +46=¿Æ¼¼ÀàÐÍ,29,2 +47=½¨Öþ,28 +48=ÊýÁ¿,0 +49=ÏñËØ¶¯»­,23 +50=ӰƬ,7 +51=À×´ïʼþ,PT_RadarEventTypes + +; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C +; Origianl definitinos are as follows: +; "Money" +; "Unit" +; "HealBase" +; "Cloak" +; "Explosion" +; "Napalm" +; "Squad" +; "Darkness" +; "Reveal" +; "Armor" +; "Speed" +; "Firepower" +; "ICBM" +; "Invulnerability" +; "Veteran" +; "IonStorm" +; "Gas" +; "Tiberium" +; "Pod" +[PT_CrateTypes] +FixedValueCount=19 +0=0 - Ç®Ïä +1=1 - Ëæ»úÔØ¾ßµ¥Î» +2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ +3=3 - ÓÀ¾ÃÒþÐÎ +4=4 - C4µ¯Í·É˺¦ +5=5 - »ðÑæ±¬Õ¨É˺¦ +6=6 - Ëæ»ú²½±øÐ¡¶Ó +7=7 - ȫͼºÚÄ» +8=8 - ÏÔʾȫµØÍ¼ +9=9 - »¤¼×Ç¿»¯ +10=10 - ËÙ¶ÈÌáÉý +11=11 - »ðÁ¦ÌáÉý +12=12 - ºËµ¯³¬Îäµ¥´Î +13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© +14=14 - ¾­ÑéÉýÐÇ +15=15 - Àë×ӷ籩£¨ÎÞЧ£© +16=16 - ¶¾ÆøÁ£×Ó +17=17 - СƬ¿óʯ +18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© + +; Controls for radar events +; The events, in order, are: +; (1) Generic Combat Event, +; (2) Generic Noncombat Event, +; (3) Dropzone Event, +; (4) Base Under Attack Event, +; (5) Harvester Under Attack Event, +; (6) Enemy Object Sensed Event +[PT_RadarEventTypes] +FixedValueCount=6 +0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ +1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ +2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ +3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ +4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ +5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» + +[ScriptParams] +0=ռλ,0 +1=Ä¿±ê,1 +2=·¾¶µã,2 +3=Ìø×ªÖÁÐÐ#,3 +4=·ÖÀëС¶Ó,4 +5=È«¾Ö±äÁ¿,5 +6=½Å±¾,6 +7=С¶Ó,7 +8=ËùÊô·½,8 +9=ÓïÒô,9 +10=ÒôЧ,10 +11=ӰƬ,11 +12=ÒôÀÖ,12 +13=¹ú¼Ò,13 +14=¾Ö²¿±äÁ¿,14 +15=³¯Ïò,15 +16=½¨Öþ,16 +17=¶¯»­,17 +18=¶Ô»°ÆøÅÝ,18 +19=½øÈë״̬,19 +20=ÕûÊý,0 +21=²¼¶û,20 +22=Ä¿±êÁбí,SP_TargetList + +[SP_TargetList] +ParseFromSection=TeamTargetTechnoTypes +ExtraValueType=0 + +[ScriptExtras] +0=SE_TargetScanStrategy + +[SE_TargetScanStrategy] +0=0 - ×îСÍþв +1=1 - ×î´óÍþв +2=2 - ×î½ü¾àÀë +3=3 - ×îÔ¶¾àÀë + +;Index=Name,ParamType,Obsolete,YROnly,Description +[ScriptsRA2] +0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ +1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ +2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ +3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ +4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ +5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© +6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ +7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ +8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ +9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ +10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ +11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ +12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ +13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© +14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© +15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© +16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ +17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© +18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© +19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ +20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© +21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ +22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ +23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ +24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ +25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ +26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ +27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ +28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ +29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ +30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ +31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ +32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ +33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ +34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© +35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ +36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ +37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ +38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ +39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ +40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ +41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ +42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ +43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ +44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© +45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© +46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ +47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ +48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ +49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ +50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© +51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ +52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ +53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ +56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +;YR Only +58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ +59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ +60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ +61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ +62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ +63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ +64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ +;Hares Only +65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ +66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ +67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ +68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ +69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ +70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü +71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï + +[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? +0=5 +1=9 +;2=10 +3=11 + +; events format: +; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] +; negative number for type currently not supported (only Actions do support yet)! +; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. +; NOTE: ID must be the same like # +[EventsRA2] +0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 +1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 +2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 +3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 +4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 +5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 +6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 +7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 +8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 +9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 +10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 +11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 +12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 +13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 +14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 +15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 +16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 +17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 +18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 +19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 +20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 +21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 +22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 +23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 +24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 +25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 +26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 +27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 +28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 +29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 +30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 +31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 +32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 +33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 +34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 +35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 +36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 +37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 +38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 +39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 +40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 +41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 +42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 +43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 +44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 +45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 +46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 +47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 +48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 +49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 +50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 +51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 +52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 +53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 +54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 +55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 +56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 +57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 + +; YR +58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 +59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 + +; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters +60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 +61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 +86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 + + +; action format: +; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] +; if using negative number for type, param will be set to the absolute value of this number +; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. +; NOTE: ID must be the same like # +[ActionsRA2] +0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 +1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 +2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 +3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 +4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 +5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 +6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 +7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 +8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 +9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 +10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 +11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 +12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 +13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 +14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 +15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 +16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 +17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 +18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 +19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 +20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 +21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 +22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 +23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 +24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 +25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 +26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 +27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 +28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 +29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 +30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 +31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 +32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 +33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 +34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 +35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 +36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 +37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 +38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 +39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 +40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 +41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 +42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 +43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 +44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 +45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 +46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 +47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 +48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 +49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 +50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 +51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 +52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 +53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 +54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 +55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 +56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 +57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 +58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 +59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 +60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 +61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 +62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 +63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 +64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 +65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 +66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 +67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 +68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 +69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 +70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 +71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 +72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 +73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 +74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 +75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 +76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 +77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 +78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 +79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 +80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 +81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 +82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 +83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 +84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 +85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 +86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 +87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 +88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 +89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 +90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 +91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 +92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 +93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 +94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 +95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 +96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 +97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 +98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 +99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 +100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 +101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 +102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 +103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 +104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 +105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 +106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 +107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 +108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 +109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 +110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 +111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 +112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 +113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 +114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 +115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 +116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 +117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 +118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 +119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 +120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 +121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 +122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 +123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 +124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 +125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 +126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 +127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 +128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 +129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 + +; YR +130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 +131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 +132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 +133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 +134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 +135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 +136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 +137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 +138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 +139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 +140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 +141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 +142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 +143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 +144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 +145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 +;bellow only added in hares +146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 +147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 +148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 +149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 +150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 +151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 +152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 +153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 +154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 + +[BridgesTS] + +[BridgesRA2] + +[SpecialOverlayTS] + +[SpecialOverlayRA2] + +[IgnoreTerrainRA2] + +[TeamTemplates] +DefaultName=ĬÈÏ +Counts=3 +1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 + +; not NOSURFACES: +;[BuildingVoxelTurretsRA2] +;GTGCANX=-1 +;GTGCANY=0;-6 +;NASAMY=0;2 +;NALASRX=0 +;NALASRY=0;-3 +;NAFLAKY=10;10 + +[VehicleVoxelTurretsRA2Disabled] +;DISKX=-10 +;DISKY=-10 +;YTNKY=-30 +SREFX=4 +SREFY=3 + +[IgnoreArtImage] +BFRT=1 +CAML=1 + +[IgnoreSuperAnim1] + + +[IgnoreSuperAnim2] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim3] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim4] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +; fix for building list: +[GTGCAN] +AIBasePlanningSide=0 + +[YACOMD] +AIBasePlanningSide=2 + +[YADEPT] +AIBasePlanningSide=0 + +[NASPYB] +AIBasePlanningSide=2 + +; rename list for objects. ObjectID=StringID +[Rename] + +[MovieList] +Start=66; Anything below will not be listed! + +[StdBrushSize] +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 +WaterSet=2 + +[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 + +; SlopeSetPieces for cliffs have a specific direction. +; used for AutoLevel logic +; CURRENTLY IGNORED +[SlopeSetPiecesDirections] +Count=10 +0=Right_1 +1=Left_1 +2=Top_1 +3=Bottom_1 +4=Right_2 +5=Left_2 +6=Left_2 +7=Bottom_2 +8=Top_2 +9=Top_2 + +[LUNARLimits] +TreeMax=999 +TreeMin=999 + +[URBANLimits] +TreeMax=999 +;TreeMax=27 + +[TEMPERATELimits] +TreeMax=999 +;TreeMax=27 + +[SNOWLimits] +TreeMax=999 +;TreeMax=27 + +[NEWURBANLimits] +TreeMax=999 +;TreeMax=27 + +[DESERTLimits] +TreeMin=30 +TreeMax=999 + +; tileset ini overwritings +; only used by FinalAlert +[IgnoreSetTEMPERATE] +0=77 +1=78 +2=79 + +[IgnoreSetSNOW] +0=8 +1=46 + +[IgnoreSetURBAN] +0=49 +1=50 +2=51 +5=56 +7=30 +8=91 +9=92 +10=93 +11=94 +12=95 +13=96 +14=97 +15=98 +16=99 +17=100 +;3=53; Tunnel +;4=54; Tunnel Side +;6=73; Dirt Tunnel + +[IgnoreSetNEWURBAN] +0=101 + +[IgnoreSetDESERT] +0=19 +1=54 +2=53 +3=56 +4=73 +5=80 + +[IgnoreSetLUNAR] + +[UseSetTEMPERATE] +0=57 + +[UseSetSNOW] +[UseSetURBAN] + +[NewUrbanInfo] +Morphable2=114 +Ramps2=117 +Cliffs2=110 +CliffsWater2=112 + +; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! +; If a ground tile id exceeds this number, FA2 will assume the map is a YR map +[RA2TileMax] +Temperat=838 +Urban=1077 +Snow=798 + +[YRInfantry] +YENGINEER=1 +GGI=1 +INIT=1 +BORIS=1 +BRUTE=1 +VIRUS=1 +CLNT=1 +ARND=1 +STLN=1 +CAML=1 +EINS=1 +MUMY=1 +RMNV=1 +LUNR=1 +DNOA=1 +DNOB=1 +SLAV=1 +WWLF=1 +YDOG=1 +YADOG=1 + +[YRUnits] +YHVR=1 +PCV=1 +SMIN=1 +SMON=1 +YCAB=1 +YTNK=1 +BFRT=1 +TELE=1 +CAOS=1 +DDBX=1 +BCAB=1 +BSUB=1 +SCHP=1 +JEEP=1 +MIND=1 +DISK=1 +UTNK=1 +ROBO=1 +YDUM=1 +SCHD=1 +DOLY=1 +CBLC=1 +FTRK=1 +AMBU=1 +CIVP=1 + +[YRBuildings] +YACNST=1 +YAPOWR=1 +YABRCK=1 +YAWEAP=1 +YAYARD=1 +YADEPT=1 +YATECH=1 +GAFWLL=1 +YAGGUN=1 +YAPSYT=1 +NAINDP=1 +YAGRND=1 +YAGNTC=1 +CASLAB=1 +CATIME=1 +YAPPET=1 +CALOND04=1 +CALOND05=1 +CALOND06=1 +CAMOON01=1 +CATRAN03=1 +CAEAST01=1 +CAEGYP01=1 +CAEGYP02=1 +CAEGYP03=1 +CALA01=1 +CALA02=1 +CALA03=1 +CALA04=1 +CALA05=1 +CALOND01=1 +CALOND02=1 +CALOND03=1 +CAMORR01=1 +CAMORR02=1 +CAMORR03=1 +CASANF01=1 +CASANF02=1 +CASANF03=1 +CASANF04=1 +CASANF05=1 +CASEAT01=1 +NATBNK=1 +GAGATE_A=1 +CASANF09=1 +CASANF10=1 +CASANF11=1 +CASANF12=1 +CASANF13=1 +CASANF14=1 +CASANF06=1 +CASANF07=1 +CASANF08=1 +CASEAT02=1 +YACOMD=1 +YAPPPT=1 +GAROBO=1 +YAREFN=1 +YAROCK=1 +NABNKR=1 +CASANF15=1 +CASANF16=1 +CASANF17=1 +CASANF18=1 +CASIN03E=1 +CASIN03S=1 +CAURB01=1 +CAURB02=1 +CAURB03=1 +CAPOWR=1 +CALA07=1 +CAEGYP06=1 +CALA08=1 +CAEAST02=1 +CABARR01=1 +CABARR02=1 +CAMORR04=1 +CAMORR05=1 +CALA09=1 +CAEGYP04=1 +CAEGYP05=1 +CALA06=1 +CAMORR06=1 +CAMORR07=1 +CAMORR08=1 +CAMORR09=1 +CAMORR10=1 +CATIME01=1 +CATIME02=1 +CALA10=1 +CALA11=1 +CALA12=1 +CALA13=1 +CAPARK04=1 +CAPARK05=1 +CAPARK06=1 +CALA14=1 +CALA15=1 +CABUNK03=1 +CABUNK04=1 +CALUNR01=1 +CALUNR02=1 + +[YRTerrain] +TREE31=1 +TREE32=1 +TREE33=1 +TREE34=1 +TREE35=1 +TREE36=1 + +[YRAircraft] +BPLN=1 +SPYP=1 +CMISL=1 + +[YROverlay] +Begin=243; which number is the first from new YR overlay? + +; things only FinalAlert will ignore +; these are usually all dummies and leftovers from TS +[IgnoreRA2] +0=GAARMORY +1=APACHE +2=DeathDummy +3=WEEDGUY +4=GADUMY +5=NAWAST +6=GARADR +7=CAIRSFGL +8=CALIT01E +9=CALIT01N +10=CALIT01S +11=CALIT01W +12=CALIT03E +13=CALIT03N +14=CALIT03S +15=CALIT03W +16=CALIT02L +17=CALIT02R +18=NAHPAD +19=CAEURO01 +20=CACITY01 +21=CACITY02 +22=CACITY03 +23=CACITY04 +24=CITY06 +25=CITY05 +26=CITY04 +27=CITY03 +28=CITY02 +29=CITY01 +30=CAARMR +31=TREE29 +32=TREE30 +33=CANEWY05 +34=REDLAMP +35=GRENLAMP +36=BLUELAMP +37=YELWLAMP +38=PURPLAMP +39=INORANLAMP +;40=NEGLAMP ; NEGLAMP added again, invisible in game +41=NEGRED +42=TSTLAMP +43=CAPOL01E +44=CAPOL01N +45=CAPOL01S +46=CAPOL01W +47=CASIN01E +48=CASIN01N +49=CASIN01W +50=CASIN01S +51=GAGREEN +52=GALITE +53=CARGOPLANE +; 54=CAHOSP +55=XCOMET +56=CAKRMW +57=CAFNCB +58=CAFNCW +59=CAFNCP +60=CR1 +61=CR2 +62=CR3 +63=CR4 +64=CR5 +65=CR6 +66=BURN01 +67=BURN02 +68=BURN03 +69=BURN04 +70=BURN05 +71=BURN06 +72=BURN07 +73=BURN08 +74=BURN09 +75=BURN10 +76=BURN11 +77=BURN12 +78=BURN13 +79=BURN14 +80=BURN15 +Another one :) =BURN16 +82=CASYDN01 +83=CATIME +84=CALOND02;? +;85=CAMORR01 +;86=CAMORR02 +;87=CAMORR03 +;88=CAEGYP06 +;89=CAMORR04 +;90=CAEGYP04 +;91=CAEGYP05 +;92=CALA06 + +97=DNOB;? +98=GAWRONG +99=CALA02;? +100=CAMOON01 +;101=CAEGYP01 +102=UTNK +103=YDUM +104=WWLF +105=YADOG +106=YDOG +107=SMON +108=CMON +109=YADEPT +110=CALOND06;? +;111=TREE32 + +; Yes means Image= in art ini will be ignored +[IgnoreArtImage] +CAML=yes + +; hacks for shore pieces +; shore id_pos=iswater +; pos: count from left top to right, then next "row" + +; RA2 only needs one fix (for URBAN specifically) +[ShoreTerrainRA2] +12_4=1 +12_5=1 + +; But TS needs all :( +[ShoreTerrainTS] +0_0=0 +0_1=0 +0_2=1 +0_3=1 +1_0=0 +1_1=0 +2_0=0 +2_1=0 +3_0=0 +4_0=0 +4_1=0 +4_3=0 +5_0=0 +5_1=0 +5_2=0 +6_0=0 +7_0=0 +8_0=0 +8_2=0 +9_0=0 +9_2=0 +10_0=0 +10_2=0 +11_0=0 +12_0=0 +12_1=0 +12_3=0 +13_0=0 +13_3=0 +13_4=0 +14_2=0 +15_2=0 +16_2=0 +16_3=0 +17_2=0 +17_3=0 +18_2=0 +18_3=0 +19_1=0 +20_3=0 +20_4=0 +20_5=0 +21_2=0 +21_4=0 +21_5=0 +22_3=0 +23_3=0 +24_1=0 +24_3=0 +25_1=0 +25_3=0 +26_1=0 +26_3=0 +27_1=0 +28_1=0 +28_2=0 +28_5=0 +29_2=0 +29_4=0 +29_5=0 +30_1=0 +31_1=0 +32_0=0 +32_1=0 +32_2=0 +33_0=0 +33_1=0 +33_2=0 +34_0=0 +34_2=0 +34_3=0 +35_0=0 +35_2=0 +35_3=0 +36_1=0 +36_2=0 +36_3=0 +37_1=0 +37_2=0 +37_3=0 +38_0=0 +38_1=0 +38_3=0 +39_0=0 +39_1=0 +39_3=0 + +; tilesets that may be modified using the shore or a similar logic +[SoftTileSets] +ClearTile=1 +RoughTile=1 +ClearToRoughLat=1 +SandTile =1 +ClearToSandLat=1 +GreenTile=1 +ClearToGreenLat=1 +PaveTile=1 +MiscPaveTile =1 +ClearToPaveLat=1 +RoughGround=0; no +WaterSet=1 +ShorePieces=1 + +; corner strings are: cornerleft, cornerright, cornerbottom, cornertop + +[CliffBackData] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataAlt] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataNEWURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffFrontData] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataAlt] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataNEWURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +; EVENTS AND ACTIONS +; param type format: Description,ListType +; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): +; 0-Nothing +; 1-Houses +; 2-Teamtypes +; 3-UnitTypes +; 4-InfantryTypes +; 5-AircraftTypes +; 6-BuildingTypes +; 7-Videos +; 8-tutorial texts +; 9-Triggers +; 10-yes/no +; 11=sounds +; 12=themes +; 13=speeches +; 14=special weapons +; 15=animations +; 16=particles +; 17=waypoints +; 18=crate types * +; 19=speech bubble types * +; 20=Global variables <--- wrong, local variables! +; 21=.CSF strings (RA2 only) * +; 22=Tag * +; 23=Meteors * +; 24=Weapons * +; 25=Light behavior * +; 26=Shower * +; 27=Rules Global variables +; 28=Building INI names +; 29=Techtypes + + +; ParamTypes +; Name, ListType, [Code] +[ParamTypes] +-1=δʹÓÃ,0,1;not listed in FA2 +0=δʹÓÃ,0 +1=δ֪,0 +2=ËùÊô·½,1 +3=¾Ö²¿±äÁ¿,20 +4=ʱ¼ä,0 +5=»ý·Ö,0 +6=ÊýÖµ,0 +7=С¶ÓÀàÐÍ,2 +8=½¨Öþ,6 +9=·ÉÐÐÆ÷,5 +10=²½±ø,4 +11=µ¥Î»,3 +12=µçÓ°,7 +13=Îı¾,8 +14=´¥·¢,9 +15=ÔÊÐí,10 +16=ÉùÒô,11 +17=ÀÖÇú,12 +18=ÓïÒô,13 +19=²½Öè,0 +20=³¬¼¶ÎäÆ÷,14 +21=×ó,0 +22=ÉÏ,0 +23=¿í,0 +24=¸ß,0 +25=¶¯»­,15 +26=Á£×Ó,16 +27=³ÖÐøÊ±¼ä,0 +28=ËÙ¶È,0 +29=VoxelË鯬IDºÅ,29 +30=·¾¶µã,17 +31=ľÏäÀàÐÍ,PT_CrateTypes +32=ÓïÒôÌáʾ¿ò,19 +33=×Ö·û,21 +34=ÐÐΪ,9 +35=È«¾Ö±äÁ¿,27 +36=ÌØ¶¨ÎäÆ÷,14 +37=ÒѼ¤»î,10 +38=´¥·¢±êÇ©,22 +39=¿Æ¼¼ÀàÐÍ,0 +40=À´Ô´,0 +41=ÎäÆ÷,24 +42=·¢¹âÐÐΪ,25 +43=ʼþ,9 +44=ÕóÓê,26 +45=¸¡µãÖµ,0 +46=¿Æ¼¼ÀàÐÍ,29,2 +47=½¨Öþ,28 +48=ÊýÁ¿,0 +49=ÏñËØ¶¯»­,23 +50=ӰƬ,7 +51=À×´ïʼþ,PT_RadarEventTypes + +; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C +; Origianl definitinos are as follows: +; "Money" +; "Unit" +; "HealBase" +; "Cloak" +; "Explosion" +; "Napalm" +; "Squad" +; "Darkness" +; "Reveal" +; "Armor" +; "Speed" +; "Firepower" +; "ICBM" +; "Invulnerability" +; "Veteran" +; "IonStorm" +; "Gas" +; "Tiberium" +; "Pod" +[PT_CrateTypes] +FixedValueCount=19 +0=0 - Ç®Ïä +1=1 - Ëæ»úÔØ¾ßµ¥Î» +2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ +3=3 - ÓÀ¾ÃÒþÐÎ +4=4 - C4µ¯Í·É˺¦ +5=5 - »ðÑæ±¬Õ¨É˺¦ +6=6 - Ëæ»ú²½±øÐ¡¶Ó +7=7 - ȫͼºÚÄ» +8=8 - ÏÔʾȫµØÍ¼ +9=9 - »¤¼×Ç¿»¯ +10=10 - ËÙ¶ÈÌáÉý +11=11 - »ðÁ¦ÌáÉý +12=12 - ºËµ¯³¬Îäµ¥´Î +13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© +14=14 - ¾­ÑéÉýÐÇ +15=15 - Àë×ӷ籩£¨ÎÞЧ£© +16=16 - ¶¾ÆøÁ£×Ó +17=17 - СƬ¿óʯ +18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© + +; Controls for radar events +; The events, in order, are: +; (1) Generic Combat Event, +; (2) Generic Noncombat Event, +; (3) Dropzone Event, +; (4) Base Under Attack Event, +; (5) Harvester Under Attack Event, +; (6) Enemy Object Sensed Event +[PT_RadarEventTypes] +FixedValueCount=6 +0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ +1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ +2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ +3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ +4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ +5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» + +[ScriptParams] +0=ռλ,0 +1=Ä¿±ê,1 +2=·¾¶µã,2 +3=Ìø×ªÖÁÐÐ#,3 +4=·ÖÀëС¶Ó,4 +5=È«¾Ö±äÁ¿,5 +6=½Å±¾,6 +7=С¶Ó,7 +8=ËùÊô·½,8 +9=ÓïÒô,9 +10=ÒôЧ,10 +11=ӰƬ,11 +12=ÒôÀÖ,12 +13=¹ú¼Ò,13 +14=¾Ö²¿±äÁ¿,14 +15=³¯Ïò,15 +16=½¨Öþ,16 +17=¶¯»­,17 +18=¶Ô»°ÆøÅÝ,18 +19=½øÈë״̬,19 +20=ÕûÊý,0 +21=²¼¶û,20 +22=Ä¿±êÁбí,SP_TargetList + +[SP_TargetList] +ParseFromSection=TeamTargetTechnoTypes +ExtraValueType=0 + +[ScriptExtras] +0=SE_TargetScanStrategy + +[SE_TargetScanStrategy] +0=0 - ×îСÍþв +1=1 - ×î´óÍþв +2=2 - ×î½ü¾àÀë +3=3 - ×îÔ¶¾àÀë + +;Index=Name,ParamType,Obsolete,YROnly,Description +[ScriptsRA2] +0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ +1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ +2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ +3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ +4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ +5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© +6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ +7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ +8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ +9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ +10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ +11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ +12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ +13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© +14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© +15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© +16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ +17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© +18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© +19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ +20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© +21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ +22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ +23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ +24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ +25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ +26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ +27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ +28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ +29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ +30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ +31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ +32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ +33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ +34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© +35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ +36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ +37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ +38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ +39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ +40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ +41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ +42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ +43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ +44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© +45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© +46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ +47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ +48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ +49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ +50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© +51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ +52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ +53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ +55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ +56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ +;YR Only +58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ +59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ +60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ +61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ +62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ +63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ +64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ +;Hares Only +65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ +66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ +67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ +68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ +69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ +70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü +71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï + +[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? +0=5 +1=9 +;2=10 +3=11 + +; events format: +; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] +; negative number for type currently not supported (only Actions do support yet)! +; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. +; NOTE: ID must be the same like # +[EventsRA2] +0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 +1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 +2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 +3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 +4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 +5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 +6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 +7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 +8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 +9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 +10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 +11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 +12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 +13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 +14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 +15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 +16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 +17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 +18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 +19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 +20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 +21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 +22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 +23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 +24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 +25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 +26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 +27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 +28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 +29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 +30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 +31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 +32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 +33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 +34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 +35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 +36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 +37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 +38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 +39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 +40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 +41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 +42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 +43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 +44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 +45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 +46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 +47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 +48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 +49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 +50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 +51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 +52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 +53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 +54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 +55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 +56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 +57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 + +; YR +58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 +59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 + +; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters +60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 +61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 +86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 + + +; action format: +; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] +; if using negative number for type, param will be set to the absolute value of this number +; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. +; NOTE: ID must be the same like # +[ActionsRA2] +0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 +1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 +2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 +3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 +4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 +5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 +6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 +7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 +8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 +9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 +10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 +11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 +12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 +13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 +14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 +15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 +16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 +17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 +18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 +19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 +20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 +21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 +22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 +23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 +24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 +25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 +26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 +27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 +28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 +29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 +30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 +31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 +32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 +33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 +34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 +35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 +36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 +37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 +38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 +39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 +40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 +41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 +42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 +43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 +44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 +45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 +46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 +47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 +48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 +49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 +50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 +51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 +52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 +53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 +54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 +55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 +56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 +57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 +58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 +59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 +60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 +61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 +62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 +63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 +64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 +65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 +66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 +67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 +68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 +69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 +70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 +71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 +72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 +73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 +74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 +75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 +76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 +77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 +78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 +79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 +80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 +81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 +82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 +83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 +84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 +85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 +86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 +87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 +88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 +89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 +90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 +91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 +92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 +93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 +94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 +95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 +96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 +97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 +98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 +99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 +100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 +101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 +102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 +103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 +104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 +105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 +106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 +107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 +108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 +109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 +110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 +111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 +112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 +113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 +114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 +115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 +116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 +117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 +118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 +119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 +120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 +121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 +122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 +123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 +124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 +125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 +126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 +127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 +128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 +129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 + +; YR +130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 +131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 +132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 +133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 +134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 +135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 +136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 +137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 +138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 +139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 +140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 +141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 +142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 +143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 +144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 +145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 +;bellow only added in hares +146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 +147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 +148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 +149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 +150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 +151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 +152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 +153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 +154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 + +[BridgesTS] + +[BridgesRA2] + +[SpecialOverlayTS] + +[SpecialOverlayRA2] + +[IgnoreTerrainRA2] + +[Theaters] +0=TEMPERATE,TEMPERATE +1=SNOW,SNOW +2=URBAN,URBAN +3=NEWURBAN,NEWURBAN +4=LUNAR,LUNAR +5=DESERT,DESERT + +; Letter abbreviations for different theaters +; Only works in file loading +; First = file suffix (xxxx.~~~, iso~~~.pal), must be 3 letters +; Second = new theater letter (G~CNST) +[TheaterSuffixes] +TEMPERATE=TEM,T +SNOW=SNO,A +URBAN=URB,U +NEWURBAN=UBN,N +LUNAR=LUN,L +DESERT=DES,D + +; Order: Theater, SmoothTileSet, LATTileSet[, Skip LAT Tiles, ClearTileSet] +[LATGroups] +0=SNOW,TXSnowGrass,TXSnowGrassLAT,TXSnowGrassSkipLAT +1=SNOW,TXSnowPave,TXSnowPaveLAT,TXSnowPaveSkipLAT +2=TEMPERATE,TXTemperatePave,TXTemperatePaveLAT,TXTemperatePaveSkipLAT +;newurban is disabled by default, for the vanilla pave (114) has no LAT. +;3=NEWURBAN,TXNewUrbanPave,TXNewUrbanPaveLAT,TXNewUrbanPaveSkipLAT +4=DESERT,TXDesertPave,TXDesertPaveLAT,TXDesertPaveSkipLAT +; TX remove 33 from lat system +5=LUNAR,TXLunarSand,TXTXLunarSandLAT + +; FA2 will first read this, and then [General] +; in theater INI (not include Skip LAT Tiles). +[LATSettings] +TXSnowGrass=127 +TXSnowGrassLAT=131 +TXSnowPave=97 +TXSnowPaveLAT=130 +TXTemperatePave=93 +TXTemperatePaveLAT=94 +TXNewUrbanPave=114 +TXNewUrbanPaveLAT=178 +TXDesertPave=107 +TXDesertPaveLAT=108 +TXLunarSand=33 +TXTXLunarSandLAT=34 +TXSnowGrassSkipLAT=20,44,69,71,103,104,105,128,129,132,133,134,135,142,143,147,148,149,150,162,169,171,172 +TXSnowPaveSkipLAT=20,44,69,71,87,88,98,102,103,104,105,110,111,113,116,117,120,121,124,128,129,132,133,134,135,136,142,143,147,148,149,150,162,169,171,172 +TXTemperatePaveSkipLAT=20,38,40,47,82,83,97,98,102 +TXNewUrbanPaveSkipLAT=10,15,16,17,18,19,20,23,25,35,38,40,47,76,78,80,83,85,87,102,104,106,107,117,120,121,133,137,138,140,146,148,152,155,156,171,172,174,181,190,191,192,195,203,123,124,130,131,132,134,139,144,145,170 +TXDesertPaveSkipLAT=20,38,40,47,97,98,111,112,118 + +; custom brush sizes +; format: X length + x + Y length +; it is not recommended to change first and second value +[BrushSizes] +0=1x1 +1=2x2 +2=3x3 +3=4x4 +4=5x5 +5=7x7 +6=10x10 +7=1x2 +8=2x1 +9=1x3 +10=3x1 +11=1x5 +12=5x1 +13=1x10 +14=10x1 + +; All tilesets in Morphables should have Morphable=true. +; If you want to specify a certain tile in the tileset, +; use # as a delimiter, e.g. Morphables=114#0,114#1 +; if there's no #, all tiles in the tileset will count +; You don't need to write existing RampBase here, +; only new ramps need to be added here. The Ramps +; and Morphables should have the same length of +; tilesets, and those tilesets should be one-to-one +; correspondence. +; AddTiles = some tilesets added to the Object Browser +; -> Ground, not necessarily be morphable. +; BigWaterIndices = tile indices of big (2x2) water +; default: first 6 tiles of [General]->WaterSet +; SmallWaterIndices = tile indices of small (1x1) water +; default: No. 9~13 tiles of [General]->WaterSet +; IgnoredTilesets = Tilesets not adding to the Object +; Browser -> Ground. Should be keys in [General] of +; theater INIs, e.g. WaterSet +[NewUrbanInfo] +Morphables=114,123 +Ramps=117,193 +Cliffs2=110 +CliffsWater2=112 +AddTiles=46,124,157 +IgnoredTilesets=PaveTile + +[TemperateInfo] +AddTiles=93 + +[SnowInfo] +Morphables=97 +Ramps=98 +Cliffs2=75 +CliffsWater2=79 +AddTiles=127,135 + +[UrbanInfo] +Morphables=13 +Ramps=140 + +[DesertInfo] +AddTiles=107 + +[LunarInfo] +AddTiles=33,91 +IgnoredTilesets=WaterSet + +;[OverlayDisplayLimit] +;243=48 ; This means FA2 won't display overlay 243's frames after 48 + +; BuildingTypes to be ignored during overlap detection. For Immune or InvisibleInGame cases. + +[StructureOverlappingCheckIgnores] +0=TSTLAMP +1=GALITE +2=NEGLAMP +3=INGALITE +4=REDLAMP +5=NEGRED +6=GRENLAMP +7=BLUELAMP +8=YELWLAMP +9=INYELWLAMP +10=PURPLAMP +11=INPURPLAMP +12=INORANLAMP +13=INGRNLMP +14=INREDLMP +15=INBLULMP +16=TEMMORLAMP +17=TEMDAYLAMP +18=TEMDUSLAMP +19=TEMNITLAMP +20=SNOMORLAMP +21=SNODAYLAMP +22=SNODUSLAMP +23=SNONITLAMP + +[Chinese-TileManagerDataTEM] +普通地å½?LAT=lat +悬崖=cliff +æ°´é�¢=water +水岸=shore +æ–œå�¡=ramp|slope +城市地形=pave +公路/å°�è·¯/人行é�?road|highway +地表装饰=feature|farm +æ¡?bridge +é“�è·¯=rail|train +éš§é�“=tunnel|tube +瀑布=waterfall +交界å¤?地形修å¤�=fix + +[Chinese-TileManagerDataSNO] +普通地å½?LAT=lat +悬崖=cliff +æ°´é�¢=water +水岸=shore +æ–œå�¡=ramp|slope +城市地形=pave +公路/å°�è·¯/人行é�?road|highway +地表装饰=feature|farm +æ¡?bridge +é“�è·¯=rail|train +éš§é�“=tunnel|tube +瀑布=waterfall +交界å¤?地形修å¤�=fix + +[Chinese-TileManagerDataURB] +普通地å½?LAT=lat +悬崖=cliff +æ°´é�¢=water +水岸=shore +æ–œå�¡=ramp|slope +城市地形=pave +公路/å°�è·¯/人行é�?road|highway +地表装饰=feature|farm +æ¡?bridge +é“�è·¯=rail|train +éš§é�“=tunnel|tube +瀑布=waterfall +交界å¤?地形修å¤�=fix + +[Chinese-TileManagerDataUBN] +普通地å½?LAT=lat +悬崖=cliff +æ°´é�¢=water +水岸=shore +æ–œå�¡=ramp|slope +城市地形=pave +公路/å°�è·¯/人行é�?road|highway +地表装饰=feature|farm +æ¡?bridge +é“�è·¯=rail|train +éš§é�“=tunnel|tube +瀑布=waterfall +交界å¤?地形修å¤�=fix + +[Chinese-TileManagerDataDES] +普通地å½?LAT=lat +悬崖=cliff +æ°´é�¢=water +水岸=shore +æ–œå�¡=ramp|slope +城市地形=pave +公路/å°�è·¯/人行é�?road|highway +地表装饰=feature|farm +æ¡?bridge +é“�è·¯=rail|train +éš§é�“=tunnel|tube +瀑布=waterfall +交界å¤?地形修å¤�=fix + +[Chinese-TileManagerDataLUN] +普通地å½?LAT=lat +悬崖=cliff +æ°´é�¢=water +水岸=shore +æ–œå�¡=ramp|slope +城市地形=pave +公路/å°�è·¯/人行é�?road|highway +地表装饰=feature|farm +æ¡?bridge +é“�è·¯=rail|train +éš§é�“=tunnel|tube +瀑布=waterfall +交界å¤?地形修å¤�=fix + +[English-TileManagerDataTEM] +Cliff=cliff +Water=water +Ramp=ramp|slope +Bridge=bridge +Road=road|highway +Feature=feature|farm +Railway=rail|train +Tunnel=tunnel|tube +Ramp=ramp|slope +Shore=shore +Pavement=pave +Fix=fix +LAT=lat + +[English-TileManagerDataSNO] +Cliff=cliff +Water=water +Ramp=ramp|slope +Bridge=bridge +Road=road|highway +Feature=feature|farm +Railway=rail|train +Tunnel=tunnel|tube +Ramp=ramp|slope +Shore=shore +Pavement=pave +Fix=fix +LAT=lat + +[English-TileManagerDataURB] +Cliff=cliff +Water=water +Ramp=ramp|slope +Bridge=bridge +Road=road|highway +Feature=feature|farm +Railway=rail|train +Tunnel=tunnel|tube +Ramp=ramp|slope +Shore=shore +Pavement=pave +Fix=fix +LAT=lat + +[English-TileManagerDataUBN] +Cliff=cliff +Water=water +Ramp=ramp|slope +Bridge=bridge +Road=road|highway +Feature=feature|farm +Railway=rail|train +Tunnel=tunnel|tube +Ramp=ramp|slope +Shore=shore +Pavement=pave +Fix=fix +LAT=lat + +[English-TileManagerDataDES] +Cliff=cliff +Water=water +Ramp=ramp|slope +Bridge=bridge +Road=road|highway +Feature=feature|farm +Railway=rail|train +Tunnel=tunnel|tube +Ramp=ramp|slope +Shore=shore +Pavement=pave +Fix=fix +LAT=lat + +[English-TileManagerDataLUN] +Cliff=cliff +Water=water +Ramp=ramp|slope +Bridge=bridge +Road=road|highway +Feature=feature|farm +Railway=rail|train +Tunnel=tunnel|tube +Ramp=ramp|slope +Shore=shore +Pavement=pave +Fix=fix +LAT=lat + +; override the same section in rules +;[Colors] +;Gold=43,239,255 + +; Comment these sections for FA2sp DLL drawing +; voxel turret locations +;[BuildingVoxelTurretsRA2] +;GTGCANX=00 +;GTGCANY=44;-6 +;NASAMY=-3;2 +;NALASRX=0 +;NALASRY=10;-3 +;NAFLAKY=6;10 ; flak needs additional correction below for every direction +;NAFLAKX=-5; +;NAFLAKX0=5 +;NAFLAKX2=-4; +;NAFLAKY2=5 +;NAFLAKX3=-5; +;NAFLAKY3=10 +;NAFLAKX4=5 +;NAFLAKY4=14 +;NAFLAKX5=10 +;NAFLAKY5=8 +;NAFLAKX6=15 +;NAFLAKY6=5 +;NAFLAKX7=12 +;NAFLAKY7=1 +;CAOUTPX=-30 +;CAOUTPY=12 +;YAREFNX=-30 +;YAREFNY=30 +;YAGGUNY=7 +;YAGGUNX=-5 +;YAGGUNX7=5; gattling gun needs some correction +;YAGGUNY7=-3 +;YAGGUNX6=11 +;YAGGUNY6=3 +;YAGGUNX5=10 +;YAGGUNY5=3 +;YAGGUNX4=3 +;YAGGUNY4=2 +;YAGGUNX0=5 + +; voxel barrel locations +;[BuildingVoxelBarrelsRA2] +;GTGCANX0=0 +;GTGCANY0=30;-6 +;GTGCANX1=-18 +;GTGCANY1=35;-6 +;GTGCANX2=-28 +;GTGCANY2=50;-6 +;GTGCANX3=-27 +;GTGCANY3=67;-6 +;GTGCANX4=00 +;GTGCANY4=73;-6 +;GTGCANX5=23 +;GTGCANY5=60;-6 +;GTGCANX6=30 +;GTGCANY6=48;-6 +;GTGCANX7=20 +;GTGCANY7=35;-6 + + +; not NOSURFACES: +;[BuildingVoxelTurretsRA2] +;GTGCANX=-1 +;GTGCANY=0;-6 +;NASAMY=0;2 +;NALASRX=0 +;NALASRY=0;-3 +;NAFLAKY=10;10 + +;[BuildingVoxelTurrets] + +;[VehicleVoxelTurretsRA2] +;DISKX=-10 +;DISKY=-10 +;YTNKY=-30 +;SREFX=4 +;SREFY=3 + +;[VehicleVoxelTurrets] + +;obsolete +;[IgnoreArtImage] +;BFRT=1 +;CAML=1 + +;[IgnoreActiveAnim2] + +[IgnoreSuperAnim1] +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim2] +NAMISL=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[IgnoreSuperAnim3] +NAMISL=1 +GACSPH=1 + +[IgnoreSuperAnim4] +NAMISL=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +[MovieList] +Start=66; Anything below will not be listed! + +[StdBrushSize] +;ClearTile=2 +;RoughTile=2 +;SandTile=2 +;GreenTile=2 +;PaveTile=2 +;WaterSet=2 + +; if completely surrounded by water ; currently ignored +[MinBrushSizeInWater] +ClearTile=2 +RoughTile=2 +SandTile=2 +GreenTile=2 +PaveTile=2 + +; SlopeSetPieces for cliffs have a specific direction. +; used for AutoLevel logic +; CURRENTLY IGNORED +[SlopeSetPiecesDirections] +Count=10 +0=Right_1 +1=Left_1 +2=Top_1 +3=Bottom_1 +4=Right_2 +5=Left_2 +6=Left_2 +7=Bottom_2 +8=Top_2 +9=Top_2 + +[LUNARLimits] +TreeMax=999 +TreeMin=999 + +[URBANLimits] +TreeMax=999 + +[TEMPERATELimits] +TreeMax=999 + +[SNOWLimits] +TreeMax=999 + +[NEWURBANLimits] +TreeMax=999 + +[DESERTLimits] +TreeMax=999 + +; tileset ini overwritings +; only used by FinalAlert +[IgnoreSetTEMPERATE] +;0=53 +;1=54 +;2=56 +3=77 +4=78 +5=79 + +[IgnoreSetSNOW] +0=6 +1=66 +2=8 +3=46 +4=70 + +[IgnoreSetURBAN] +;0=49 +;1=50 +;2=51 +;3=53 +;4=54 +5=56 +;6=73 +;7=30 +8=91 +9=92 +10=93 +11=94 +12=95 +13=96 +14=97 +15=98 +16=99 +17=100 + +[IgnoreSetNEWURBAN] +;0=101 +1=207 + +[IgnoreSetDESERT] +;0=19 +;1=54 +;2=53 +;3=56 +;4=73 +;5=80 +6=121 +7=122 + +[IgnoreSetLUNAR] +0=34 +1=90 + +[UseSetTEMPERATE] +0=57 + +[UseSetSNOW] +[UseSetURBAN] + + +; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! +; If a ground tile id exceeds this number, FA2 will assume the map is a YR map +[RA2TileMax] +Temperat=838 +Urban=1077 +Snow=798 + +[YRInfantry] +YENGINEER=1 +GGI=1 +INIT=1 +BORIS=1 +BRUTE=1 +VIRUS=1 +CLNT=1 +ARND=1 +STLN=1 +CAML=1 +EINS=1 +MUMY=1 +RMNV=1 +LUNR=1 +DNOA=1 +DNOB=1 +SLAV=1 +WWLF=1 +YDOG=1 +YADOG=1 + +[YRUnits] +YHVR=1 +PCV=1 +SMIN=1 +SMON=1 +YCAB=1 +YTNK=1 +BFRT=1 +TELE=1 +CAOS=1 +DDBX=1 +BCAB=1 +BSUB=1 +SCHP=1 +JEEP=1 +MIND=1 +DISK=1 +UTNK=1 +ROBO=1 +YDUM=1 +SCHD=1 +DOLY=1 +CBLC=1 +FTRK=1 +AMBU=1 +CIVP=1 + +[YRBuildings] +YACNST=1 +YAPOWR=1 +YABRCK=1 +YAWEAP=1 +YAYARD=1 +YADEPT=1 +YATECH=1 +GAFWLL=1 +YAGGUN=1 +YAPSYT=1 +NAINDP=1 +YAGRND=1 +YAGNTC=1 +CASLAB=1 +CATIME=1 +YAPPET=1 +CALOND04=1 +CALOND05=1 +CALOND06=1 +CAMOON01=1 +CATRAN03=1 +CAEAST01=1 +CAEGYP01=1 +CAEGYP02=1 +CAEGYP03=1 +CALA01=1 +CALA02=1 +CALA03=1 +CALA04=1 +CALA05=1 +CALOND01=1 +CALOND02=1 +CALOND03=1 +CAMORR01=1 +CAMORR02=1 +CAMORR03=1 +CASANF01=1 +CASANF02=1 +CASANF03=1 +CASANF04=1 +CASANF05=1 +CASEAT01=1 +NATBNK=1 +GAGATE_A=1 +CASANF09=1 +CASANF10=1 +CASANF11=1 +CASANF12=1 +CASANF13=1 +CASANF14=1 +CASANF06=1 +CASANF07=1 +CASANF08=1 +CASEAT02=1 +YACOMD=1 +YAPPPT=1 +GAROBO=1 +YAREFN=1 +YAROCK=1 +NABNKR=1 +CASANF15=1 +CASANF16=1 +CASANF17=1 +CASANF18=1 +CASIN03E=1 +CASIN03S=1 +CAURB01=1 +CAURB02=1 +CAURB03=1 +CAPOWR=1 +CALA07=1 +CAEGYP06=1 +CALA08=1 +CAEAST02=1 +CABARR01=1 +CABARR02=1 +CAMORR04=1 +CAMORR05=1 +CALA09=1 +CAEGYP04=1 +CAEGYP05=1 +CALA06=1 +CAMORR06=1 +CAMORR07=1 +CAMORR08=1 +CAMORR09=1 +CAMORR10=1 +CATIME01=1 +CATIME02=1 +CALA10=1 +CALA11=1 +CALA12=1 +CALA13=1 +CAPARK04=1 +CAPARK05=1 +CAPARK06=1 +CALA14=1 +CALA15=1 +CABUNK03=1 +CABUNK04=1 +CALUNR01=1 +CALUNR02=1 + +[YRTerrain] +TREE31=1 +TREE32=1 +TREE33=1 +TREE34=1 +TREE35=1 +TREE36=1 + +[YRAircraft] +BPLN=1 +SPYP=1 +CMISL=1 + +[YROverlay] +Begin=243; which number is the first from new YR overlay? + +; custom autoshore logic +; theater, name, shore tile set, sand tile set +; theater = theater name +; name = displayed name (search translation in FALanguage.ini) +; shore tile set = used as shore, need to have the same order as vanilla shore +; can type tile set name in theater ini, like "ShorePieces" +; sand tile set = used as sand, should have only one 1x1 tile +; can type tile set name in theater ini, like "GreenTile" +; -1 = do not generate sand tile +[AutoShoreTypes] +0=TEMPERATE,Sand Shorelines,ShorePieces,GreenTile +1=SNOW,Ice Shorelines,ShorePieces,GreenTile +2=URBAN,Grass Shorelines,ShorePieces,GreenTile +3=NEWURBAN,Sand Shorelines,ShorePieces,GreenTile +4=NEWURBAN,*Grass Dark Shorelines*,129,124 +5=DESERT,Sand Shorelines,ShorePieces,GreenTile + +; hacks for shore pieces +; shore id_pos=iswater +; pos: count from left top to right, then next "row" +; RA2 only needs one fix (for URBAN specifically) +[ShoreTerrainRA2] +12_4=1 +12_5=1 + +; tilesets that may be modified using the shore or a similar logic +; 1 = affected, 0 = not affected +; in theater specific sections, format: tileIndex = 1/0 +; [SoftTileSetsTEM] +[SoftTileSets] +ClearTile=1 +RoughTile=1 +ClearToRoughLat=1 +SandTile=1 +ClearToSandLat=1 +GreenTile=1 +ClearToGreenLat=1 +PaveTile=1 +MiscPaveTile=1 +ClearToPaveLat=1 +RoughGround=0; no +WaterSet=1 +ShorePieces=1 + +[SoftTileSetsTEM] +81=0 + +; tilesets that will redraw extra image +; [RedrawExtraTileSetsTEM] + +; Normally, tile extra images are included when computing redraw relations. +; Tilesets specified in this ini section will disregard their extra images. +; [NoExtraHeightRedrawTileSetsTEM] + +; corner strings are: cornerleft, cornerright, cornerbottom, cornertop + +[CliffBackData] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataAlt] +vertic_diag_c=2 +;vertic_diag_2=0 +vertic_diag_0=2 +vertic_diag_1=3 +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=1 +;vertic_diag_cornertop_1=0 +vertic_diag_cornertop_0=1 +horiz_c=4 +horiz_0=22 +horiz_1=23 +horiz_2=24 +horiz_3=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +horiz_cornertop_c=0 +;horiz_cornertop_0=31 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffBackDataNEWURBAN] +vertic_diag_c=1 +;vertic_diag_4=0 +vertic_diag_0=2 +;vertic_diag_1=3; other cliff type +;vertic_diag_3=1 ; unused at moment +vertic_diag_cornertop_c=2 +vertic_diag_cornertop_0=0 +vertic_diag_cornertop_1=1 +horiz_c=2 +horiz_0=22 +;horiz_3=23 +;horiz_2=24 +horiz_1=25 ;2x1, not 2x2, unused at moment +horiz_cornerbottom_c=2 +horiz_cornerbottom_0=28 +horiz_cornerbottom_1=29 +vertic_c=4 +vertic_0=34 +vertic_1=35 +vertic_2=36 +vertic_3=37 ;2x1, not 2x2, unused at moment +vertic_cornerright_c=2 +vertic_cornerright_0=29 +vertic_cornerright_1=28 + +[CliffFrontData] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataAlt] +vertic_diag_c=2 +vertic_diag_0=18 +vertic_diag_1=19 +;vertic_diag_2=20 +;vertic_diag_3=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=4 +horiz_0=4 +horiz_1=5 +horiz_2=6 +horiz_3=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=6 +horiz_diag_0=8 +horiz_diag_1=9 +horiz_diag_2=10 +horiz_diag_3=11 ; unused at moment +horiz_diag_4=12 ; unused at moment +horiz_diag_5=13 ; unused at moment +vertic_c=4 +vertic_0=14 +vertic_1=15 +vertic_2=16 +vertic_3=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[CliffFrontDataNEWURBAN] +vertic_diag_c=1 +vertic_diag_0=18 +;vertic_diag_2=19 ; other cliff type +;vertic_diag_3=20 ; other cliff type +;vertic_diag_1=21 ; unused at moment +vertic_diag_cornerleft_c=1 +vertic_diag_cornerleft_0=20 +;vertic_diag_cornerleft_1=21 +vertic_diag_cornerright_c=2 +vertic_diag_cornerright_0=32 +vertic_diag_cornerright_1=33 +horiz_c=2 +horiz_0=4 +;horiz_3=5 ; other cliff type +;horiz_2=6 ; other cliff type +horiz_1=7 ;2x1, not 2x2, unused at moment +horiz_cornertop_c=1 +horiz_cornertop_0=1 +horiz_diag_c=2 +horiz_diag_0=8 +;horiz_diag_4=9 ; other cliff type +;horiz_diag_2=10 ; other cliff type +horiz_diag_1=11 ; unused at moment +;horiz_diag_3=12 ; unused at moment +;horiz_diag_5=13 ; unused at moment +vertic_c=2 +vertic_0=14 +;vertic_3=15 ; other cliff type +;vertic_2=16 ; other cliff type +vertic_1=17 ;2x1, not 2x2, unused at moment +vertic_cornerleft_c=1 +vertic_cornerleft_0=21 + +[BridgesTS] + +[BridgesRA2] + +[SpecialOverlayTS] + +[SpecialOverlayRA2] + + diff --git a/Supplementary/RevengeNow/FinalRevengeDefaults.ini b/Supplementary/RevengeNow/FinalRevengeDefaults.ini new file mode 100644 index 00000000..7c4944c4 --- /dev/null +++ b/Supplementary/RevengeNow/FinalRevengeDefaults.ini @@ -0,0 +1,16 @@ +[Files] + +[FinalAlert] +Language=English +FileSearchLikeGame=yes + +[RA2] + +[UserInterface] +LoadScreenDelay=4.0 +UseDefaultMouseCursor=1 +ShowBuildingCells=1 +EasyView=0 + +[MiniMap] +Scale=2.000000 diff --git a/Supplementary/RevengeNow/README.md b/Supplementary/RevengeNow/README.md new file mode 100644 index 00000000..f6677820 --- /dev/null +++ b/Supplementary/RevengeNow/README.md @@ -0,0 +1,37 @@ +# Revenge Now (RN) é…�置套件 / Revenge Now Configuration Suite + +本目录æ��ä¾›é�¢å�‘ **Revenge Now (å¤�仇时刻)** 项目的专属é…�置套件,旨在与 [`YR_RN_Mission_Editor`](file:///D:/Developments/RevengeNow/Codes/YR_RN_Mission_Editor) 地图编辑器行为全é�¢å¯¹é½�。 + +--- + +## 包å�«æ–‡ä»¶æ¸…å�• + +1. **`FAData.ini`**: + - å�¯ç”¨äº†å…¨å¥—顺åº�ä¿�æŒ�机制: + - `SaveMap.PreserveINISorting=true`:ä¿�存地图时ä¿�æŒ�所有 INI å°�节原有的出现顺åº�。 + - `SaveMap.PreserveINIKeySorting=true`:ä¿�存地图时ä¿�æŒ�å°�节内部键值对(Key=Value)原有的出现顺åº�(ä¸�å†�按字典/字符串长度排åº�)。 + - `SaveMap.KeepComments=true`:ä¿�存地图时ä¿�留注释。 + - å�¯ç”¨äº† Phobos 扩展特性: + - `ExtWaypoints=true`(无é™�路径点) + - `ExtVariables=true`(无é™�局部å�˜é‡�) + - `ExtOverlays=true`(无é™�覆盖物) + - å�¯ç”¨äº†ä¾¿æ�·å·¥ä½œæµ�选项: + - `ReloadGameFromMapFolder=true`(直接从地图目录加载资æº�与 INI) + - `BrowserRedraw=true`ã€�`ObjectBrowser.SafeHouses=true`ã€�`ObjectBrowser.CleanUp=true` + - 集æˆ�了æ�¥è‡ª `YR_RN_Mission_Editor` çš„ RN 专用å°�节与模æ�¿ï¼š + - `[Sides]`(安塔列星等 12 个阵è�¥åˆ†ç±»å®šä¹‰ï¼‰ + - `[GameModes]`(RN 专属游æˆ�模å¼�列表) + - `[ForceUnitPalettePrefix]` + - `[ScriptTemplates]`(巡逻ã€�å�¸è½½æ”»å‡»ç­‰è„šæœ¬æ¨¡æ�¿ï¼‰ + - `[TeamTemplates]`(空é™�部队ã€�AI 生产å°�队ã€�çª�击å°�队等队ä¼�模æ�¿ï¼‰ + - `[Customizations]` 与 `[Debug]`(å�•å�‘éš§é�“支æŒ�ã€�轨é�“逻辑开å�¯ç­‰ï¼‰ +2. **`TileGroups.ini`**: + - ç§»æ¤�自 `YR_RN_Mission_Editor/dist/FinalRevenge/TileGroups.ini`,包å�«æ¸©å’Œæ°”候ã€�雪地ã€�城市等地形的分组与快速选择é…�置。 +3. **`FinalRevengeDefaults.ini`**: + - ç§»æ¤�自 `YR_RN_Mission_Editor/dist/FinalRevenge/FinalRevengeDefaults.ini`,包å�«é¢„设界é�¢å�‚数(缩放ã€�显示网格等)。 + +--- + +## 使用方法 + +将本目录中的 `FAData.ini`ã€�`TileGroups.ini`(å�Šæ‰€éœ€è¾…助文件)放置到 FA2 程åº�è¿�行根目录(或通过包å�«æœºåˆ¶å¼•入),å�¯åЍå�Žä¿�存地图å�³å�¯ä¿�è¯� INI 文件结构ã€�å°�节顺åº�与键值顺åº�与 `YR_RN_Mission_Editor` 完全一致。 diff --git a/Supplementary/RevengeNow/TileGroups.ini b/Supplementary/RevengeNow/TileGroups.ini new file mode 100644 index 00000000..d2f3d01a --- /dev/null +++ b/Supplementary/RevengeNow/TileGroups.ini @@ -0,0 +1,113 @@ +;===Terrain Sorts=== +;Set Enable=yes to allow +;The Combobox's count is determined by Counts +;X=GroupName, MemberCounts(n), Member_1 Name, Member_1 ID, Member_2 Name, Member_2 ID..., Member_n Name, Member_n ID + +;By prry +[TerrainTemperate] +Enable=yes +Counts=13 +1=地表(野地),10,è�‰åœ°,0000,暗色è�‰åœ°,0013,暗色è�‰åœ°äº¤ç•Œ,0014,碎石è�‰åœ°,0033,碎石è�‰åœ°äº¤ç•Œ,0034,沙地,0041,沙地交界,0042,水泥路é�¢,0046,水泥交界A,0039,水泥交界B,0094 +2=地表(城市),2,城市水泥路é�¢,0093,水泥地表,0038 +3=地表(地表装饰),1,农田,0035 +4=æ–œå�¡,2,è�‰åœ°æ–œå�¡,0009,è�‰åœ°æ–œå�¡è¡¥å……,0043 +5=æ°´é�¢(海岸线,沙滩),6,æ°´é�¢,0021,沙滩水岸,0012,浅水碎石路,0076,水泥海岸线A,0082,水泥海岸线B,0083,亚利桑那å�·æ²‰èˆ¹,0081 +6=城市高å�°,0 +7=自然山脉,10,山脉,0010,山脉斜å�¡è¾¹ç¼˜,0025,å�¯æ‘§æ¯�悬崖,0103,水上山脉,0015,山脉瀑布(左下),0030,山脉瀑布(å�³ä¸‹),0049,山脉瀑布(å�³ä¸Š),0050,山脉瀑布(左上),0051,溶洞(左下),0057,溶洞(å�³ä¸‹),0095 +8=山脉边缘,2,山脉斜å�¡è¾¹ç¼˜,0025,å�¯æ‘§æ¯�悬崖,0103 +9=é�“路一览,9,高速公路,0020,高速公路护æ �,0097,高速公路分界+斑马线,0040,高速公路尽头,0036,高速公路斜å�¡,0047,土路弯é�“,0016,土路分支,0017,土路直é�“,0018,土路斜å�¡,0023 +10=éš§é�“,6,高速公路隧é�“,0053,è�‰åœ°éš§é�“,0073,水上隧é�“,0092,é“�路隧é�“,0087,éš§é�“护墙,0054,水上隧é�“护墙,0099 +11=é“�è·¯,5,é“�路斜å�¡,0086,é“�è·¯/公路交汇,0088,é“�路分支,0089,é“�路交汇,0090,桥下é“�路修正,0184 +12=桥头,3,城市高速公路桥头,0019,高架木桥头,0080,高架é“�路桥头,0104 +13=ç›´å�‡æœºå�ª,1,ç›´å�‡æœºå�ª,0102 + +;By Nepgear(WF) +[TerrainSnow] +Enable=yes +Counts=14 +1=城市高å�°,22,城市高å�°èƒŒé�¢A,0106,城市高å�°A,0107,城市高å�°B,0108,城市高å�°C,0109,城市高å�°D,0110,城市高å�°èƒŒé�¢B,0111,城市高å�°æ–œå�¡è¾¹ç¼˜A,0112,城市河堤A,0113,城市河堤B,0114,城市河堤C,0115,城市河堤D,0116,城市河堤E,0117,城市水闸A,0140,城市水闸B,0141,城市瀑布A,0163,城市瀑布B(背é�¢),0164,城市瀑布C,165,城市河堤F,0149,城市高å�°E,0150,城市瀑布A,0163,城市瀑布B(背é�¢),0164,城市瀑布C,0165 +2=自然山脉,13,山脉,0010,水上山脉,0015,山脉瀑布(左下),0030,山脉瀑布(å�³ä¸‹),0035,山脉瀑布(å�³ä¸Š),0036,山脉瀑布(左上),0037,溶洞(左下),0083,冰å·�溶洞(左下),0085,溶洞(å�³ä¸‹),0137,冰å·�溶洞(å�³ä¸‹),0139,冰å·�山脉,0075,水上冰å·�山脉,0079,冰å·�山脉补角,0082 +3=地表(野地),11,雪地,0000,è�‰åœ°,0013,è�‰åœ°äº¤ç•Œ,0014,污浊雪地,0062,污浊雪地交界,0063,冰é�¢,0064,冰é�¢äº¤ç•Œ,0065,水泥路é�¢,0068,水泥路é�¢äº¤ç•Œ,0070,水泥路é�¢äº¤ç•ŒC,0130,雪地/è�‰åœ°äº¤ç•Œ,0131 +4=地表(城市交界),8,水泥地表,0069,城市水泥路é�¢,0097,城市è�‰åœ°,0127,水泥路é�¢äº¤ç•ŒA,0120,水泥路é�¢äº¤ç•ŒB,0121,红色人行é�“,0135,人行é�“/水泥交界A,0136,人行é�“/水泥交界B,0172 +5=地表(城市地表装饰),5,农田,0040,å�œè½¦åœº+城市广场A,0134,å�œè½¦åœº+城市广场B,0148,城市æ¤�æ ‘å�‘,0162,å�œè½¦åœº+城市广场C,0171 +6=æ°´é�¢(海岸线,沙滩),10,结冰水岸,0012,æ°´é�¢,0021,浅水结冰路,0072,水泥海岸线A,0087,水泥海岸线,0088,水上废墟A,0145,水上废墟B,0146,水泥海岸线C,0151,水泥海岸线D,0152,æ��浅的油轮,0159 +7=é�“è·¯,16,土路(弯é�“),0016,土路(分支),0017,土路(ç›´é�“),0018,高速公路,0020,高速公路尽头,0038,高速公路分界+人行é�“,0071,土路斜å�¡,0023,高速公路斜å�¡,0044,è¡—é�“(弯é�“),0103,è¡—é�“(分支),0104,è¡—é�“(ç›´é�“),0105,è¡—é�“æ–œå�¡,0128,高速公路/è¡—é�“分支,0129,高速公路弯é�“,0132,高速公路尽头B(城市),0133,高速公路护æ �,0142 +8=éš§é�“,8,高速公路隧é�“A,0047,éš§é�“护墙,0048,é“�路隧é�“,0093,éš§é�“,0100,高速公路隧é�“B,0101,水泥隧é�“护墙,0102,水上隧é�“,0118,水上隧é�“护墙,0119 +9=é“�è·¯,6,é“�路斜å�¡,0092,é“�路隧é�“,0093,é“�è·¯/公路交汇处,0094,é“�路分支,0095,é“�路交汇处,0096,桥下é“�路修正,0143 +10=å�œè½¦åœº,5,å�œè½¦åœº+城市广场C,0171,å�œè½¦åœºè¾¹ç•ŒB,0170,å�œè½¦åœºè¾¹ç•ŒA,0169,å�œè½¦åœº+城市广场B,0148,å�œè½¦åœº+城市广场A,0134 +11=山脉/高å�°è¾¹ç¼˜,5,山脉斜å�¡è¾¹ç¼˜,0025,冰å·�æ–œå�¡è¾¹ç¼˜,0077,城市高å�°æ–œå�¡è¾¹ç¼˜A,0112,城市高å�°æ–œå�¡è¾¹ç¼˜B,0124,å�¯æ‘§æ¯�悬崖,0173 +12=桥头,3,高架公路桥头,0019,高架木桥头,0073,高架é“�路桥头,0174 +13=æ–œå�¡,6,雪地斜å�¡,0009,土路斜å�¡,0023,é“�路斜å�¡,0092,水泥斜å�¡,0098,è¡—é�“æ–œå�¡,0128,高速公路斜å�¡,0044 +14=æ�‚项,3,飞机残骸,0074,冰å·�裂ç¼�,0081,ç›´å�‡æœºå�ª,0147 + +;By prry +[TerrainUrban] +Enable=yes +Counts=14 +1=地表(野地),0 +2=地表(城市,交界),14,水泥路é�¢,0000,水泥地表,0038,碎石水泥路é�¢,0033,红色人行é�“,0046,泥地,0013,城市è�‰åœ°,0041,æ°´æ³¥/红砖交界A,0104,æ°´æ³¥/红砖交界B,0102,城市è�‰åœ°/红砖交界A,0109,城市è�‰åœ°/红砖交界B,0103,æ°´æ³¥/城市è�‰åœ°äº¤ç•ŒA,0080,æ°´æ³¥/城市è�‰åœ°äº¤ç•ŒB,0087,泥地交界A(水泥,红砖),0111,泥地交界B(与街é�“边缘),0143 +3=地表(地表装饰),9,城市广场A(å�œè½¦åœº+è¶³ç�ƒåœº+泳池),0035,城市广场B(å�œè½¦åœº+泳池),0142,城市广场C,0150,废墟,0082,体育馆废墟,0105,å�Žç››é¡¿å€’影池,0081,棒ç�ƒåœº,0088,自由女神åƒ�底座,0089,城市æ¤�æ ‘å�‘,0139 +4=æ–œå�¡,3,水泥斜å�¡,0009,水泥斜å�¡è¡¥å……,0043,泥地斜å�¡,0140 +5=æ°´é�¢(海岸线),7,æ°´é�¢,0021,水泥海岸线A,0106,水泥海岸线B,0110,河堤海岸线交界,0107,æµ…æ°´è�‰åœ°è·¯,0090,水上废墟A(左上),0108,水上废墟B(å�³ä¸‹),0135 +6=城市高å�°,20,城市高å�°A,0010,城市高å�°B,0076,城市高å�°C,0120,城市高å�°æ–œå�¡è¾¹ç¼˜,0025,城市河堤A,0015,城市河堤B,0078,城市河堤C,0122,城市高å�°ä¿®æ­£,0085,河堤海岸线交界,0107,河堤è�‰åœ°äº¤ç•ŒA,0083,河堤è�‰åœ°äº¤ç•ŒB,0148,城市水闸A,0124,城市水闸B,0126,城市瀑布(左下),0030,城市瀑布(å�³ä¸‹),0049,城市瀑布(å�³ä¸Š),0050,城市瀑布(左上),0051,城市瀑布A,0144,城市瀑布B(背é�¢),0146,城市瀑布C,0148 +7=自然山脉,0 +8=高å�°è¾¹ç¼˜,1,城市高å�°æ–œå�¡è¾¹ç¼˜,0025 +9=é�“路一览,11,高速公路,0020,高速公路护æ �,0128,高速公路分界+斑马线,0040,高速公路尽头,0036,高速公路弯é�“,0136,高速公路/è¡—é�“交界,0137,高速公路斜å�¡,0047,è¡—é�“弯é�“,0016,è¡—é�“分支,0017,è¡—é�“ç›´é�“,0018,è¡—é�“æ–œå�¡,0023 +10=éš§é�“,4,高速公路隧é�“,0053,水上隧é�“,0130,é“�路隧é�“,0116,水上隧é�“护墙,0131 +11=é“�è·¯,6,é“�路斜å�¡(城市),0115,é“�路斜å�¡(泥地),0141,é“�è·¯/公路交汇,0117,é“�路分支,0118,é“�路交汇,0119,桥下é“�路修正,0129 +12=å�œè½¦åœº,7,å�œè½¦åœº,0142,å�œè½¦åœºè¾¹ç•Œ,0151,ç›´å�‡æœºå�ª,0138,高速公路,0020,高速公路分界+斑马线,0040,高速公路护æ �,0128,桥下é“�路修正,0129 +13=桥头,3,高速公路桥头,0019,高架木桥头,0101,高架é“�路桥头,0152 +14=ç›´å�‡æœºå�ª,1,ç›´å�‡æœºå�ª,0138 + +;By Nanhua +[TerrainNewurban] +Enable=yes +Counts=14 +1=地表(野地),9,è�‰åœ°,0000,暗色è�‰åœ°,0013,暗色è�‰åœ°äº¤ç•Œ,0014,碎石è�‰åœ°,0033,碎石è�‰åœ°äº¤ç•Œ,0034,沙地,0041,沙地交界,0042,水泥交界A,0122,水泥交界B,0178 +2=地表(城市,交界),17,城市水泥路é�¢,0114,水泥地表,0038,红色人行é�“,0046,è�‰åœ°/水泥交界A,0080,è�‰åœ°/水泥交界B,0087,è�‰åœ°/红砖交界A,0109,è�‰åœ°/红砖交界B,0103,æ°´æ³¥/红砖交界A,0104,æ°´æ³¥/红砖交界B,0102,泥地,0123,城市è�‰åœ°,0124,城市è�‰åœ°/红砖交界A,0139,城市è�‰åœ°/红砖交界B,0132,城市è�‰åœ°/水泥交界A,0138,城市è�‰åœ°/水泥交界B,0133,泥地交界A(水泥,红砖),0156,泥地交界B(与街é�“边缘),0196 +3=地表(地表装饰),10,城市广场A(+å�œè½¦åœºï¼Œè¶³ç�ƒåœºï¼Œæ³³æ± ),0035,农田(è¶³ç�ƒåœº+å�œè½¦åœº),0142,å�œè½¦åœº,0195,å�Žç››é¡¿å€’影池A(è�‰åœ°),0081,å�Žç››é¡¿å€’影池B(城市),0144,棒ç�ƒåœºA(è�‰åœ°),0088,棒ç�ƒåœºB(城市),0131,自由女神åƒ�底座A(è�‰åœ°),0089,自由女神åƒ�底座B(城市),0134,城市æ¤�æ ‘å�‘,0192 +4=æ–œå�¡,3,è�‰åœ°æ–œå�¡,0009,泥地斜å�¡,0193,水泥斜å�¡,0117 +5=æ°´é�¢(海岸线,沙滩),10,æ°´é�¢,0021,沙滩水岸,0012,浅水碎石路,0090,水泥海岸线A,0106,水泥海岸线B,0120,河堤海岸线交界,0107,è�‰åœ°æ°´å²¸,0129,æµ…æ°´è�‰åœ°è·¯,0145,水上废墟A(左上),0108,水上废墟B(å�³ä¸‹),0189 +6=城市高å�°,16,城市高å�°A,0010,城市高å�°B,0076,城市高å�°C,0172,城市高å�°æ–œå�¡è¾¹ç¼˜,0025,城市河堤A,0015,城市河堤B,0078,城市河堤C,0174,城市高å�°ä¿®æ­£,0085,河堤沙滩交界,0083,河堤海岸线交界,0107,河堤è�‰åœ°äº¤ç•ŒA,0146,河堤è�‰åœ°äº¤ç•ŒB,0148,城市水闸,0181,城市瀑布A,0197,城市瀑布B(背é�¢),0199,城市瀑布C,0201 +7=自然山脉,11,山脉,0110,山脉斜å�¡è¾¹ç¼˜,0115,滑å�¡æ‚¬å´–,0056,å�¯æ‘§æ¯�悬崖,0206,水上山脉,0112,山脉瀑布(左下),0030,山脉瀑布(å�³ä¸‹),0049,山脉瀑布(å�³ä¸Š),0204,山脉瀑布(左上),0205,溶洞(左下),0153,溶洞(å�³ä¸‹),0179 +8=山脉边缘,4,城市高å�°æ–œå�¡è¾¹ç¼˜,0025,滑å�¡æ‚¬å´–,0056,山脉斜å�¡è¾¹ç¼˜,0115,å�¯æ‘§æ¯�悬崖,0206 +9=é�“路一览,17,高速公路,0020,高速公路护æ �,0183,高速公路分界+斑马线,0040,高速公路尽头A(自然),0036,高速公路尽头B(城市),0137,高速公路弯é�“,0140,高速公路/土地交界,0141,高速公路/è¡—é�“交界,0190,高速公路斜å�¡,0047,è¡—é�“弯é�“,0016,è¡—é�“分支,0017,è¡—é�“ç›´é�“,0018,è¡—é�“æ–œå�¡,0023,土路弯é�“,0125,土路分支,0126,土路直é�“,0127,土路斜å�¡,0128 +10=éš§é�“,8,高速公路隧é�“(毫无å�µç”¨),0053,高速公路隧é�“,0177,è�‰åœ°éš§é�“,0176,水上隧é�“,0168,é“�路隧é�“,0163,éš§é�“护墙(è�‰åœ°),0054,éš§é�“护墙(城市),0152,水上隧é�“护墙,0186 +11=é“�è·¯,10,é“�路斜å�¡(è�‰åœ°),0162,é“�路斜å�¡(城市),0167,é“�路斜å�¡(泥地),0194,é“�è·¯/公路交汇A,0164,é“�路分支A,0165,é“�路交汇A,0166,é“�è·¯/公路交汇B,0169,é“�路分支B,0170,é“�路交汇B,0171,桥下é“�路修正,0184 +12=å�œè½¦åœº,7,å�œè½¦åœº,0195,å�œè½¦åœºè¾¹ç•Œ,0203,ç›´å�‡æœºå�ª,0191,高速公路,0020,高速公路分界+斑马线,0040,高速公路护æ �,0183,桥下é“�路修正,0184 +13=桥头,5,城市高速公路桥头,0019,高架公路桥头,0158,金门大桥桥头(左上),0121,金门大桥桥头(å�³ä¸Š),0155,高架é“�路桥头,0207 +14=é“�ä¸�网直å�‡æœºå�ª,3,é“�ä¸�网(è�‰åœ°+城市),0119,é“�ä¸�网(城市è�‰åœ°),0130,ç›´å�‡æœºå�ª,0191 + +;By prry +[TerrainLunar] +Enable=yes +Counts=13 +1=地表(野地),11,月é�¢,0000,暗色月é�¢,0013,暗色月é�¢äº¤ç•Œ,0014,月ç�ƒç¢ŽçŸ³,0033,月ç�ƒç¢ŽçŸ³äº¤ç•Œ,0034,碎石月é�¢,0041,碎石月é�¢äº¤ç•Œ,0042,细沙地é�¢,0091,细沙地é�¢ä¿®æ­£,0092,水泥路é�¢,0046,水泥路é�¢äº¤ç•Œ,0039 +2=地表(城市),0 +3=地表(地表装饰),3,陨石å�‘,0082,登月舱,0083,月表裂ç¼�,0084 +4=æ–œå�¡,1,月ç�ƒæ–œå�¡,0009 +5=æ°´é�¢(海岸线,沙滩),2,冰é�¢,0118,结冰水岸,0119 +6=城市高å�°,0 +7=自然山脉,3,山脉,0085,山脉斜å�¡è¾¹ç¼˜,0085,å�¯æ‘§æ¯�悬崖,0113 +8=山脉边缘,2,山脉斜å�¡è¾¹ç¼˜,0085,å�¯æ‘§æ¯�悬崖,0113 +9=é�“路一览,7,高速公路,0105,高速公路尽头,0106,高速公路斜å�¡,0107,月ç�ƒç—•迹弯é�“,0086,月ç�ƒç—•迹分支,0087,月ç�ƒç—•迹直é�“,0088,月ç�ƒç—•迹斜å�¡,0089 +10=éš§é�“,4,星际跑é�“éš§é�“,0102,月ç�ƒéš§é�“,0176,月ç�ƒéš§é�“ä¾§å£�,0101,星际轨é�“éš§é�“,0108 +11=é“�è·¯,3,星际轨é�“æ–œå�¡,0109,星际轨é�“交汇,0164,桥下星际轨é�“修正,0110 +12=桥头,0 +13=太空,4,太空,0115,太空元素,0116,浮空山脉,0117,浮空洞穴,0124 + +;By Nepgear(WF) +[TerrainDesert] +Enable=yes +Counts=11 +1=地表,11,内容1,0000,内容2,0009,内容3,0012,内容4,0013,内容5,0033,内容6,0038,内容7,0041,内容8,0046,内容9,0076,内容10,0107,内容11,0108 +2=æ°´,4,内容1,0012,内容2,0021,内容3,0076,内容4,0081 +3=山脉,5,内容1,0010,内容2,0025,内容3,0054,内容4,0056,内容5,0119 +4=山脉(水é�¢,8,内容1,0082,内容2,0083,内容3,0084,内容4,0085,内容5,0086,内容6,0087,内容7,0109,内容8,0114 +5=公路å�Šå‘¨è¾¹,10,内容1,0019,内容2,0020,内容3,0036,内容4,0040,内容5,0047,内容6,0080,内容7,0104,内容8,0111,内容9,0112,内容10,0123 +6=é“�è·¯,7,内容1,0102,内容2,0103,内容3,0104,内容4,0105,内容5,0106,内容6,0112,内容7,0120 +7=å�„ç§�æ–œå�¡,4,内容1,0009,内容2,0023,内容3,0025,内容4,0047 +8=桥头ã€�尽头ã€�éš§é�“,8,内容1,0019,内容2,0036,内容3,0053,内容4,0073,内容5,0080,内容6,0103,内容7,0113,内容8,0120 +9=弯é�“,3,内容1,0016,内容2,0017,内容3,0018 +10=海岸线,2,内容1,0097,内容2,0098 +11=其它ã€�建筑,2,内容1,0035,内容2,0118 From fa4bcbee306ab95996a8ff76e9ad68ba26ac9357 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Tue, 6 Oct 2026 22:37:28 -0400 Subject: [PATCH 03/24] fix(rn): use direct copy of RN FAData.ini without Phobos features --- Supplementary/RevengeNow/FAData.ini | 10274 +------------------------- Supplementary/RevengeNow/README.md | 23 +- 2 files changed, 29 insertions(+), 10268 deletions(-) diff --git a/Supplementary/RevengeNow/FAData.ini b/Supplementary/RevengeNow/FAData.ini index 2078d472..0f8a2a98 100644 --- a/Supplementary/RevengeNow/FAData.ini +++ b/Supplementary/RevengeNow/FAData.ini @@ -1,865 +1,27 @@ -; FAData.ini - Data file for FinalAlert 2: Yuri's Revenge (tm) +; FAData.ini - Data file for FinalAlert 2: Yuri's Revenge ; This file offers data for FinalAlert 2 +; last change: Zero Fanker, June 1, 2024 ; Debug section: use carefully! [Debug] -;DisplayAllOverlay=true ; Doesn't cripple the overlay list in any way -EnableTrackLogic=true ; Enables Track Logic -;IgnoreSHPImageHeadUnused=true ; Use this *carefully* to make SHP graphics of some mods work that incorrectly have the shadow flag set -AllowTunnels=true ; Enables tunnel editing -AllowUnidirectionalTunnels=true -RenderPlainHouseColor=true - -; Recursive inclusion is not supported -[Include] -0=FAData_RandomPlacement.ini -1=FAData_ObjectBrowser.ini -2=FAData_TriggerAndScript.ini -3=FAData_Customized.ini +;DisplayAllOverlay=Yes ; Doesn¡ät cripple the overlay list in any way +;IgnoreSHPImageHeadUnused=Yes ; Use this *carefully* to make SHP graphics of some mods work that incorrectly have the shadow flag set +EnableTrackLogic=Yes ; Enables Track Logic +AllowTunnels=yes +AllowUnidirectionalTunnels=yes +;ShowBuildingsWithToTile=no +RenderPlainHouseColor=yes [ExtConfigs] -; BOOLEAN ; Enables the redesigned ObjectBrowserView -; BOOLEAN ; å�¯ç”¨é‡�æž„å�Žçš„ ObjectBrowserView -BrowserRedraw=true - -; 0/1 ; Controls how FA2sp guesses a unit house: 0 (default) uses Prerequisite, 1 uses the first Owner -; 0/1 ; 决定 FA2sp 如何猜测å�•ä½�的阵è�? 0(默认)为Prerequisite, 1为第一个Owner -ObjectBrowser.GuessMode=0 - -; INTERGER ; Maximum number of sides to guess; higher values return Other (-1). Default 15 -; INTERGER ; 决定猜测阵è�¥çš„æœ€å¤§å€? 如果超过该值则返回为其ä»?-1), 默认ä¸?15 -ObjectBrowser.GuessMax=15 - -; BOOLEAN ; Remove empty entries from house categories -; BOOLEAN ; 阵è�¥åˆ†ç±»ä¼šæ¸…除空项目 -ObjectBrowser.CleanUp=true - -; BOOLEAN ; Hide houses that cannot be used -; BOOLEAN ; 决定 FA2sp 是å�¦å±�蔽掉ä¸�能使用的所属方 -ObjectBrowser.SafeHouses=true - -; BOOLEAN ; Additionally group structures by foundation size -; BOOLEAN ; 是å�¦ä¼šé¢�外按照建筑大å°�进行分ç±?ObjectBrowser.Foundation=false - -; BOOLEAN ; Use random ore in placing -; BOOLEAN ; 是å�¦åœ¨æ‘†æ”¾çŸ¿çŸ³æ—¶éš�机图åƒ� -ObjectBrowser.Ore.RandomPlacement=false - -; BOOLEAN ; Display extra two types of ores in "Ore and Gems" -; BOOLEAN ; 是å�¦åœ¨â€œé‡‘矿和水晶â€�中支æŒ�é¢�外矿石类型的摆æ”?ObjectBrowser.Ore.ExtraSupport=false - -; BOOLEAN ; Load EditorCategory in rules into object viewer -; BOOLEAN ; æ ¹æ�®å�•ä½�rules中的EditorCategory在对象查看器中分ç±?GridObjectViewer.LoadEditorCategory=true - -; BOOLEAN ; Load ForceSides in rules into object viewer -; BOOLEAN ; æ ¹æ�®å�•ä½�çš„ForceSides在对象查看器中分ç±?GridObjectViewer.LoadForceSides=true - -; BOOLEAN ; Load smudges/terrains/overlays into object viewer based on their ObjectBrowser group -; BOOLEAN ; æ ¹æ�®æ±¡æŸ“/地形对象/覆盖物在物å“�æµ�览器中的分组在对象查看器中分类 -GridObjectViewer.LoadObjectBrowserCategory=true - -; BOOLEAN ; Load the special civilian translation file (fa2civilian.csf) -; BOOLEAN ; 是å�¦åŠ è½½å¯¹å¹³æ°‘å�•ä½?建筑的特殊翻è¯?(fa2civilian.csf) -LoadCivilianStringtable=true - -; BOOLEAN ; Reload supporting files from the map folder without reconfiguring FinalAlert.ini; default false -; BOOLEAN ; 是å�¦ä»Žåœ°å›¾æ–‡ä»¶å¤¹é‡�新读å�–所有文ä»? 而ä¸�需è¦�é‡�新设ç½?FinalAlert.ini, 默认ä¸?false -ReloadGameFromMapFolder=true - -; BOOLEAN ; Reload game INIs when opening map file; default false -; BOOLEAN ; 是å�¦åœ¨æ‰“开地图时é‡�新加载游æˆ�ini, 默认ä¸?false -ReloadIniWhenOpeningMap=false - -; BOOLEAN ; Load game resources from map folder when directly open map; default false -; BOOLEAN ; å�Œå‡»æ‰“开地图文件时,从地图目录加载资æº�æ–‡ä»? 默认ä¸?false -LoadGameFromMapFolder.OnInit=false - -; BOOLEAN ; Read #include sections to load additional INI files (not recommended) -; BOOLEAN ; 读å�– #include 部分以获å�–å…¶ä»?ini(ä¸�推è�? -AllowIncludes=true - -; BOOLEAN ; Load inherited INI sections (not recommended) -; BOOLEAN ; 读å�–继承的INIå°�节(ä¸�推è�? -AllowInherits=false - -; BOOLEAN ; section name of include (yes = $Include(Phobos), no = #include(Ares)) -; BOOLEAN ; includeå°�节的å��ç§?(yes = $Include(Phobos), no = #include(Ares)) -IncludeType=false - -; BOOLEAN ; section name of inherit (yes = $Inherit(Phobos), no = []:[](Ares)) -; BOOLEAN ; inheritå°�节的å��ç§?(yes = $Inherit(Phobos), no = []:[](Ares)) -InheritType=false - -; BOOLEAN ; Allow the += syntax (not recommended) -; BOOLEAN ; 读å�– += (ä¸�推è�? -AllowPlusEqual=true - -; BOOLEAN ; Read Image= from infantry, vehicle, and aircraft art(md) -; BOOLEAN ; 读å�–步兵, 车辆, 飞行å™?art(md) 中的Image= -ArtImageSwap=false - -; BOOLEAN ; When enabled, selecting a CSF text argument opens the CSF browser -; BOOLEAN ; å�¯ç”¨æ­¤åŠŸèƒ½å�Ž, 当触å�‘å�‚数为CSF文本æ—? 点击下拉è�œå�•会弹出CSFæµ�览å™?TutorialTexts.Viewer=true - -; BOOLEAN ; Ask for confirmation when deleting sub-entries of triggers/scripts, etc. -; BOOLEAN ; 删除删除触å�‘/脚本等的å­�æ�¡ç›®æ—¶æ˜¯å�¦éœ€è¦�ç¡®è®?ConfirmDelete.SubEntries=false - -; BOOLEAN ; Clone triggers/teams/taskforces/scripts/AI triggers with an incrementing suffix instead of "Clone" -; BOOLEAN ; å�¯ç”¨æ­¤åŠŸèƒ½å�Ž, å¤�制触å�‘ã€�å°�队ã€�特é�£ã€�脚本ã€�AI触å�‘时,都会在å��称最å�Žæ–°å¢žé€’增编å�·ï¼Œè€Œä¸�是Clone -CloneWithOrderedID=true - -; BOOLEAN ; When creating new triggers/teams/taskforces/scripts/AI triggers, always use an incremented index (max + 1) instead of searching for the first available index -; BOOLEAN ; å�¯ç”¨æ­¤åŠŸèƒ½å�Ž, 创建触å�‘ã€�å°�队ã€�特é�£ã€�脚本ã€�AI触å�‘时,会在当å‰�最大IDå�Žé€’增,而ä¸�是寻找第一个å�¯ç”¨ID -UseSequentialIndexing=false - -; Independent suffixes (such as -TR for trigger) will be assigned when creating triggers, teams, taskforces, scripts, and AI triggers -; å�¯ç”¨æ­¤åŠŸèƒ½å�Ž, 创建触å�‘ã€�å°�队ã€�特é�£ã€�脚本ã€�AI触å�‘时,会分é…�独立的å�Žç¼€ï¼ˆå¦‚触å�‘å�Žç¼€ä¸?TRï¼? -UseSeparateIndexing=false - -; BOOLEAN ; Automatically adjust dropdown widths -; BOOLEAN ; å�¯ç”¨å�? FA2 将自动调整下拉è�œå�•宽åº?AdjustDropdownWidth=true - -; INTERGER ; Character width factor; default 8 -; INTERGER ; å�•个字符å� ç”¨ç©ºé—´, 默认ä¸? -AdjustDropdownWidth.Factor=6 - -; INTERGER ; Maximum dropdown width; default 360 -; INTERGER ; 下拉è�œå�•的最大长åº? 默认ä¸?60 -AdjustDropdownWidth.Max=420 - -; BOOLEAN ; Display the disabled status of the trigger in the dropdown menu of the trigger editor; default true -; BOOLEAN ; 在触å�‘编辑器下拉è�œå�•显示触å�‘çš„ç¦�止状æ€? 默认ä¸?true -DisplayTriggerEnableInfo=true - -; BOOLEAN ; Check whether attached trigger is itself, default true -; BOOLEAN ; 检查下级触å�‘是å�¦æ˜¯è‡ªèº«, 默认ä¸?true -AttachedTriggerIsSelfCheck=true - -; BOOLEAN ; Sort by name instead of ID in trigger/team/taskforce/script/terrain generator editors -; BOOLEAN ; 在触å�‘编辑器ã€�å°�队ã€�特é�£éƒ¨é˜Ÿã€�动作脚本ã€�地形生æˆ�器ä¸? 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº� -SortByLabelName=true - -; BOOLEAN ; Override sorting for teams to use names instead of IDs -; BOOLEAN ; 在排åº�å°�队时, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 -SortByLabelName.Team=true - -; BOOLEAN ; Override sorting for scripts to use names instead of IDs -; BOOLEAN ; 在排åº�脚本时, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 -SortByLabelName.Script=true - -; BOOLEAN ; Override sorting for triggers to use names instead of IDs -; BOOLEAN ; 在排åº�触å�‘æ—¶, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 -SortByLabelName.Trigger=true - -; BOOLEAN ; Override sorting for AI triggers to use names instead of IDs -; BOOLEAN ; 在排åº�AI触å�‘æ—? 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 -SortByLabelName.AITrigger=true - -; BOOLEAN ; Override sorting for taskforces to use names instead of IDs -; BOOLEAN ; 在排åº�特é�£éƒ¨é˜Ÿæ—¶, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 -SortByLabelName.Taskforce=true - -; BOOLEAN ; Override sorting for tags to use names instead of IDs -; BOOLEAN ; 在排åº�标签时, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 -SortByLabelName.Tag=true - -; BOOLEAN ; Disable automatic search for dropdown menus; search only when pressing Enter; default false -; BOOLEAN ; 是å�¦ç¦�止下拉è�œå�•的自动æ�œç´¢ï¼Œè‹¥ç¦�止,需è¦�按Enter执行æ�œç´¢, 默认ä¸?false -SearchCombobox.Disabled=false - -; BOOLEAN ; Allow automatic search for non-parameter (trigger actiontype, eventtype, etc) dropdown menus; default true -; BOOLEAN ; 是å�¦å…�许é�žå�‚数项(触å�‘事件ã€�行为ç§�类等)下拉è�œå�•的自动æ�œç´? 默认ä¸?true -SearchCombobox.AllowNonParams=true - -; BOOLEAN ; Enable auto-search when entering waypoints; default false -; BOOLEAN ; 是å�¦åœ¨ä¸‹æ‹‰è�œå�•中输入路径点时自动弹出æ�œç´¢, 默认ä¸?false -SearchCombobox.Waypoint=false - -; BOOLEAN ; Disable Lua console safety check; default false -; BOOLEAN ; 是å�¦ç¦�用Lua脚本安全检æŸ? 默认ä¸?false -DisableLuaConsoleSafetyCheck=false - -; BOOLEAN ; Display real HP in techno dialogs; default true -; BOOLEAN ; 是å�¦åœ¨å�•ä½�属性窗å�£å†…显示真实血é‡? 默认ä¸?true -DisplayRealHPinTechnoDlg=true - -; COLORREF(R,G,B) ; Outline color when copying; default 255,0,0. Range 0-255 -; COLORREF(R,G,B) ; å¤�制时æ��边的颜色, 默认ä¸?255,0,0. å�–值范围为0-255 -CopySelectionBound.Color=255,0,0 - -; COLORREF(R,G,B) ; Outline color for the hovered cell; default 60,160,60. Range 0-255 -; COLORREF(R,G,B) ; 鼠标所指å�•元格的æ��边的颜色, 默认ä¸?60,160,60. å�–值范围为0-255 -CursorSelectionBound.Color=30,30,255 - -; COLORREF(R,G,B) ; Dashed height indicator color; default 60,60,60. Range 0-255 -; COLORREF(R,G,B) ; 指示高度的虚线的颜色, 默认ä¸?60,60,60. å�–值范围为0-255 -CursorSelectionBound.HeightIndicatorColor=60,60,160 - -; BOOLEAN ; Adjust outline color by height level; default false -; BOOLEAN ; 是å�¦æ ¹æ�®å½“å‰�高度显示ä¸�å�Œçš„æ��边颜è‰? 默认ä¸?false -CursorSelectionBound.AutoHeightColor=true - -; BOOLEAN ; Auto-detect encoding when opening INI and map files -; BOOLEAN ; 是å�¦åœ¨æ‰“å¼€ini和地图文件时自动推断编ç �, 默认ä¸?true -UTF8Support.InferEncoding=true - -; BOOLEAN ; Always save maps using UTF-8 encoding -; BOOLEAN ; 是å�¦æ€»æ˜¯ä»¥UTF8ç¼–ç �ä¿�存地图, 默认ä¸?false -UTF8Support.AlwaysSaveAsUTF8=false - -; BOOLEAN ; Enable automatic map saves -; BOOLEAN ; 是å�¦è‡ªåЍä¿�存地图 -SaveMap.AutoSave=true - -; INTEGER ; Interval between autosaves in seconds; must be >= 30, default 300 -; INTEGER ; 应大于或等于30, 默认值为300, 决定两次自动ä¿�存间隔多少秒钟 -SaveMap.AutoSave.Interval=360 - -; INTEGER ; Number of backups to keep; -1 disables automatic cleanup. Default 10 -; INTEGER ; ä¿�存几个副本, 设置ä¸?1å°†ç¦�用自动删除备份功èƒ? 默认ä¸?0 -SaveMap.AutoSave.MaxCount=10 - -; BOOLEAN ; Only save maps in .map format -; BOOLEAN ; å�ªä»¥.mapæ ¼å¼�ä¿�存地图 -SaveMap.OnlySaveMAP=false - -; Generate preview option when saving multiplayer maps. 0 create new, 1 reuse existing, 2 solid black. Default 0 -; ä¿�存多人游æˆ�地图时生æˆ�预览的默认选项.0 生产新的预览, 1 使用已存在的, 2 使用纯黑预览. 默认ä¸? -SaveMap.DefaultPreviewOptionMP=0 - -; Same as above for singleplayer missions -; å�Œä¸Š, å�•人战役 -SaveMap.DefaultPreviewOptionSP=2 - -; BOOLEAN ; Produce higher fidelity RA2-style previews when generating new previews (multiplayer only) -; BOOLEAN ; 选择生æˆ�新的预览æ—? 生æˆ�更精细的, 原版风格的预览图 (仅支æŒ�多人游æˆ? -SaveMap.BetterMapPreview=true - -; BOOLEAN ; Add an encoding warning comment at the top when saving maps -; BOOLEAN ; ä¿�存地图时在开头添加编ç �警告注é‡?SaveMap.FileEncodingComment=true - -; BOOLEAN ; Keep existing comments when saving maps, ini editor can also save and display comments -; BOOLEAN ; ä¿�存地图时ä¿�留注é‡? ini编辑器也å�¯ä»¥ä¿�存并显示注é‡?SaveMap.KeepComments=true - -; BOOLEAN ; Preserve existing INI section order when saving maps -; BOOLEAN ; ä¿�存地图时维æŒ�已有的 ini å°�节顺åº� -SaveMap.PreserveINISorting=true - -; BOOLEAN ; Preserve existing INI key order within sections when saving maps -; BOOLEAN ; ä¿�存地图时维æŒ�å°�节内已有çš?ini 键值顺åº?SaveMap.PreserveINIKeySorting=true - -; Number of recent maps to remember; range 4-9 -; 记录多少个最近打开地图, å�–值范围为4-9 -RecentFileLimit=9 - -; BOOLEAN ; Enable unlimited waypoints; default false (requires Phobos) -; BOOLEAN ; å�¯ç”¨æ— é™�路径ç‚? 默认ä¸?false (需è¦�Phobos) -ExtWaypoints=true - -; BOOLEAN ; Enable unlimited variables; default false (requires Phobos) -; BOOLEAN ; å�¯ç”¨æ— é™�å�˜é‡�, 默认ä¸?false (需è¦�Phobos) -ExtVariables=true - -; BOOLEAN ; Enable unlimited overlays; switches NewINIFormat to 5 when overlay index exceeds 255. Default false (requires Phobos) -; BOOLEAN ; å�¯ç”¨æ— é™�覆盖ç‰? 当地图中覆盖物索引超è¿?55æ—? 会自动将 NewINIFormat 切æ�¢ä¸?5, 默认ä¸?false (需è¦�Phobos) -ExtOverlays=true - -; BOOLEAN ; Enable 32 facing directions; increases memory usage. Default false -; BOOLEAN ; å�¯ç”¨32å�‘é�¢å�? 会导致内存å� ç”¨å¢žå¤? 默认ä¸?false -ExtFacings=false - -; BOOLEAN ; Allow drag placement for 32 facings by holding Ctrl; otherwise 8 facings. Default false -; BOOLEAN ; å�¯ç”¨32å�‘æ‹–æ‹? 如果该值为 true, 则按ä½?ctrl 对å�•ä½�进行拖拽å�¯é€?2å�? å�¦åˆ™ä¸?å�? 默认ä¸?false -ExtFacings.Drag=false - -; BOOLEAN ; Show a live preview while dragging facings. Default true -; BOOLEAN ; å�¯ç”¨æ‹–拽é�¢å�‘的实时预è§? 默认ä¸?true -ExtFacings.DragPreview=true - -; BOOLEAN ; Allow scroll units into 32 facings when placing; otherwise 8 facings. Default false -; BOOLEAN ; å�¯ç”¨32å�‘的摆放时滚轮调整æœ�å�? å�¦åˆ™ä¸?å�? 默认ä¸?false -ExtFacings.Scroll=false - -; BOOLEAN ; Allow vehicles and aircraft to tilt on slopes. Default false -; BOOLEAN ; 车辆和飞行器在斜å�¡ä¸Šæ˜¾ç¤ºå€¾æ–œå›¾åƒ�, 默认ä¸?false -ExtTilts=false - -; BOOLEAN ; Enable the new MIX loader to reduce memory leaks. Default true -; BOOLEAN ; å�¯ç”¨æ–°çš„ Mix 加载å™? å�¯ä»¥å‡�少内存泄æ¼�, 默认ä¸?true -ExtMixLoader=true - -; BOOLEAN ; Load all in-map objects during map initialization to reduce lag during use. Default false -; BOOLEAN ; 在地图åˆ�始化时加载所有地图内对象, å�¯ä»¥å‡�少使用中å�¡é¡? 默认ä¸?false -LoadObjectsOnInit=false - -; INTEGER ; Number of undo/redo steps; default 64 -; INTEGER ; å�¯ä»¥è¿›è¡Œå¤šå°‘次撤销/é‡�å�š, 默认ä¸?4. -UndoRedoLimit=250 - -; BOOLEAN ; Holding Shift while placing terrain counts as a single history entry. Default true -; BOOLEAN ; 如果该值为 true, 则按ä½�shift放置地形时的å�˜åŠ¨ä»…è®°å½•ä¸€æ¬¡åŽ†å�²è®°å½? 撤销会全部撤销, 默认ä¸?true -UndoRedo.ShiftPlaceTile=true - -; BOOLEAN ; Holding placement when drawing overlays counts as a single history entry. Default true -; BOOLEAN ; 如果该值为 true, 则长按放置覆盖图时的å�˜åŠ¨ä»…è®°å½•ä¸€æ¬¡åŽ†å�²è®°å½? 撤销会全部撤销, 默认ä¸?true -UndoRedo.HoldPlaceOverlay=true - -; BOOLEAN ; Track history for game object edits. Default true -; BOOLEAN ; 如果该值为 true, 记录游æˆ�对象的修改历å�? 默认ä¸?true -UndoRedo.RecordObjects=true - -; BOOLEAN ; Draw a rectangle background for waypoints. Default false -; BOOLEAN ; 为路径点绘制矩形背景, 默认ä¸?false -Waypoint.Background=true - -; COLORREF(R,G,B) ; Waypoint background color. Range 0-255 -; COLORREF(R,G,B) ; 路径点背景的颜色. å�–值范围为0-255 -Waypoint.Background.Color=0,0,255 - -; COLORREF(R,G,B) ; Waypoint number color; default 0,0,255. Range 0-255 -; COLORREF(R,G,B) ; 路径点数字的颜色, 默认ä¸?0,0,255. å�–值范围为0-255 -Waypoint.Color=255,255,0 - -; X,Y offset for waypoint text, default 0,0 -; 路径点文本的X,Yå��æ ‡å��ç§»å€? 默认ä¸?0,0. -Waypoint.Text.ExtraOffset=0,0 - -; BOOLEAN ; Skip game directory validation (including ra2.mix). Default false -; BOOLEAN ; ç¦�用游æˆ�目录检æµ? å�¯ç”¨å�Žå°†ä¸�会检查游æˆ�目录是å�¦æœ‰æ•?(包括ra2.mix), 默认ä¸?false -DisableDirectoryCheck=false - -; COLORREF(R,G,B) ; Base node index color. Range 0-255 -; COLORREF(R,G,B) ; 基地节点索引å�·é¢œè‰? å�–值范围为0-255 -BaseNodeIndex.Color=255,255,0 - -; BOOLEAN ; Draw a rectangle background for index numbers. Default false -; BOOLEAN ; 为索引å�·ç»˜åˆ¶çŸ©å½¢èƒŒæ™¯, 默认ä¸?false -BaseNodeIndex.Background=true - -; COLORREF(R,G,B) ; Background color of basenode index. Range 0-255 -; COLORREF(R,G,B) ; 基地节点索引的背景颜è‰? å�–值范围为0-255 -BaseNodeIndex.Background.Color=60,60,60 - -; BOOLEAN ; Move the tile browser from bottom to right pane. Default false -; BOOLEAN ; 将地形æµ�览器从底部移至å�³ä¾? 默认ä¸?false -VerticalLayout=true - -; BOOLEAN ; Display tile browser as a standalone window. Default false -; BOOLEAN ; 将地形æµ�览器作为独立窗å�£æ˜¾ç¤º, 默认ä¸?false -TileSetBrowserFloating=false - -; BOOLEAN ; Display tile browser tabs in multiple rows to avoid horizontal scrolling. Default false -; BOOLEAN ; 地形æµ�览器标签页多行显示, é�¿å…�横å�‘滚动, 默认ä¸?false -TileSetBrowserMultiLineTabs=false - -; BOOLEAN ; Display object browser as a standalone window. Default false -; BOOLEAN ; 将物å“�æµ�览器作为独立窗å�£æ˜¾ç¤º, 默认ä¸?false -ViewObjectsFloating=false - -; BOOLEAN ; Enable dark theme. Default false -; BOOLEAN ; å�¯ç”¨æš—色模å¼�, 默认ä¸?false -EnableDarkMode=false - -; BOOLEAN ; Dim the map view when dark theme is active. Default false -; BOOLEAN ; å�¯ç”¨æš—色模å¼�æ—? 将地图视图整体å�˜æš? 默认ä¸?false -EnableDarkMode.DimMap=false - -; BOOLEAN ; Follow the system dark theme setting; checked only at startup. Default true -; BOOLEAN ; FA2 将跟éš�系统暗色模å¼? 仅会在å�¯åŠ¨æ—¶æ£€æµ? ä¸�能实时切æ�¢, 默认ä¸?true -AutoDarkMode=true - -; DOUBLE ; Scheduled dark theme start in 24-hour time; decimals allowed. Default -1 -; DOUBLE ; 指定进入暗色模å¼�的时é—? 24å°�æ—¶åˆ? å�¯ä»¥å¡«å°�æ•? 默认ä¸?-1 -AutoDarkMode.StartTime=-1 - -; DOUBLE ; Scheduled dark theme end in 24-hour time; decimals allowed. Default -1 -; DOUBLE ; 指定离开暗色模å¼�的时é—? 24å°�æ—¶åˆ? å�¯ä»¥å¡«å°�æ•? 默认ä¸?-1 -AutoDarkMode.EndTime=-1 - -; BOOLEAN ; Enable high-DPI awareness, Default true -; BOOLEAN ; å�¯ç”¨é«˜DPI感知, 默认ä¸?true -HiDPIAwareness=true - -; BOOLEAN ; Match IsoView default zoom to system scaling when high-DPI awareness is enabled, Default false -; BOOLEAN ; å�¯ç”¨é«?DPI 感知时,使地图视图默认匹é…�系统缩放比ä¾? 默认ä¸?true -HiDPIAwareness.ScaleIsoView=true - -; COLORREF(R,G,B) ; Highlight color for multi-selection cells -; COLORREF(R,G,B) ; 多选å�•元格功能中选中å�—的颜色 -MultiSelectionColor=255,47,255 - -; FLOAT ; Opacity of the overlay color on multi-selected cells -; FLOAT ; 多选å�•元格附加颜色的é€�明åº?MultiSelect.Opacity=0.33 - -; BOOLEAN ; Show all terrain objects in the random tree dialog. Default false -; BOOLEAN ; 在绘制éš�机树木对è¯�框中显示所有地形对è±? 默认ä¸?false -RandomTerrainObjects=false - -; BOOLEAN ; Allocate DirectDraw surfaces in video memory. Default true -; BOOLEAN ; 决定 FA2 是å�¦åœ¨æ˜¾å­˜ä¸­åˆ†é…� DirectDraw surface, 默认ä¸?true -DDrawInVideoMem=true - -; BOOLEAN ; Use emulation mode for DirectDrawCreate. Default false -; BOOLEAN ; 决定 FA2 是å�¦åœ?DirectDrawCreate 中使ç”?emulation mode, 默认ä¸?false -DDrawEmulation=false - -; BOOLEAN ; Support displaying IsoView on non-primary screens. Slight impact on performance. Default true -; BOOLEAN ; 是å�¦æ”¯æŒ�在副å±�上显示绘图界é�¢, 对性能有轻微影å“? 默认ä¸?true -SecondScreenSupport=true - -; DOUBLE ; Maximum render zoom (only in DDraw mode), Default 1.5 -; DOUBLE ; 绘图界é�¢çš„æœ€å¤§ç¼©æ”¾å€�率 (ä»…DDraw模å¼�有效), 默认ä¸?1.5 -DDrawScalingMaximum=1.5 - -; BOOLEAN ; Use bilinear filtering when scaling the render surface. Improves quality at a performance cost. Default true -; BOOLEAN ; 使用å�Œçº¿æ€§æ�’值缩放绘图界é�? 缩放质é‡�更高, 但会影å“�性能, 默认ä¸?true -DDrawScalingBilinear=true - -; BOOLEAN ; Only use bilinear filtering when zooming out. Default false -; BOOLEAN ; 仅在缩å°�界é�¢æ—¶ä½¿ç”¨å�Œçº¿æ€§æ�’å€? 默认ä¸?false -DDrawScalingBilinear.OnlyShrink=false - -; BOOLEAN ; Draw map using graphics card, dramatically improve performance. Default true -; BOOLEAN ; 使用显å�¡åŠ é€Ÿç»˜å›? å�¯ä»¥å¤§å¹…æ��å�‡æ€§èƒ½, 默认ä¸?true -DirectXRendering=true - -; BOOLEAN ; Select graphics rendering API, true is OpenGL 3.3, false is Direct3D 11, default true -; BOOLEAN ; 选择显å�¡æ¸²æŸ“API, true ä¸?OpenGL 3.3, false ä¸?Direct3D 11, 默认ä¸?true -OpenGLRendering=true - -; BOOLEAN ; Precisely calculate the depth relationship of game objects (slower). Default true -; BOOLEAN ; 精确计算游æˆ�对象间的深度关系 (轻微影å“�性能), 默认ä¸?true -PreciseDepthCalculation=true - -; BOOLEAN ; Enable MCP server automatically when the Lua script console starts, allowing connection to LLMs. Default false -; BOOLEAN ; Lua 脚本终端开å�¯æ—¶è‡ªåЍå�¯ç”¨ MCP æœ�务å™? å�¯ä»¥è¿žæŽ¥è‡³å¤§è¯­è¨€æ¨¡åž‹. 默认ä¸?false -MCP.Enable=false - -; INTEGER ; Port of MCP server. Default 19198 -; INTEGER ; MCP æœ�务器的端å�£, 默认ä¸?19198 -MCP.Port=19198 - -; How to integrate (change 19198 to your custom MCP.Port): -; 集æˆ�æ–¹å¼� (å°?9198替æ�¢ä¸ºä½ è‡ªå®šä¹‰çš„MCP.Port): -;{ -; "mcpServers": { -; "FA2spHE (RA2 map editor)": { -; "url": "http://localhost:19198" -; } -; } -;} - -; BOOLEAN ; Do not translate houses to their UIName. Default false -; BOOLEAN ; 决定 FA2 是å�¦*ä¸?将所属方翻译为其 UIName, 默认ä¸?false -NoHouseNameTranslation=false - -; BOOLEAN ; After translation, also display the English house name. Requires NoHouseNameTranslation to be false. Default false -; BOOLEAN ; 决定 FA2 是å�¦åœ¨æ‰€å±žæ–¹ç¿»è¯‘å�Žæ˜¾ç¤ºè‹±æ–‡åŽŸå�? 需è¦�关闭NoHouseNameTranslation, 默认ä¸?false -BetterHouseNameTranslation=true - -; BOOLEAN ; Show warnings instead of errors for new map validation checks. Default false -; BOOLEAN ; 如果该值为 true, 则检查地图的新功能ä¸�会显示错è¯? 而是显示警告, 默认ä¸?false -ExtendedValidationNoError=false - -; BOOLEAN ; Use a 512 value when checking map INI lengths (128 for Vanilla). Default false -; BOOLEAN ; 如果该值为 true, 则检查地图INI长度时会å�?12, 而ä¸�是原版的128, 默认ä¸?false -ExtendedValidationAres=false - -; BOOLEAN ; Do not render structures with HP = 0 and LeaveRubble=no. Default false -; BOOLEAN ; 如果该值为 true, 则ä¸�会渲æŸ?HP = 0 且带æœ?LeaveRubble=no 的建ç­? 默认ä¸?false -HideNoRubbleBuilding=false - -; BOOLEAN ; Enforce strict NewTheater logic; structures without art are hidden. Default false -; BOOLEAN ; 如果该值为 true, 则å�¯ç”¨ä¸¥æ ?NewTheater 逻辑, 未找到对应图åƒ�的建筑将ä¸�会显ç¤? 默认ä¸?false -UseStrictNewTheater=true - -; INTEGER ; Choose logic for reading the second art letter: 0 = Vanilla (G,N,C,Y), 1 = Ares (any letter). Default 1 -; INTEGER ; 设置读å�–建筑图åƒ�第二ä½�å­—æ¯�的逻辑, 0 = å°¤å¤�逻辑(G, N, C, Yå¼€å¤?, 1 = Ares逻辑(ä»»æ„�å­—æ¯�å¼€å¤?, 默认ä¸?1 -NewTheaterType=1 - -; BOOLEAN ; Prevent placing overlapping structures; ignores StructureOverlappingCheckIgnores entries. Default false -; BOOLEAN ; 如果该值为 true, 则ä¸�能摆放é‡�å� å»ºç­? 忽略StructureOverlappingCheckIgnores中的建筑, 默认ä¸?false -PlaceStructure.OverlappingCheck=true - -; BOOLEAN ; Auto-fill the Upgrade count. Default false -; BOOLEAN ; 如果该值为 true, 则自动填写Upgradeæ•°é‡�, 默认ä¸?false -PlaceStructure.AutoUpgrade=true - -; BOOLEAN ; Apply full health when an Upgrade is present to match in-game behavior. Default false -; BOOLEAN ; 如果该值为 true, 建筑存在Upgradeæ—? 自动将血é‡�设置为满血, 符å�ˆæ¸¸æˆ�内表çŽ? 默认ä¸?false -PlaceStructure.UpgradeStrength=true - -; BOOLEAN ; Upgrades can be directly placed onto buildings. Default false -; BOOLEAN ; 如果该值为 true, å�¯ä»¥ç›´æŽ¥å�‘建筑放置加载物, 默认ä¸?false -PlaceStructure.PlaceUpgrade=true - -; BOOLEAN ; When "Default Lighting" is selected, adjust unit RGB values. Default false -; BOOLEAN ; 选择光照沙盒çš?默认光照"æ—? 是å�¦è°ƒæ•´å»ºç­‘, 步兵, 载具, 飞行器的RGBå€? 默认ä¸?false -LightingPreview.MultUnitColor=false - -; BOOLEAN ; Tint the tileset browser using the lighting sandbox settings. Default false -; BOOLEAN ; 是å�¦æŒ‰ç…§å…‰ç…§æ²™ç›’的光照é‡�新渲染地形æµ�览器图åƒ�. 默认ä¸?false -LightingPreview.TintTileSetBrowserView=true - -; BOOLEAN ; Make the arrangement of images in tileset browser more compact. 默认ä¸?true -; BOOLEAN ; 紧凑排列地形æµ�览器的图åƒ�. 默认ä¸?true -TileSetBrowserViewCompactArrange=true - -; BOOLEAN ; Display the localsize border (blue outline) on the minimap. Default false -; BOOLEAN ; 在å°�地图中显示å�¯è§†åœ°å›¾è¾¹ç•?è“�色边框). 默认ä¸?false -ShowMapBoundInMiniMap=false - -; BOOLEAN ; Place the first infantry in subcell 4 (bottom) like the game. Default false -; BOOLEAN ; 如果该值为 true, å�•元格中第一个放置的步兵ä½�于最下方,å�³4å�·subcell, 默认ä¸?false -InfantrySubCell.GameDefault=true - -; BOOLEAN ; Select infantry by cursor position within the cell instead of cycling all. Default false -; BOOLEAN ; 如果该值为 true, 在编辑步兵时会根æ�®é¼ æ ‡åœ¨å�•元格中的相对ä½�置选择步兵, 而ä¸�是é��历全éƒ? 默认ä¸?false -InfantrySubCell.Edit=true - -; BOOLEAN ; When only one infantry in a cell, still honor cursor position. Default false selects the only infantry regardless of cursor position -; BOOLEAN ; 如果该值为 true, 当å�•元格内å�ªæœ‰ä¸€ä¸ªæ­¥å…µæ—¶, ä»�然会判断鼠标的相对ä½�ç½®, false 时会始终选å�–该步å…? 默认ä¸?false -InfantrySubCell.Edit.Single=false - -; BOOLEAN ; When dragging infantry, place them based on cursor position. Default false -; BOOLEAN ; 如果该值为 true, 在拖拽步兵时,会考虑鼠标的相对ä½�置放ç½? 默认ä¸?false -InfantrySubCell.Edit.Drag=true - -; BOOLEAN ; When placing infantry, place them based on cursor position. Default false -; BOOLEAN ; 如果该值为 true, 在放置步兵时,会考虑鼠标的相对ä½�置放ç½? 默认ä¸?false -InfantrySubCell.Edit.Place=true +; Preserve existing INI section order when saving maps +SaveMap.PreserveINISorting=true -; BOOLEAN ; Lock infantry in the center to match InfantrySubCell.GameDefault, otherwise depend on cursor position. Default false -; BOOLEAN ; 如果该值为 true, 会固定å�•元格中间步兵的ä½�ç½®å�Œ InfantrySubCell.GameDefault 一è‡? å�¦åˆ™æ ¹æ�®é¼ æ ‡ä¸Šä¸‹ä½�置决定. 默认ä¸?false -InfantrySubCell.Edit.FixCenter=false +; Preserve existing INI key order within sections when saving maps +SaveMap.PreserveINIKeySorting=true -; BOOLEAN ; Consider OccupationBits of terrain objects when placing infantry. Default false -; BOOLEAN ; 如果该值为 true, 在放置步兵时会考虑地形对象对å�•元格的å� ç”? 默认ä¸?false -InfantrySubCell.OccupationBits=true +; Keep existing comments when saving maps +SaveMap.KeepComments=true -; STRING ; Default infantry parameterss matching the INI section -; STRING ; 摆放步兵的默认å�‚æ•? 顺åº�与INIå°�节一è‡?DefaultInfantryProperty=House,ID,256,X,Y,Subcell,Guard,64,None,0,-1,0,0,0 - -; STRING ; Default vehicle parameterss matching the INI section -; STRING ; 摆放车辆的默认å�‚æ•? 顺åº�与INIå°�节一è‡?DefaultUnitProperty=House,ID,256,X,Y,64,Guard,None,0,-1,0,-1,0,0 - -; STRING ; Default aircraft parameterss matching the INI section -; STRING ; 摆放飞行器的默认å�‚æ•°, 顺åº�与INIå°�节一è‡?DefaultAircraftProperty=House,ID,256,X,Y,64,Guard,None,0,-1,0,0 - -; STRING ; Default buildiing parameterss matching the INI section -; STRING ; 摆放建筑的默认å�‚æ•? 顺åº�与INIå°�节一è‡?DefaultBuildingProperty=House,ID,256,X,Y,0,None,0,0,1,0,0,None,None,None,1,0 - -; STRING ; Supported associable map file formats -; STRING ; 支æŒ�å…³è�”的地图文件格å¼?SupportedFormats=map,mpr,yrm,mmx,yro - -; BOOLEAN ; Force CString allocations on the stack for stability at minor perf cost. Default true -; BOOLEAN ; 强制CString内存在堆上分é…? å�¯ä»¥æ��å�‡ç¨³å®šæ€? 但å�¯èƒ½è½»å¾®é™�低效çŽ? 默认ä¸?true -StringBufferStackAllocation=true - -; BOOLEAN ; Use a stricter exception filter that catches C++ EH exceptions. Default false -; BOOLEAN ; å�¯ç”¨æ›´ä¸¥æ ¼çš„错误æ�•获, 会æ�•èŽ?C++ EH exception, 默认ä¸?false -StrictExceptionFilter=false - -; BOOLEAN ; Use the modern toolbar cameos. Default true -; BOOLEAN ; 是å�¦ä½¿ç”¨æ–°çš„工具æ �图æ ? 默认ä¸?true -UseNewToolBarCameo=true - -; BOOLEAN ; Skip the tips of the day dialog. Default false -; BOOLEAN ; 是å�¦ä¸�显示今日æ��示窗å�£ï¼Œé»˜è®¤ä¸?false -SkipTipsOfTheDay=false - -; BOOLEAN ; Prevent brush tools (raise/lower/flatten) from changing brush size automatically. Default false -; BOOLEAN ; 在选择地形工具(抬å�‡ã€�é™�低ã€�平整地å½?æ—? 是å�¦è·³è¿‡æ”¹å�˜ç¬”刷大å°�, 默认ä¸?false -SkipBrushSizeChangeOnTools=true - -; BOOLEAN ; Remember brush sizes for mouse commands and restore them when switching. Default false -; BOOLEAN ; 记忆å�„æ“�作的笔刷大å°�,并在切æ�¢æ—¶è‡ªåŠ¨è¿˜åŽŸ, 默认ä¸?false -RecordBrushSizeHistory=false - -; BOOLEAN ; When placing tiles, skip hidden cells. Default false -; BOOLEAN ; 在放置地形ã€�生æˆ�海岸ã€�抬å�‡åœ°è¡¨ã€�粘贴地形时, 是å�¦è·³è¿‡è¢«éš�è—�çš„å�•å…ƒæ ? 默认ä¸?false -PlaceTileSkipHide=true - -; BOOLEAN ; Enable Veinhole Monster logic to display corresponding overlays in the object browser and terrain browser. Default false -; BOOLEAN ; å�¯ç”¨æ³°ä¼¯åˆ©äºšè—¤è”“(蔓孔)逻辑, 在物å“�æµ�览器ã€�地形æµ�览器中显示对应的覆盖ç‰? 默认ä¸?false -EnableVeinholeLogic=false - -; BOOLEAN ; Hide team/taskforce/script sections in the INI editor. Default false -; BOOLEAN ; 在INI编辑器中, 是å�¦å¿½ç•¥å°�队ã€�特é�£ã€�脚本å°�èŠ? 默认ä¸?false -INIEditor.IgnoreTeams=true - -; BOOLEAN ; When holding Ctrl for fill, treat LAT tiles as the same group. Default true -; BOOLEAN ; 按ä½�ctrl填充地形æ—? 是å�¦å�Œæ—¶å¡«å……目标地形的LAT, 默认ä¸?true -FillArea.ConsiderLAT=true - -; BOOLEAN ; When holding Ctrl for fill, treat all water tiles as as the same group. Default true -; BOOLEAN ; 按ä½�ctrl填充地形æ—? 将所有水é�¢è§†ä¸ºä¸€ç±? 默认ä¸?true -FillArea.ConsiderWater=true - -; BOOLEAN ; When holding Ctrl for fill, treat sub tile blocks as as the same group. Default true -; BOOLEAN ; 按ä½�ctrl填充地形æ—? 将整个地形的å­�地形å�—视作一ç±? 默认ä¸?true -FillArea.ConsiderWholeTile=true - -; BOOLEAN ; Render object shadows in the map view. Default true -; BOOLEAN ; 是å�¦æ˜¾ç¤ºæ‰€æœ‰æ¸¸æˆ�对象的阴影, å¼€å�¯æ—¶å�¯ä»¥åœ¨å›¾å±‚中手动关闭, 默认ä¸?true -InGameDisplay.Shadow=true - -; BOOLEAN ; Display voxel shadow on the ground instead of in the bottom. Default false -; BOOLEAN ; 在地é�¢ä¸Šè€Œä¸�是体素的最底部渲染阴影, 默认ä¸?false -InGameDisplay.Shadow.OnGround=false - -; BOOLEAN ; Show deploy/unload images of units. Default true -; BOOLEAN ; 是å�¦å¯¹å�¯éƒ¨ç½²çš„Unload状æ€�çš„å�•ä½�显示部署图åƒ�, ä¸�会考虑å�‘生了å�•ä½�转æ�¢çš„å�•ä½�, 默认ä¸?true -InGameDisplay.Deploy=true - -; BOOLEAN ; Draw water images of units in water. Default true -; BOOLEAN ; 是å�¦å¯¹æ°´ä¸­çš„æ­¥å…µæˆ–载具显示水中图åƒ? ä¸�会考虑å�‘生了å�•ä½�转æ�¢çš„å�•ä½�, 默认ä¸?true -InGameDisplay.Water=true - -; BOOLEAN ; Support Phobos damaged art images. Default true -; BOOLEAN ; 是å�¦æ”¯æŒ� Phobos çš„å�•ä½�伤残更æ�¢å›¾åƒ�功èƒ? 默认ä¸?true -InGameDisplay.Damage=true - -; BOOLEAN ; Render hover unit a little higher. Default true -; BOOLEAN ; 是å�¦å°†æ‚¬æµ®å�•ä½�渲染的更高一äº? 默认ä¸?true -InGameDisplay.Hover=true - -; BOOLEAN ; Display alphaimages for terrain objects and buildings; can disable manually if needed. Default true -; BOOLEAN ; 是å�¦æ˜¾ç¤ºå»ºç­‘物和地形对象çš?AlphaImage, å¼€å�¯æ—¶å�¯ä»¥åœ¨å›¾å±‚中手动关闭, 默认ä¸?true -InGameDisplay.AlphaImage=true - -; BOOLEAN ; Render "OnBridge" unit a little higher. Default true -; BOOLEAN ; 是å�¦å°†â€œåœ¨æ¡¥æ¢�上â€�çš„å�•ä½�渲染的更高一äº? 默认ä¸?true -InGameDisplay.Bridge=true - -; BOOLEAN ; Respect animation offsets in art when rendering. Default true -; BOOLEAN ; 是å�¦æ ¹æ�®ç´ æ��ä¸?art 设置调整建筑动画图层, 在少数情况下å�¯èƒ½ä¸Žæ¸¸æˆ�内ä¸�一è‡? 默认ä¸?true -InGameDisplay.AnimAdjust=true - -; BOOLEAN ; Show cloaked units as transparent. Default false -; BOOLEAN ; éš�å½¢å�•ä½�是å�¦å�Šé€�明显示, 默认ä¸?false -InGameDisplay.Cloakable=false - -; BOOLEAN ; Display remapble colors of wall overlays by nearest building. Default false -; BOOLEAN ; æ ¹æ�®è·�离最近的建筑, 显示围墙覆盖物的所属色, 默认ä¸?false -InGameDisplay.RemapableOverlay=false - -; BOOLEAN ; Display invisible bridge overlays in numbers. Default false -; BOOLEAN ; 以数字显示ä¸�å�¯è§�的桥æ¢�覆盖物 , 默认ä¸?false -DisplayBridgeOverlay=false - -; BOOLEAN ; Display default images for vehicles, infantry, and aircraft without images, names are: FA2DEFAULT_AIRCRAFT, FA2DEFAULT_INFANTRY, FA2DEFAULT_UNIT. Default false -; BOOLEAN ; 为没有图åƒ�的车辆ã€�步兵与飞行器显示缺çœ�图åƒ? å��ç§°ä¸? FA2DEFAULT_AIRCRAFT, FA2DEFAULT_INFANTRY, FA2DEFAULT_UNIT, 默认ä¸?false -UseDefaultUnitImage=true - -; BOOLEAN ; Display default images for techno attachments without images. Default false -; BOOLEAN ; 为没有图åƒ�的附加å�•ä½�显示缺çœ�图åƒ�, 默认ä¸?false -UseDefaultUnitImage.TechnoAttachment=false - -; FLOAT ; Voxel light vector as X,Y,Z corresponding to game. Positive numbers are illuminated from the direction of the axis(â†? â†? â†?. Default 0.05,1,0.2 -; FLOAT ; VXL渲染的光æº�æ–¹å�? æ ¼å¼�ä¸?X,Y,Z, 正数为从数轴方å�‘ç…§å°„(â†? â†? â†?, 默认ä¸?0.05,1,0.2 -LightingSource=0.05,1,0.2 - -; INTERGER ; Maximum value of overlay data. Default 60 -; INTERGER ; 覆盖物数æ�®çš„æœ€å¤§å€? 默认ä¸?60 -OverlayDataLimit=256 - -; BOOLEAN ; Hide ExtraImage when Flat To Ground Mode enabled. Default false -; BOOLEAN ; å¼€å�¯å¹³é�¢æ˜¾ç¤ºæ—¶, 是å�¦éš�è—�地形çš?ExtraImage, 默认ä¸?false -FlatToGroundHideExtra=false - -; BOOLEAN ; Render objects outside of map bounds. Default false -; BOOLEAN ; 是å�¦æ˜¾ç¤ºåœ°å›¾è¾¹ç•Œå¤–的游æˆ�对象, 默认ä¸?false -DisplayObjectsOutside=false - -; BOOLEAN ; Show options for technos (Phobos). Default false -; BOOLEAN ; 科技类型窗å�£åœ¨å¤šäººåœ°å›¾ä¸­æ˜¾ç¤º Phobos 支æŒ�çš? 所属方, 默认ä¸?false -PlayerAtXForTechnos=false - -; BOOLEAN ; Show options for triggers (Phobos). Default false -; BOOLEAN ; 触å�‘编辑器窗å�£åœ¨å¤šäººåœ°å›¾ä¸­æ˜¾ç¤?Phobos 支æŒ�çš? 所属方, 默认ä¸?false -PlayerAtXForTriggers=false - -; BOOLEAN ; Monitor map files for external edits. Default true -; BOOLEAN ; 检测地图文件是å�¦è¢«å¤–部修改. 默认ä¸?true -FileWatcher=true - -; INTERGER ; Number of distance ruler history entries. Default 5 -; INTERGER ; è·�离标尺记录的历å�²æ•°é‡? 默认ä¸?5 -DistanceRuler.Records=5 - -; INTERGER ; Font size for money on map and property viewer. Default 18 -; INTERGER ; 资æº�总é‡�与属性查看字体的大å°�, 默认ä¸?18 -DisplayTextSize=18 - -; INTERGER ; Tree view cameo size; default 32 (min 16, max 64) -; INTERGER ; 物å“�æµ�览器图标的大å°�, 默认ä¸?32, 最å°?16, 最å¤?64 -TreeViewCameo.Size=32 - -; BOOLEAN ; Whether or not draw celltag icons translucently. Default false -; BOOLEAN ; 是å�¦å�Šé€�明绘制å�•元标记图标. 默认ä¸?false -DrawCelltagTranslucent=true - -; BOOLEAN ; Whether or not force Neutral and Special houses to use the light gray color in skirmish. Default true -; BOOLEAN ; 是å�¦åœ¨å¤šäººåœ°å›¾ä¸­, 强制 Neutral å’?Special 所属方使用浅ç�°è‰²é¢œè‰? 默认ä¸?true -ForceNeutralSpecialColor=true - -; BOOLEAN ; Map house color variants to their corresponding solid colors. Default false -; BOOLEAN ; å°†å�•ä½�所属色å�˜ä½“映射为纯è‰? 默认ä¸?false -UnifyHouseColors=false - -; COLORREF(R,G,B) ; Color in waypoint flag to be replaced in "Set waypoint color". Default 0,255,0. Range 0-255 -; COLORREF(R,G,B) ; 在“设置路径点颜色â€�中替æ�¢çš„路径点旗帜颜色, 默认ä¸?0,255,0. å�–值范围为0-255 -DisplayColor.Waypoint=0,255,0 - -; COLORREF(R,G,B) ; Color in celltag icon to be replaced in "Set celltag color". Default 255,0,0. Range 0-255 -; COLORREF(R,G,B) ; 在“设置å�•元标记颜色â€�中替æ�¢çš„å�•元标记图标颜è‰? 默认ä¸?255,0,0. å�–值范围为0-255 -DisplayColor.Celltag=255,0,0 - -; COLORREF(R,G,B) ; Distance ruler color. Default 255,0,0. Range 0-255 -; COLORREF(R,G,B) ; è·�离标尺线段的颜è‰? 默认ä¸?255,0,0. å�–值范围为0-255 -DistanceRuler.Color=255,0,0 - -; COLORREF(R,G,B) ; Boundary color for terrain generator. Default 255,255,0. Range 0-255 -; COLORREF(R,G,B) ; 地形生æˆ�器设置范围的颜色, 默认ä¸?255,255,0. å�–值范围为0-255 -TerrainGeneratorColor=255,255,0 - -; COLORREF(R,G,B) ; Player posistion indicator color for map renderer. Default 255,0,0. Range 0-255 -; COLORREF(R,G,B) ; 地图渲染器游æˆ�者ä½�置的颜色, 默认ä¸?255,0,0. å�–值范围为0-255 -PlayerLocation.Color=255,0,0 - -; INTEGER ; Maximum distance displayed by range overlays; very large values reduce performance. Default 50 -; INTEGER ; 范围属性最大显示的è·�离, 过大的范围会导致显示å�¡é¡¿, 默认ä¸?0 -RangeBound.MaxRange=50 - -; COLORREF(R,G,B) ; Primary weapon range color. Default 0,255,255. Range 0-255 -; COLORREF(R,G,B) ; 主武器射程范围的颜色, 默认ä¸?0,255,255. å�–值范围为0-255 -WeaponRangeBound.Color=0,255,255 - -; COLORREF(R,G,B) ; Primary minimum range color. Default 0,200,200. Range 0-255 -; COLORREF(R,G,B) ; 主武器最å°�射程范围的颜色, 默认ä¸?0,200,200. å�–值范围为0-255 -WeaponRangeMinimumBound.Color=0,200,200 - -; COLORREF(R,G,B) ; Secondary weapon range color. Default 0,255,130. Range 0-255 -; COLORREF(R,G,B) ; 副武器射程范围的颜色, 默认ä¸?0,255,130. å�–值范围为0-255 -SecondaryWeaponRangeBound.Color=0,255,130 - -; COLORREF(R,G,B) ; Secondary minimum range color. Default 0,200,100. Range 0-255 -; COLORREF(R,G,B) ; 副武器最å°�射程范围的颜色, 默认ä¸?0,200,100. å�–值范围为0-255 -SecondaryWeaponRangeMinimumBound.Color=0,200,100 - -; COLORREF(R,G,B) ; Death weapon range color. Default 255,127,39. Range 0-255 -; COLORREF(R,G,B) ; 自æ�€æ­¦å™¨èŒƒå›´çš„颜è‰? 默认ä¸?255,127,39. å�–值范围为0-255 -DeathWeaponRangeBound.Color=255,127,39 - -; COLORREF(R,G,B) ; Gap generator range color. Default 0,0,255. Range 0-255 -; COLORREF(R,G,B) ; 黑幕产生范围的颜è‰? 默认ä¸?0,0,255. å�–值范围为0-255 -GapRangeBound.Color=0,0,255 - -; COLORREF(R,G,B) ; Sensor array range color. Default 255,0,255. Range 0-255 -; COLORREF(R,G,B) ; éš�形检测范围的颜色, 默认ä¸?255,0,255. å�–值范围为0-255 -SensorsRangeBound.Color=255,0,255 - -; COLORREF(R,G,B) ; Cloak generator range color. Default 255,0,0. Range 0-255 -; COLORREF(R,G,B) ; éš�形范围的颜è‰? 默认ä¸?255,0,0. å�–值范围为0-255 -CloakRangeBound.Color=255,0,0 - -; COLORREF(R,G,B) ; Psychic sensor range color. Default 255,255,0. Range 0-255 -; COLORREF(R,G,B) ; 心ç�µæ„Ÿåº”范围的颜è‰? 默认ä¸?255,255,0. å�–值范围为0-255 -PsychicRangeBound.Color=255,255,0 - -; COLORREF(R,G,B) ; Guard area range color. Default 0,255,0. Range 0-255 -; COLORREF(R,G,B) ; 区域警戒范围的颜è‰? 默认ä¸?0,255,0. å�–值范围为0-255 -GuardRangeBound.Color=0,255,0 - -; COLORREF(R,G,B) ; Sight range color. Default 128,128,128. Range 0-255 -; COLORREF(R,G,B) ; 视野范围的颜è‰? 默认ä¸?128,128,128. å�–值范围为0-255 -SightRangeBound.Color=128,128,128 - -; COLORREF(R,G,B) ; Designator range color. Default 128,128,128. Range 0-255 -; COLORREF(R,G,B) ; 指示者范围的颜色, 默认ä¸?34,177,76. å�–值范围为0-255 -DesignatorRangeBound.Color=34,177,76 - -; COLORREF(R,G,B) ; Inhibitor range color. Default 128,128,128. Range 0-255 -; COLORREF(R,G,B) ; 抑制者范围的颜色, 默认ä¸?204,46,49. å�–值范围为0-255 -InhibitorRangeBound.Color=204,46,49 - -; BOOLEAN ; Apply elevation modifiers to weapon range preview; low accuracy. Default false -; BOOLEAN ; 计算武器射程时,是å�¦è€ƒè™‘高度对射程的影å“�, 精确度较ä½? ä»…ä¾›å�‚è€? 默认ä¸?false -WeaponRangeBound.SubjectToElevation=true - -; BOOLEAN ; Draw all ranges except for weapons subject to elevation using ellipses. Default true -; BOOLEAN ; 使用椭圆绘制除了å�—高度影å“�的武器外的所有范å›? 默认ä¸?false -RangeBound.DrawEllipse=true - -; BOOLEAN ; Show outlines by default when pasting. Default false -; BOOLEAN ; 粘贴地形æ—? 是å�¦é»˜è®¤æ˜¾ç¤ºæ��è¾¹, 默认ä¸?false -PasteShowOutline=true - -; Mix overrides, yes = relative path to FA2 installed folder -; Can be used to override game content to show in FA2 -; First one has highest loading priority -;[ExtraMixes] - -; Encrypted packages, yes = relative path to FA2 installed folder -; Can be used to override game content to show in FA2 -; First one has highest loading priority -; How to use, please refer to documentation -;[ExtraPackages] -;data.rpck=false - -; Custom resource directories, read in registration order -; Value: yes/true = relative path to FA2 installed folder, no/false = relative path to game folder -; Can be used to override game content to show in FA2 -; First one has highest loading priority -; Priority: lower than Resources\HighPriority\, higher than the game path -;[ExtraDirectories] -;voxels=false - -; Stringtable overrides, yes = relative path to FA2 installed folder -; Can be used to override stringtables to show in FA2 -; Support .csf, .llf, .ecs, and .ini (exported by Ra2CsfToolsGUI) -;[ExtraStringtables] - -; Custom nested mix files, format: nested mix = parent mix -; Can be used to override game content to show in FA2 -; First one has highest loading priority -;[NestedMixes] - -; Ignored mix files, format: index = ignored mix -;[IgnoredMixes] - -;[Filenames] -;EVA=eva.ini -;EVAYR=evamd.ini -;Sound=sound.ini -;SoundYR=soundmd.ini -;Theme=theme.ini -;ThemeYR=thememd.ini -;AI=ai.ini -;AIYR=aimd.ini -;RulesYR=rulesmd.ini -;Rules=rules.ini -;ArtYR=artmd.ini -;Art=art.ini -;TemperateYR=temperatmd.ini -;Temperate=temperat.ini -;SnowYR=snowmd.ini -;Snow=snow.ini -;UrbanYR=urbanmd.ini -;Urban=urban.ini -;UrbanNYR=urbannmd.ini -;LunarYR=lunarmd.ini -;DesertYR=desertmd.ini -;MapselYR=mapselmd.ini -;MixExtension=md - -; Contains a list of theater names, only the -; existing 6 names are valid. If not listed -; then all default 6 theaters are used. -; The second item separated by commas -; represents the name saved in the map file -; under [Map] -> Theater=. [Customizations] AnimationListID=OrderedAnimations DefaultGameMode=standard @@ -884,11 +46,15 @@ SaveMapExtensionDefault=.map [GameModes] standard=±ê×¼×÷Õ½ teamgame=С¶ÓÁªÃË +freeall=»ìÕ½ cooperative=ºÏ×÷ÈÎÎñ duel=ÇÀµØÅÌ navalwar=º£Õ½ meatgrind=ÉúËÀ¶· megawealth=¾Þ¸» +manymoney=ÌÔ½ðÈÈ +fortresswar=¹¥³Ç°ÎÕ¯ +testside=¿ª·¢ÕßÀÖÔ° airwar=(ÎÞЧ)¿ÕÕ½ nukewar=(ÎÞЧ)ºËÕ½ @@ -2284,9404 +1450,4 @@ ExtraValueType=0 [SpecialOverlayRA2] -[IgnoreTerrainRA2] - -[Sides] -0=Allied -1=Soviet -2=Yuri -3=°²ËþÁÐÐÇ -4=¿Æ¼¼¹¦Äܽ¨Öþ,1 -5=µØ±ê½¨ÖþÀà,1 -6=´ó³ÇÊн¨Öþ,1 -7=ÖÐС³ÇÊн¨Öþ,1 -8=´åׯ½¨Öþ,1 -9=¹¤Òµ½¨Öþ,1 -10=СÐÍ×°Êΰڼþ,1 -11=ÖÐÁ¢ÌØÊ⽨Öþ,1 - -[GameModes] -standard=±ê×¼×÷Õ½ -teamgame=С¶ÓÁªÃË -cooperative=ºÏ×÷ÈÎÎñ -duel=ÇÀµØÅÌ -navalwar=º£Õ½ -meatgrind=ÉúËÀ¶· -megawealth=¾Þ¸» -airwar=(ÎÞЧ)¿ÕÕ½ -nukewar=(ÎÞЧ)ºËÕ½ - -[ForceUnitPalettePrefix] -0=TIBTRE - -[ForceIsoPalettePrefix] - -;===ScriptTemplates=== -;X=UIName, Name, Count, Key 1 ,Value 1 , Key 2 ,Value 2 , ..., Key Count ,Value Count -;EMPTY will be considered as a CONST, with it FA2Copy will ignore the value - -;By prry -[ScriptTemplates] -DefaultName=ĬÈÏ -Counts=5 -1=Á½µã¼äѲÂß,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 -2=Èýµã¼äѲÂß,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 -3=Ëĵã¼äѲÂß,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 -4=×°ÔØ²¿¶ÓÐ¶ÔØ¹¥»÷,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 -5=×°ÔØÈëÔØ¾ß²¢¹¥»÷,New load script,3,21,EMPTY,14,EMPTY,0,0 - -;===TeamTemplates=== -;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 -;Checkbox order matrix: -; |1 6 11 | -; |2 7 12 16| -; |3 8 13 17| -; |4 9 14 18| -; |5 10 15 19| - -;By Sandman -[TeamTemplates] -DefaultName=ĬÈÏ -Counts=3 -1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 -2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 -3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 - -; not NOSURFACES: -;[BuildingVoxelTurretsRA2] -;GTGCANX=-1 -;GTGCANY=0;-6 -;NASAMY=0;2 -;NALASRX=0 -;NALASRY=0;-3 -;NAFLAKY=10;10 - -[VehicleVoxelTurretsRA2Disabled] -;DISKX=-10 -;DISKY=-10 -;YTNKY=-30 -SREFX=4 -SREFY=3 - -[IgnoreArtImage] -BFRT=1 -CAML=1 - -[IgnoreSuperAnim1] - - -[IgnoreSuperAnim2] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim3] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim4] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -; fix for building list: -[GTGCAN] -AIBasePlanningSide=0 - -[YACOMD] -AIBasePlanningSide=2 - -[YADEPT] -AIBasePlanningSide=0 - -[NASPYB] -AIBasePlanningSide=2 - -; rename list for objects. ObjectID=StringID -[Rename] - -[MovieList] -Start=66; Anything below will not be listed! - -[StdBrushSize] -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 -WaterSet=2 - -[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 - -; SlopeSetPieces for cliffs have a specific direction. -; used for AutoLevel logic -; CURRENTLY IGNORED -[SlopeSetPiecesDirections] -Count=10 -0=Right_1 -1=Left_1 -2=Top_1 -3=Bottom_1 -4=Right_2 -5=Left_2 -6=Left_2 -7=Bottom_2 -8=Top_2 -9=Top_2 - -[LUNARLimits] -TreeMax=999 -TreeMin=999 - -[URBANLimits] -TreeMax=999 -;TreeMax=27 - -[TEMPERATELimits] -TreeMax=999 -;TreeMax=27 - -[SNOWLimits] -TreeMax=999 -;TreeMax=27 - -[NEWURBANLimits] -TreeMax=999 -;TreeMax=27 - -[DESERTLimits] -TreeMin=30 -TreeMax=999 - -; tileset ini overwritings -; only used by FinalAlert -[IgnoreSetTEMPERATE] -0=77 -1=78 -2=79 - -[IgnoreSetSNOW] -0=8 -1=46 - -[IgnoreSetURBAN] -0=49 -1=50 -2=51 -5=56 -7=30 -8=91 -9=92 -10=93 -11=94 -12=95 -13=96 -14=97 -15=98 -16=99 -17=100 -;3=53; Tunnel -;4=54; Tunnel Side -;6=73; Dirt Tunnel - -[IgnoreSetNEWURBAN] -0=101 - -[IgnoreSetDESERT] -0=19 -1=54 -2=53 -3=56 -4=73 -5=80 - -[IgnoreSetLUNAR] - -[UseSetTEMPERATE] -0=57 - -[UseSetSNOW] -[UseSetURBAN] - -[NewUrbanInfo] -Morphable2=114 -Ramps2=117 -Cliffs2=110 -CliffsWater2=112 - -; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! -; If a ground tile id exceeds this number, FA2 will assume the map is a YR map -[RA2TileMax] -Temperat=838 -Urban=1077 -Snow=798 - -[YRInfantry] -YENGINEER=1 -GGI=1 -INIT=1 -BORIS=1 -BRUTE=1 -VIRUS=1 -CLNT=1 -ARND=1 -STLN=1 -CAML=1 -EINS=1 -MUMY=1 -RMNV=1 -LUNR=1 -DNOA=1 -DNOB=1 -SLAV=1 -WWLF=1 -YDOG=1 -YADOG=1 - -[YRUnits] -YHVR=1 -PCV=1 -SMIN=1 -SMON=1 -YCAB=1 -YTNK=1 -BFRT=1 -TELE=1 -CAOS=1 -DDBX=1 -BCAB=1 -BSUB=1 -SCHP=1 -JEEP=1 -MIND=1 -DISK=1 -UTNK=1 -ROBO=1 -YDUM=1 -SCHD=1 -DOLY=1 -CBLC=1 -FTRK=1 -AMBU=1 -CIVP=1 - -[YRBuildings] -YACNST=1 -YAPOWR=1 -YABRCK=1 -YAWEAP=1 -YAYARD=1 -YADEPT=1 -YATECH=1 -GAFWLL=1 -YAGGUN=1 -YAPSYT=1 -NAINDP=1 -YAGRND=1 -YAGNTC=1 -CASLAB=1 -CATIME=1 -YAPPET=1 -CALOND04=1 -CALOND05=1 -CALOND06=1 -CAMOON01=1 -CATRAN03=1 -CAEAST01=1 -CAEGYP01=1 -CAEGYP02=1 -CAEGYP03=1 -CALA01=1 -CALA02=1 -CALA03=1 -CALA04=1 -CALA05=1 -CALOND01=1 -CALOND02=1 -CALOND03=1 -CAMORR01=1 -CAMORR02=1 -CAMORR03=1 -CASANF01=1 -CASANF02=1 -CASANF03=1 -CASANF04=1 -CASANF05=1 -CASEAT01=1 -NATBNK=1 -GAGATE_A=1 -CASANF09=1 -CASANF10=1 -CASANF11=1 -CASANF12=1 -CASANF13=1 -CASANF14=1 -CASANF06=1 -CASANF07=1 -CASANF08=1 -CASEAT02=1 -YACOMD=1 -YAPPPT=1 -GAROBO=1 -YAREFN=1 -YAROCK=1 -NABNKR=1 -CASANF15=1 -CASANF16=1 -CASANF17=1 -CASANF18=1 -CASIN03E=1 -CASIN03S=1 -CAURB01=1 -CAURB02=1 -CAURB03=1 -CAPOWR=1 -CALA07=1 -CAEGYP06=1 -CALA08=1 -CAEAST02=1 -CABARR01=1 -CABARR02=1 -CAMORR04=1 -CAMORR05=1 -CALA09=1 -CAEGYP04=1 -CAEGYP05=1 -CALA06=1 -CAMORR06=1 -CAMORR07=1 -CAMORR08=1 -CAMORR09=1 -CAMORR10=1 -CATIME01=1 -CATIME02=1 -CALA10=1 -CALA11=1 -CALA12=1 -CALA13=1 -CAPARK04=1 -CAPARK05=1 -CAPARK06=1 -CALA14=1 -CALA15=1 -CABUNK03=1 -CABUNK04=1 -CALUNR01=1 -CALUNR02=1 - -[YRTerrain] -TREE31=1 -TREE32=1 -TREE33=1 -TREE34=1 -TREE35=1 -TREE36=1 - -[YRAircraft] -BPLN=1 -SPYP=1 -CMISL=1 - -[YROverlay] -Begin=243; which number is the first from new YR overlay? - -; things only FinalAlert will ignore -; these are usually all dummies and leftovers from TS -[IgnoreRA2] -0=GAARMORY -1=APACHE -2=DeathDummy -3=WEEDGUY -4=GADUMY -5=NAWAST -6=GARADR -7=CAIRSFGL -8=CALIT01E -9=CALIT01N -10=CALIT01S -11=CALIT01W -12=CALIT03E -13=CALIT03N -14=CALIT03S -15=CALIT03W -16=CALIT02L -17=CALIT02R -18=NAHPAD -19=CAEURO01 -20=CACITY01 -21=CACITY02 -22=CACITY03 -23=CACITY04 -24=CITY06 -25=CITY05 -26=CITY04 -27=CITY03 -28=CITY02 -29=CITY01 -30=CAARMR -31=TREE29 -32=TREE30 -33=CANEWY05 -34=REDLAMP -35=GRENLAMP -36=BLUELAMP -37=YELWLAMP -38=PURPLAMP -39=INORANLAMP -;40=NEGLAMP ; NEGLAMP added again, invisible in game -41=NEGRED -42=TSTLAMP -43=CAPOL01E -44=CAPOL01N -45=CAPOL01S -46=CAPOL01W -47=CASIN01E -48=CASIN01N -49=CASIN01W -50=CASIN01S -51=GAGREEN -52=GALITE -53=CARGOPLANE -; 54=CAHOSP -55=XCOMET -56=CAKRMW -57=CAFNCB -58=CAFNCW -59=CAFNCP -60=CR1 -61=CR2 -62=CR3 -63=CR4 -64=CR5 -65=CR6 -66=BURN01 -67=BURN02 -68=BURN03 -69=BURN04 -70=BURN05 -71=BURN06 -72=BURN07 -73=BURN08 -74=BURN09 -75=BURN10 -76=BURN11 -77=BURN12 -78=BURN13 -79=BURN14 -80=BURN15 -Another one :) =BURN16 -82=CASYDN01 -83=CATIME -84=CALOND02;? -;85=CAMORR01 -;86=CAMORR02 -;87=CAMORR03 -;88=CAEGYP06 -;89=CAMORR04 -;90=CAEGYP04 -;91=CAEGYP05 -;92=CALA06 - -97=DNOB;? -98=GAWRONG -99=CALA02;? -100=CAMOON01 -;101=CAEGYP01 -102=UTNK -103=YDUM -104=WWLF -105=YADOG -106=YDOG -107=SMON -108=CMON -109=YADEPT -110=CALOND06;? -;111=TREE32 - -; Yes means Image= in art ini will be ignored -[IgnoreArtImage] -CAML=yes - -; hacks for shore pieces -; shore id_pos=iswater -; pos: count from left top to right, then next "row" - -; RA2 only needs one fix (for URBAN specifically) -[ShoreTerrainRA2] -12_4=1 -12_5=1 - -; But TS needs all :( -[ShoreTerrainTS] -0_0=0 -0_1=0 -0_2=1 -0_3=1 -1_0=0 -1_1=0 -2_0=0 -2_1=0 -3_0=0 -4_0=0 -4_1=0 -4_3=0 -5_0=0 -5_1=0 -5_2=0 -6_0=0 -7_0=0 -8_0=0 -8_2=0 -9_0=0 -9_2=0 -10_0=0 -10_2=0 -11_0=0 -12_0=0 -12_1=0 -12_3=0 -13_0=0 -13_3=0 -13_4=0 -14_2=0 -15_2=0 -16_2=0 -16_3=0 -17_2=0 -17_3=0 -18_2=0 -18_3=0 -19_1=0 -20_3=0 -20_4=0 -20_5=0 -21_2=0 -21_4=0 -21_5=0 -22_3=0 -23_3=0 -24_1=0 -24_3=0 -25_1=0 -25_3=0 -26_1=0 -26_3=0 -27_1=0 -28_1=0 -28_2=0 -28_5=0 -29_2=0 -29_4=0 -29_5=0 -30_1=0 -31_1=0 -32_0=0 -32_1=0 -32_2=0 -33_0=0 -33_1=0 -33_2=0 -34_0=0 -34_2=0 -34_3=0 -35_0=0 -35_2=0 -35_3=0 -36_1=0 -36_2=0 -36_3=0 -37_1=0 -37_2=0 -37_3=0 -38_0=0 -38_1=0 -38_3=0 -39_0=0 -39_1=0 -39_3=0 - -; tilesets that may be modified using the shore or a similar logic -[SoftTileSets] -ClearTile=1 -RoughTile=1 -ClearToRoughLat=1 -SandTile =1 -ClearToSandLat=1 -GreenTile=1 -ClearToGreenLat=1 -PaveTile=1 -MiscPaveTile =1 -ClearToPaveLat=1 -RoughGround=0; no -WaterSet=1 -ShorePieces=1 - -; corner strings are: cornerleft, cornerright, cornerbottom, cornertop - -[CliffBackData] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataAlt] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataNEWURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffFrontData] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataAlt] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataNEWURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -; EVENTS AND ACTIONS -; param type format: Description,ListType -; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): -; 0-Nothing -; 1-Houses -; 2-Teamtypes -; 3-UnitTypes -; 4-InfantryTypes -; 5-AircraftTypes -; 6-BuildingTypes -; 7-Videos -; 8-tutorial texts -; 9-Triggers -; 10-yes/no -; 11=sounds -; 12=themes -; 13=speeches -; 14=special weapons -; 15=animations -; 16=particles -; 17=waypoints -; 18=crate types * -; 19=speech bubble types * -; 20=Global variables <--- wrong, local variables! -; 21=.CSF strings (RA2 only) * -; 22=Tag * -; 23=Meteors * -; 24=Weapons * -; 25=Light behavior * -; 26=Shower * -; 27=Rules Global variables -; 28=Building INI names -; 29=Techtypes - - -; ParamTypes -; Name, ListType, [Code] -[ParamTypes] --1=δʹÓÃ,0,1;not listed in FA2 -0=δʹÓÃ,0 -1=δ֪,0 -2=ËùÊô·½,1 -3=¾Ö²¿±äÁ¿,20 -4=ʱ¼ä,0 -5=»ý·Ö,0 -6=ÊýÖµ,0 -7=С¶ÓÀàÐÍ,2 -8=½¨Öþ,6 -9=·ÉÐÐÆ÷,5 -10=²½±ø,4 -11=µ¥Î»,3 -12=µçÓ°,7 -13=Îı¾,8 -14=´¥·¢,9 -15=ÔÊÐí,10 -16=ÉùÒô,11 -17=ÀÖÇú,12 -18=ÓïÒô,13 -19=²½Öè,0 -20=³¬¼¶ÎäÆ÷,14 -21=×ó,0 -22=ÉÏ,0 -23=¿í,0 -24=¸ß,0 -25=¶¯»­,15 -26=Á£×Ó,16 -27=³ÖÐøÊ±¼ä,0 -28=ËÙ¶È,0 -29=VoxelË鯬IDºÅ,29 -30=·¾¶µã,17 -31=ľÏäÀàÐÍ,PT_CrateTypes -32=ÓïÒôÌáʾ¿ò,19 -33=×Ö·û,21 -34=ÐÐΪ,9 -35=È«¾Ö±äÁ¿,27 -36=ÌØ¶¨ÎäÆ÷,14 -37=ÒѼ¤»î,10 -38=´¥·¢±êÇ©,22 -39=¿Æ¼¼ÀàÐÍ,0 -40=À´Ô´,0 -41=ÎäÆ÷,24 -42=·¢¹âÐÐΪ,25 -43=ʼþ,9 -44=ÕóÓê,26 -45=¸¡µãÖµ,0 -46=¿Æ¼¼ÀàÐÍ,29,2 -47=½¨Öþ,28 -48=ÊýÁ¿,0 -49=ÏñËØ¶¯»­,23 -50=ӰƬ,7 -51=À×´ïʼþ,PT_RadarEventTypes - -; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C -; Origianl definitinos are as follows: -; "Money" -; "Unit" -; "HealBase" -; "Cloak" -; "Explosion" -; "Napalm" -; "Squad" -; "Darkness" -; "Reveal" -; "Armor" -; "Speed" -; "Firepower" -; "ICBM" -; "Invulnerability" -; "Veteran" -; "IonStorm" -; "Gas" -; "Tiberium" -; "Pod" -[PT_CrateTypes] -FixedValueCount=19 -0=0 - Ç®Ïä -1=1 - Ëæ»úÔØ¾ßµ¥Î» -2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ -3=3 - ÓÀ¾ÃÒþÐÎ -4=4 - C4µ¯Í·É˺¦ -5=5 - »ðÑæ±¬Õ¨É˺¦ -6=6 - Ëæ»ú²½±øÐ¡¶Ó -7=7 - ȫͼºÚÄ» -8=8 - ÏÔʾȫµØÍ¼ -9=9 - »¤¼×Ç¿»¯ -10=10 - ËÙ¶ÈÌáÉý -11=11 - »ðÁ¦ÌáÉý -12=12 - ºËµ¯³¬Îäµ¥´Î -13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© -14=14 - ¾­ÑéÉýÐÇ -15=15 - Àë×ӷ籩£¨ÎÞЧ£© -16=16 - ¶¾ÆøÁ£×Ó -17=17 - СƬ¿óʯ -18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© - -; Controls for radar events -; The events, in order, are: -; (1) Generic Combat Event, -; (2) Generic Noncombat Event, -; (3) Dropzone Event, -; (4) Base Under Attack Event, -; (5) Harvester Under Attack Event, -; (6) Enemy Object Sensed Event -[PT_RadarEventTypes] -FixedValueCount=6 -0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ -1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ -2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ -3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ -4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ -5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» - -[ScriptParams] -0=ռλ,0 -1=Ä¿±ê,1 -2=·¾¶µã,2 -3=Ìø×ªÖÁÐÐ#,3 -4=·ÖÀëС¶Ó,4 -5=È«¾Ö±äÁ¿,5 -6=½Å±¾,6 -7=С¶Ó,7 -8=ËùÊô·½,8 -9=ÓïÒô,9 -10=ÒôЧ,10 -11=ӰƬ,11 -12=ÒôÀÖ,12 -13=¹ú¼Ò,13 -14=¾Ö²¿±äÁ¿,14 -15=³¯Ïò,15 -16=½¨Öþ,16 -17=¶¯»­,17 -18=¶Ô»°ÆøÅÝ,18 -19=½øÈë״̬,19 -20=ÕûÊý,0 -21=²¼¶û,20 -22=Ä¿±êÁбí,SP_TargetList - -[SP_TargetList] -ParseFromSection=TeamTargetTechnoTypes -ExtraValueType=0 - -[ScriptExtras] -0=SE_TargetScanStrategy - -[SE_TargetScanStrategy] -0=0 - ×îСÍþв -1=1 - ×î´óÍþв -2=2 - ×î½ü¾àÀë -3=3 - ×îÔ¶¾àÀë - -;Index=Name,ParamType,Obsolete,YROnly,Description -[ScriptsRA2] -0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ -1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ -2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ -3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ -4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ -5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© -6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ -7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ -8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ -9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ -10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ -11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ -12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ -13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© -14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© -15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© -16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ -17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© -18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© -19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ -20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© -21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ -22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ -23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ -24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ -25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ -26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ -27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ -28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ -29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ -30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ -31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ -32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ -33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ -34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© -35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ -36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ -37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ -38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ -39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ -40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ -41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ -42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ -43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ -44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© -45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© -46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ -47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ -48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ -49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ -50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© -51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ -52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ -53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ -56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -;YR Only -58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ -59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ -60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ -61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ -62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ -63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ -64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ -;Hares Only -65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ -66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ -67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ -68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ -69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ -70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü -71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï - -[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? -0=5 -1=9 -;2=10 -3=11 - -; events format: -; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] -; negative number for type currently not supported (only Actions do support yet)! -; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. -; NOTE: ID must be the same like # -[EventsRA2] -0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 -1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 -2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 -3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 -4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 -5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 -6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 -7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 -8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 -9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 -10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 -11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 -12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 -13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 -14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 -15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 -16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 -17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 -18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 -19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 -20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 -21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 -22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 -23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 -24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 -25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 -26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 -27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 -28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 -29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 -30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 -31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 -32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 -33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 -34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 -35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 -36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 -37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 -38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 -39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 -40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 -41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 -42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 -43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 -44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 -45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 -46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 -47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 -48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 -49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 -50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 -51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 -52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 -53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 -54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 -55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 -56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 -57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 - -; YR -58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 -59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 - -; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters -60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 -61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 -86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 - - -; action format: -; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] -; if using negative number for type, param will be set to the absolute value of this number -; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. -; NOTE: ID must be the same like # -[ActionsRA2] -0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 -1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 -2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 -3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 -4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 -5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 -6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 -7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 -8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 -9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 -10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 -11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 -12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 -13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 -14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 -15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 -16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 -17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 -18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 -19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 -20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 -21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 -22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 -23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 -24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 -25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 -26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 -27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 -28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 -29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 -30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 -31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 -32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 -33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 -34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 -35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 -36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 -37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 -38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 -39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 -40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 -41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 -42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 -43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 -44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 -45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 -46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 -47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 -48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 -49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 -50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 -51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 -52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 -53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 -54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 -55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 -56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 -57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 -58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 -59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 -60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 -61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 -62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 -63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 -64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 -65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 -66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 -67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 -68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 -69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 -70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 -71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 -72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 -73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 -74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 -75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 -76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 -77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 -78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 -79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 -80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 -81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 -82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 -83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 -84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 -85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 -86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 -87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 -88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 -89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 -90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 -91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 -92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 -93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 -94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 -95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 -96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 -97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 -98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 -99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 -100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 -101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 -102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 -103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 -104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 -105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 -106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 -107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 -108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 -109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 -110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 -111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 -112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 -113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 -114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 -115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 -116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 -117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 -118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 -119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 -120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 -121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 -122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 -123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 -124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 -125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 -126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 -127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 -128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 -129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 - -; YR -130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 -131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 -132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 -133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 -134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 -135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 -136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 -137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 -138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 -139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 -140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 -141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 -142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 -143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 -144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 -145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 -;bellow only added in hares -146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 -147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 -148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 -149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 -150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 -151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 -152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 -153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 -154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 - -[BridgesTS] - -[BridgesRA2] - -[SpecialOverlayTS] - -[SpecialOverlayRA2] - -[IgnoreTerrainRA2] - -[GameModes] -standard=±ê×¼×÷Õ½ -teamgame=С¶ÓÁªÃË -cooperative=ºÏ×÷ÈÎÎñ -duel=ÇÀµØÅÌ -navalwar=º£Õ½ -meatgrind=ÉúËÀ¶· -megawealth=¾Þ¸» -airwar=(ÎÞЧ)¿ÕÕ½ -nukewar=(ÎÞЧ)ºËÕ½ - -[ForceUnitPalettePrefix] -0=TIBTRE - -[ForceIsoPalettePrefix] - -;===ScriptTemplates=== -;X=UIName, Name, Count, Key 1 ,Value 1 , Key 2 ,Value 2 , ..., Key Count ,Value Count -;EMPTY will be considered as a CONST, with it FA2Copy will ignore the value - -;By prry -[ScriptTemplates] -DefaultName=ĬÈÏ -Counts=5 -1=Á½µã¼äѲÂß,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 -2=Èýµã¼äѲÂß,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 -3=Ëĵã¼äѲÂß,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 -4=×°ÔØ²¿¶ÓÐ¶ÔØ¹¥»÷,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 -5=×°ÔØÈëÔØ¾ß²¢¹¥»÷,New load script,3,21,EMPTY,14,EMPTY,0,0 - -;===TeamTemplates=== -;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 -;Checkbox order matrix: -; |1 6 11 | -; |2 7 12 16| -; |3 8 13 17| -; |4 9 14 18| -; |5 10 15 19| - -;By Sandman -[TeamTemplates] -DefaultName=ĬÈÏ -Counts=3 -1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 -2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 -3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 - -; not NOSURFACES: -;[BuildingVoxelTurretsRA2] -;GTGCANX=-1 -;GTGCANY=0;-6 -;NASAMY=0;2 -;NALASRX=0 -;NALASRY=0;-3 -;NAFLAKY=10;10 - -[VehicleVoxelTurretsRA2Disabled] -;DISKX=-10 -;DISKY=-10 -;YTNKY=-30 -SREFX=4 -SREFY=3 - -[IgnoreArtImage] -BFRT=1 -CAML=1 - -[IgnoreSuperAnim1] - - -[IgnoreSuperAnim2] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim3] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim4] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -; fix for building list: -[GTGCAN] -AIBasePlanningSide=0 - -[YACOMD] -AIBasePlanningSide=2 - -[YADEPT] -AIBasePlanningSide=0 - -[NASPYB] -AIBasePlanningSide=2 - -; rename list for objects. ObjectID=StringID -[Rename] - -[MovieList] -Start=66; Anything below will not be listed! - -[StdBrushSize] -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 -WaterSet=2 - -[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 - -; SlopeSetPieces for cliffs have a specific direction. -; used for AutoLevel logic -; CURRENTLY IGNORED -[SlopeSetPiecesDirections] -Count=10 -0=Right_1 -1=Left_1 -2=Top_1 -3=Bottom_1 -4=Right_2 -5=Left_2 -6=Left_2 -7=Bottom_2 -8=Top_2 -9=Top_2 - -[LUNARLimits] -TreeMax=999 -TreeMin=999 - -[URBANLimits] -TreeMax=999 -;TreeMax=27 - -[TEMPERATELimits] -TreeMax=999 -;TreeMax=27 - -[SNOWLimits] -TreeMax=999 -;TreeMax=27 - -[NEWURBANLimits] -TreeMax=999 -;TreeMax=27 - -[DESERTLimits] -TreeMin=30 -TreeMax=999 - -; tileset ini overwritings -; only used by FinalAlert -[IgnoreSetTEMPERATE] -0=77 -1=78 -2=79 - -[IgnoreSetSNOW] -0=8 -1=46 - -[IgnoreSetURBAN] -0=49 -1=50 -2=51 -5=56 -7=30 -8=91 -9=92 -10=93 -11=94 -12=95 -13=96 -14=97 -15=98 -16=99 -17=100 -;3=53; Tunnel -;4=54; Tunnel Side -;6=73; Dirt Tunnel - -[IgnoreSetNEWURBAN] -0=101 - -[IgnoreSetDESERT] -0=19 -1=54 -2=53 -3=56 -4=73 -5=80 - -[IgnoreSetLUNAR] - -[UseSetTEMPERATE] -0=57 - -[UseSetSNOW] -[UseSetURBAN] - -[NewUrbanInfo] -Morphable2=114 -Ramps2=117 -Cliffs2=110 -CliffsWater2=112 - -; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! -; If a ground tile id exceeds this number, FA2 will assume the map is a YR map -[RA2TileMax] -Temperat=838 -Urban=1077 -Snow=798 - -[YRInfantry] -YENGINEER=1 -GGI=1 -INIT=1 -BORIS=1 -BRUTE=1 -VIRUS=1 -CLNT=1 -ARND=1 -STLN=1 -CAML=1 -EINS=1 -MUMY=1 -RMNV=1 -LUNR=1 -DNOA=1 -DNOB=1 -SLAV=1 -WWLF=1 -YDOG=1 -YADOG=1 - -[YRUnits] -YHVR=1 -PCV=1 -SMIN=1 -SMON=1 -YCAB=1 -YTNK=1 -BFRT=1 -TELE=1 -CAOS=1 -DDBX=1 -BCAB=1 -BSUB=1 -SCHP=1 -JEEP=1 -MIND=1 -DISK=1 -UTNK=1 -ROBO=1 -YDUM=1 -SCHD=1 -DOLY=1 -CBLC=1 -FTRK=1 -AMBU=1 -CIVP=1 - -[YRBuildings] -YACNST=1 -YAPOWR=1 -YABRCK=1 -YAWEAP=1 -YAYARD=1 -YADEPT=1 -YATECH=1 -GAFWLL=1 -YAGGUN=1 -YAPSYT=1 -NAINDP=1 -YAGRND=1 -YAGNTC=1 -CASLAB=1 -CATIME=1 -YAPPET=1 -CALOND04=1 -CALOND05=1 -CALOND06=1 -CAMOON01=1 -CATRAN03=1 -CAEAST01=1 -CAEGYP01=1 -CAEGYP02=1 -CAEGYP03=1 -CALA01=1 -CALA02=1 -CALA03=1 -CALA04=1 -CALA05=1 -CALOND01=1 -CALOND02=1 -CALOND03=1 -CAMORR01=1 -CAMORR02=1 -CAMORR03=1 -CASANF01=1 -CASANF02=1 -CASANF03=1 -CASANF04=1 -CASANF05=1 -CASEAT01=1 -NATBNK=1 -GAGATE_A=1 -CASANF09=1 -CASANF10=1 -CASANF11=1 -CASANF12=1 -CASANF13=1 -CASANF14=1 -CASANF06=1 -CASANF07=1 -CASANF08=1 -CASEAT02=1 -YACOMD=1 -YAPPPT=1 -GAROBO=1 -YAREFN=1 -YAROCK=1 -NABNKR=1 -CASANF15=1 -CASANF16=1 -CASANF17=1 -CASANF18=1 -CASIN03E=1 -CASIN03S=1 -CAURB01=1 -CAURB02=1 -CAURB03=1 -CAPOWR=1 -CALA07=1 -CAEGYP06=1 -CALA08=1 -CAEAST02=1 -CABARR01=1 -CABARR02=1 -CAMORR04=1 -CAMORR05=1 -CALA09=1 -CAEGYP04=1 -CAEGYP05=1 -CALA06=1 -CAMORR06=1 -CAMORR07=1 -CAMORR08=1 -CAMORR09=1 -CAMORR10=1 -CATIME01=1 -CATIME02=1 -CALA10=1 -CALA11=1 -CALA12=1 -CALA13=1 -CAPARK04=1 -CAPARK05=1 -CAPARK06=1 -CALA14=1 -CALA15=1 -CABUNK03=1 -CABUNK04=1 -CALUNR01=1 -CALUNR02=1 - -[YRTerrain] -TREE31=1 -TREE32=1 -TREE33=1 -TREE34=1 -TREE35=1 -TREE36=1 - -[YRAircraft] -BPLN=1 -SPYP=1 -CMISL=1 - -[YROverlay] -Begin=243; which number is the first from new YR overlay? - -; things only FinalAlert will ignore -; these are usually all dummies and leftovers from TS -[IgnoreRA2] -0=GAARMORY -1=APACHE -2=DeathDummy -3=WEEDGUY -4=GADUMY -5=NAWAST -6=GARADR -7=CAIRSFGL -8=CALIT01E -9=CALIT01N -10=CALIT01S -11=CALIT01W -12=CALIT03E -13=CALIT03N -14=CALIT03S -15=CALIT03W -16=CALIT02L -17=CALIT02R -18=NAHPAD -19=CAEURO01 -20=CACITY01 -21=CACITY02 -22=CACITY03 -23=CACITY04 -24=CITY06 -25=CITY05 -26=CITY04 -27=CITY03 -28=CITY02 -29=CITY01 -30=CAARMR -31=TREE29 -32=TREE30 -33=CANEWY05 -34=REDLAMP -35=GRENLAMP -36=BLUELAMP -37=YELWLAMP -38=PURPLAMP -39=INORANLAMP -;40=NEGLAMP ; NEGLAMP added again, invisible in game -41=NEGRED -42=TSTLAMP -43=CAPOL01E -44=CAPOL01N -45=CAPOL01S -46=CAPOL01W -47=CASIN01E -48=CASIN01N -49=CASIN01W -50=CASIN01S -51=GAGREEN -52=GALITE -53=CARGOPLANE -; 54=CAHOSP -55=XCOMET -56=CAKRMW -57=CAFNCB -58=CAFNCW -59=CAFNCP -60=CR1 -61=CR2 -62=CR3 -63=CR4 -64=CR5 -65=CR6 -66=BURN01 -67=BURN02 -68=BURN03 -69=BURN04 -70=BURN05 -71=BURN06 -72=BURN07 -73=BURN08 -74=BURN09 -75=BURN10 -76=BURN11 -77=BURN12 -78=BURN13 -79=BURN14 -80=BURN15 -Another one :) =BURN16 -82=CASYDN01 -83=CATIME -84=CALOND02;? -;85=CAMORR01 -;86=CAMORR02 -;87=CAMORR03 -;88=CAEGYP06 -;89=CAMORR04 -;90=CAEGYP04 -;91=CAEGYP05 -;92=CALA06 - -97=DNOB;? -98=GAWRONG -99=CALA02;? -100=CAMOON01 -;101=CAEGYP01 -102=UTNK -103=YDUM -104=WWLF -105=YADOG -106=YDOG -107=SMON -108=CMON -109=YADEPT -110=CALOND06;? -;111=TREE32 - -; Yes means Image= in art ini will be ignored -[IgnoreArtImage] -CAML=yes - -; hacks for shore pieces -; shore id_pos=iswater -; pos: count from left top to right, then next "row" - -; RA2 only needs one fix (for URBAN specifically) -[ShoreTerrainRA2] -12_4=1 -12_5=1 - -; But TS needs all :( -[ShoreTerrainTS] -0_0=0 -0_1=0 -0_2=1 -0_3=1 -1_0=0 -1_1=0 -2_0=0 -2_1=0 -3_0=0 -4_0=0 -4_1=0 -4_3=0 -5_0=0 -5_1=0 -5_2=0 -6_0=0 -7_0=0 -8_0=0 -8_2=0 -9_0=0 -9_2=0 -10_0=0 -10_2=0 -11_0=0 -12_0=0 -12_1=0 -12_3=0 -13_0=0 -13_3=0 -13_4=0 -14_2=0 -15_2=0 -16_2=0 -16_3=0 -17_2=0 -17_3=0 -18_2=0 -18_3=0 -19_1=0 -20_3=0 -20_4=0 -20_5=0 -21_2=0 -21_4=0 -21_5=0 -22_3=0 -23_3=0 -24_1=0 -24_3=0 -25_1=0 -25_3=0 -26_1=0 -26_3=0 -27_1=0 -28_1=0 -28_2=0 -28_5=0 -29_2=0 -29_4=0 -29_5=0 -30_1=0 -31_1=0 -32_0=0 -32_1=0 -32_2=0 -33_0=0 -33_1=0 -33_2=0 -34_0=0 -34_2=0 -34_3=0 -35_0=0 -35_2=0 -35_3=0 -36_1=0 -36_2=0 -36_3=0 -37_1=0 -37_2=0 -37_3=0 -38_0=0 -38_1=0 -38_3=0 -39_0=0 -39_1=0 -39_3=0 - -; tilesets that may be modified using the shore or a similar logic -[SoftTileSets] -ClearTile=1 -RoughTile=1 -ClearToRoughLat=1 -SandTile =1 -ClearToSandLat=1 -GreenTile=1 -ClearToGreenLat=1 -PaveTile=1 -MiscPaveTile =1 -ClearToPaveLat=1 -RoughGround=0; no -WaterSet=1 -ShorePieces=1 - -; corner strings are: cornerleft, cornerright, cornerbottom, cornertop - -[CliffBackData] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataAlt] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataNEWURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffFrontData] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataAlt] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataNEWURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -; EVENTS AND ACTIONS -; param type format: Description,ListType -; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): -; 0-Nothing -; 1-Houses -; 2-Teamtypes -; 3-UnitTypes -; 4-InfantryTypes -; 5-AircraftTypes -; 6-BuildingTypes -; 7-Videos -; 8-tutorial texts -; 9-Triggers -; 10-yes/no -; 11=sounds -; 12=themes -; 13=speeches -; 14=special weapons -; 15=animations -; 16=particles -; 17=waypoints -; 18=crate types * -; 19=speech bubble types * -; 20=Global variables <--- wrong, local variables! -; 21=.CSF strings (RA2 only) * -; 22=Tag * -; 23=Meteors * -; 24=Weapons * -; 25=Light behavior * -; 26=Shower * -; 27=Rules Global variables -; 28=Building INI names -; 29=Techtypes - - -; ParamTypes -; Name, ListType, [Code] -[ParamTypes] --1=δʹÓÃ,0,1;not listed in FA2 -0=δʹÓÃ,0 -1=δ֪,0 -2=ËùÊô·½,1 -3=¾Ö²¿±äÁ¿,20 -4=ʱ¼ä,0 -5=»ý·Ö,0 -6=ÊýÖµ,0 -7=С¶ÓÀàÐÍ,2 -8=½¨Öþ,6 -9=·ÉÐÐÆ÷,5 -10=²½±ø,4 -11=µ¥Î»,3 -12=µçÓ°,7 -13=Îı¾,8 -14=´¥·¢,9 -15=ÔÊÐí,10 -16=ÉùÒô,11 -17=ÀÖÇú,12 -18=ÓïÒô,13 -19=²½Öè,0 -20=³¬¼¶ÎäÆ÷,14 -21=×ó,0 -22=ÉÏ,0 -23=¿í,0 -24=¸ß,0 -25=¶¯»­,15 -26=Á£×Ó,16 -27=³ÖÐøÊ±¼ä,0 -28=ËÙ¶È,0 -29=VoxelË鯬IDºÅ,29 -30=·¾¶µã,17 -31=ľÏäÀàÐÍ,PT_CrateTypes -32=ÓïÒôÌáʾ¿ò,19 -33=×Ö·û,21 -34=ÐÐΪ,9 -35=È«¾Ö±äÁ¿,27 -36=ÌØ¶¨ÎäÆ÷,14 -37=ÒѼ¤»î,10 -38=´¥·¢±êÇ©,22 -39=¿Æ¼¼ÀàÐÍ,0 -40=À´Ô´,0 -41=ÎäÆ÷,24 -42=·¢¹âÐÐΪ,25 -43=ʼþ,9 -44=ÕóÓê,26 -45=¸¡µãÖµ,0 -46=¿Æ¼¼ÀàÐÍ,29,2 -47=½¨Öþ,28 -48=ÊýÁ¿,0 -49=ÏñËØ¶¯»­,23 -50=ӰƬ,7 -51=À×´ïʼþ,PT_RadarEventTypes - -; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C -; Origianl definitinos are as follows: -; "Money" -; "Unit" -; "HealBase" -; "Cloak" -; "Explosion" -; "Napalm" -; "Squad" -; "Darkness" -; "Reveal" -; "Armor" -; "Speed" -; "Firepower" -; "ICBM" -; "Invulnerability" -; "Veteran" -; "IonStorm" -; "Gas" -; "Tiberium" -; "Pod" -[PT_CrateTypes] -FixedValueCount=19 -0=0 - Ç®Ïä -1=1 - Ëæ»úÔØ¾ßµ¥Î» -2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ -3=3 - ÓÀ¾ÃÒþÐÎ -4=4 - C4µ¯Í·É˺¦ -5=5 - »ðÑæ±¬Õ¨É˺¦ -6=6 - Ëæ»ú²½±øÐ¡¶Ó -7=7 - ȫͼºÚÄ» -8=8 - ÏÔʾȫµØÍ¼ -9=9 - »¤¼×Ç¿»¯ -10=10 - ËÙ¶ÈÌáÉý -11=11 - »ðÁ¦ÌáÉý -12=12 - ºËµ¯³¬Îäµ¥´Î -13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© -14=14 - ¾­ÑéÉýÐÇ -15=15 - Àë×ӷ籩£¨ÎÞЧ£© -16=16 - ¶¾ÆøÁ£×Ó -17=17 - СƬ¿óʯ -18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© - -; Controls for radar events -; The events, in order, are: -; (1) Generic Combat Event, -; (2) Generic Noncombat Event, -; (3) Dropzone Event, -; (4) Base Under Attack Event, -; (5) Harvester Under Attack Event, -; (6) Enemy Object Sensed Event -[PT_RadarEventTypes] -FixedValueCount=6 -0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ -1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ -2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ -3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ -4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ -5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» - -[ScriptParams] -0=ռλ,0 -1=Ä¿±ê,1 -2=·¾¶µã,2 -3=Ìø×ªÖÁÐÐ#,3 -4=·ÖÀëС¶Ó,4 -5=È«¾Ö±äÁ¿,5 -6=½Å±¾,6 -7=С¶Ó,7 -8=ËùÊô·½,8 -9=ÓïÒô,9 -10=ÒôЧ,10 -11=ӰƬ,11 -12=ÒôÀÖ,12 -13=¹ú¼Ò,13 -14=¾Ö²¿±äÁ¿,14 -15=³¯Ïò,15 -16=½¨Öþ,16 -17=¶¯»­,17 -18=¶Ô»°ÆøÅÝ,18 -19=½øÈë״̬,19 -20=ÕûÊý,0 -21=²¼¶û,20 -22=Ä¿±êÁбí,SP_TargetList - -[SP_TargetList] -ParseFromSection=TeamTargetTechnoTypes -ExtraValueType=0 - -[ScriptExtras] -0=SE_TargetScanStrategy - -[SE_TargetScanStrategy] -0=0 - ×îСÍþв -1=1 - ×î´óÍþв -2=2 - ×î½ü¾àÀë -3=3 - ×îÔ¶¾àÀë - -;Index=Name,ParamType,Obsolete,YROnly,Description -[ScriptsRA2] -0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ -1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ -2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ -3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ -4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ -5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© -6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ -7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ -8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ -9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ -10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ -11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ -12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ -13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© -14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© -15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© -16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ -17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© -18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© -19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ -20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© -21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ -22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ -23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ -24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ -25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ -26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ -27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ -28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ -29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ -30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ -31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ -32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ -33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ -34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© -35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ -36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ -37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ -38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ -39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ -40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ -41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ -42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ -43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ -44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© -45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© -46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ -47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ -48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ -49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ -50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© -51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ -52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ -53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ -56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -;YR Only -58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ -59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ -60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ -61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ -62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ -63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ -64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ -;Hares Only -65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ -66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ -67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ -68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ -69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ -70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü -71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï - -[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? -0=5 -1=9 -;2=10 -3=11 - -; events format: -; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] -; negative number for type currently not supported (only Actions do support yet)! -; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. -; NOTE: ID must be the same like # -[EventsRA2] -0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 -1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 -2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 -3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 -4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 -5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 -6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 -7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 -8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 -9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 -10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 -11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 -12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 -13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 -14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 -15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 -16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 -17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 -18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 -19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 -20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 -21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 -22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 -23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 -24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 -25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 -26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 -27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 -28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 -29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 -30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 -31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 -32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 -33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 -34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 -35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 -36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 -37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 -38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 -39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 -40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 -41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 -42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 -43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 -44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 -45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 -46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 -47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 -48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 -49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 -50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 -51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 -52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 -53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 -54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 -55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 -56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 -57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 - -; YR -58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 -59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 - -; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters -60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 -61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 -86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 - - -; action format: -; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] -; if using negative number for type, param will be set to the absolute value of this number -; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. -; NOTE: ID must be the same like # -[ActionsRA2] -0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 -1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 -2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 -3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 -4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 -5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 -6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 -7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 -8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 -9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 -10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 -11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 -12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 -13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 -14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 -15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 -16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 -17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 -18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 -19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 -20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 -21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 -22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 -23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 -24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 -25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 -26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 -27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 -28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 -29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 -30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 -31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 -32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 -33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 -34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 -35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 -36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 -37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 -38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 -39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 -40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 -41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 -42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 -43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 -44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 -45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 -46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 -47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 -48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 -49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 -50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 -51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 -52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 -53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 -54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 -55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 -56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 -57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 -58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 -59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 -60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 -61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 -62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 -63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 -64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 -65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 -66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 -67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 -68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 -69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 -70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 -71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 -72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 -73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 -74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 -75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 -76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 -77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 -78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 -79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 -80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 -81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 -82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 -83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 -84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 -85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 -86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 -87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 -88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 -89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 -90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 -91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 -92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 -93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 -94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 -95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 -96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 -97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 -98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 -99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 -100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 -101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 -102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 -103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 -104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 -105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 -106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 -107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 -108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 -109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 -110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 -111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 -112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 -113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 -114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 -115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 -116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 -117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 -118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 -119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 -120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 -121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 -122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 -123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 -124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 -125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 -126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 -127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 -128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 -129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 - -; YR -130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 -131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 -132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 -133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 -134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 -135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 -136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 -137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 -138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 -139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 -140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 -141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 -142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 -143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 -144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 -145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 -;bellow only added in hares -146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 -147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 -148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 -149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 -150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 -151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 -152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 -153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 -154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 - -[BridgesTS] - -[BridgesRA2] - -[SpecialOverlayTS] - -[SpecialOverlayRA2] - -[IgnoreTerrainRA2] - -[ForceUnitPalettePrefix] -0=TIBTRE - -[ForceIsoPalettePrefix] - -;===ScriptTemplates=== -;X=UIName, Name, Count, Key 1 ,Value 1 , Key 2 ,Value 2 , ..., Key Count ,Value Count -;EMPTY will be considered as a CONST, with it FA2Copy will ignore the value - -;By prry -[ScriptTemplates] -DefaultName=ĬÈÏ -Counts=5 -1=Á½µã¼äѲÂß,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 -2=Èýµã¼äѲÂß,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 -3=Ëĵã¼äѲÂß,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 -4=×°ÔØ²¿¶ÓÐ¶ÔØ¹¥»÷,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 -5=×°ÔØÈëÔØ¾ß²¢¹¥»÷,New load script,3,21,EMPTY,14,EMPTY,0,0 - -;===TeamTemplates=== -;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 -;Checkbox order matrix: -; |1 6 11 | -; |2 7 12 16| -; |3 8 13 17| -; |4 9 14 18| -; |5 10 15 19| - -;By Sandman -[TeamTemplates] -DefaultName=ĬÈÏ -Counts=3 -1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 -2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 -3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 - -; not NOSURFACES: -;[BuildingVoxelTurretsRA2] -;GTGCANX=-1 -;GTGCANY=0;-6 -;NASAMY=0;2 -;NALASRX=0 -;NALASRY=0;-3 -;NAFLAKY=10;10 - -[VehicleVoxelTurretsRA2Disabled] -;DISKX=-10 -;DISKY=-10 -;YTNKY=-30 -SREFX=4 -SREFY=3 - -[IgnoreArtImage] -BFRT=1 -CAML=1 - -[IgnoreSuperAnim1] - - -[IgnoreSuperAnim2] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim3] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim4] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -; fix for building list: -[GTGCAN] -AIBasePlanningSide=0 - -[YACOMD] -AIBasePlanningSide=2 - -[YADEPT] -AIBasePlanningSide=0 - -[NASPYB] -AIBasePlanningSide=2 - -; rename list for objects. ObjectID=StringID -[Rename] - -[MovieList] -Start=66; Anything below will not be listed! - -[StdBrushSize] -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 -WaterSet=2 - -[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 - -; SlopeSetPieces for cliffs have a specific direction. -; used for AutoLevel logic -; CURRENTLY IGNORED -[SlopeSetPiecesDirections] -Count=10 -0=Right_1 -1=Left_1 -2=Top_1 -3=Bottom_1 -4=Right_2 -5=Left_2 -6=Left_2 -7=Bottom_2 -8=Top_2 -9=Top_2 - -[LUNARLimits] -TreeMax=999 -TreeMin=999 - -[URBANLimits] -TreeMax=999 -;TreeMax=27 - -[TEMPERATELimits] -TreeMax=999 -;TreeMax=27 - -[SNOWLimits] -TreeMax=999 -;TreeMax=27 - -[NEWURBANLimits] -TreeMax=999 -;TreeMax=27 - -[DESERTLimits] -TreeMin=30 -TreeMax=999 - -; tileset ini overwritings -; only used by FinalAlert -[IgnoreSetTEMPERATE] -0=77 -1=78 -2=79 - -[IgnoreSetSNOW] -0=8 -1=46 - -[IgnoreSetURBAN] -0=49 -1=50 -2=51 -5=56 -7=30 -8=91 -9=92 -10=93 -11=94 -12=95 -13=96 -14=97 -15=98 -16=99 -17=100 -;3=53; Tunnel -;4=54; Tunnel Side -;6=73; Dirt Tunnel - -[IgnoreSetNEWURBAN] -0=101 - -[IgnoreSetDESERT] -0=19 -1=54 -2=53 -3=56 -4=73 -5=80 - -[IgnoreSetLUNAR] - -[UseSetTEMPERATE] -0=57 - -[UseSetSNOW] -[UseSetURBAN] - -[NewUrbanInfo] -Morphable2=114 -Ramps2=117 -Cliffs2=110 -CliffsWater2=112 - -; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! -; If a ground tile id exceeds this number, FA2 will assume the map is a YR map -[RA2TileMax] -Temperat=838 -Urban=1077 -Snow=798 - -[YRInfantry] -YENGINEER=1 -GGI=1 -INIT=1 -BORIS=1 -BRUTE=1 -VIRUS=1 -CLNT=1 -ARND=1 -STLN=1 -CAML=1 -EINS=1 -MUMY=1 -RMNV=1 -LUNR=1 -DNOA=1 -DNOB=1 -SLAV=1 -WWLF=1 -YDOG=1 -YADOG=1 - -[YRUnits] -YHVR=1 -PCV=1 -SMIN=1 -SMON=1 -YCAB=1 -YTNK=1 -BFRT=1 -TELE=1 -CAOS=1 -DDBX=1 -BCAB=1 -BSUB=1 -SCHP=1 -JEEP=1 -MIND=1 -DISK=1 -UTNK=1 -ROBO=1 -YDUM=1 -SCHD=1 -DOLY=1 -CBLC=1 -FTRK=1 -AMBU=1 -CIVP=1 - -[YRBuildings] -YACNST=1 -YAPOWR=1 -YABRCK=1 -YAWEAP=1 -YAYARD=1 -YADEPT=1 -YATECH=1 -GAFWLL=1 -YAGGUN=1 -YAPSYT=1 -NAINDP=1 -YAGRND=1 -YAGNTC=1 -CASLAB=1 -CATIME=1 -YAPPET=1 -CALOND04=1 -CALOND05=1 -CALOND06=1 -CAMOON01=1 -CATRAN03=1 -CAEAST01=1 -CAEGYP01=1 -CAEGYP02=1 -CAEGYP03=1 -CALA01=1 -CALA02=1 -CALA03=1 -CALA04=1 -CALA05=1 -CALOND01=1 -CALOND02=1 -CALOND03=1 -CAMORR01=1 -CAMORR02=1 -CAMORR03=1 -CASANF01=1 -CASANF02=1 -CASANF03=1 -CASANF04=1 -CASANF05=1 -CASEAT01=1 -NATBNK=1 -GAGATE_A=1 -CASANF09=1 -CASANF10=1 -CASANF11=1 -CASANF12=1 -CASANF13=1 -CASANF14=1 -CASANF06=1 -CASANF07=1 -CASANF08=1 -CASEAT02=1 -YACOMD=1 -YAPPPT=1 -GAROBO=1 -YAREFN=1 -YAROCK=1 -NABNKR=1 -CASANF15=1 -CASANF16=1 -CASANF17=1 -CASANF18=1 -CASIN03E=1 -CASIN03S=1 -CAURB01=1 -CAURB02=1 -CAURB03=1 -CAPOWR=1 -CALA07=1 -CAEGYP06=1 -CALA08=1 -CAEAST02=1 -CABARR01=1 -CABARR02=1 -CAMORR04=1 -CAMORR05=1 -CALA09=1 -CAEGYP04=1 -CAEGYP05=1 -CALA06=1 -CAMORR06=1 -CAMORR07=1 -CAMORR08=1 -CAMORR09=1 -CAMORR10=1 -CATIME01=1 -CATIME02=1 -CALA10=1 -CALA11=1 -CALA12=1 -CALA13=1 -CAPARK04=1 -CAPARK05=1 -CAPARK06=1 -CALA14=1 -CALA15=1 -CABUNK03=1 -CABUNK04=1 -CALUNR01=1 -CALUNR02=1 - -[YRTerrain] -TREE31=1 -TREE32=1 -TREE33=1 -TREE34=1 -TREE35=1 -TREE36=1 - -[YRAircraft] -BPLN=1 -SPYP=1 -CMISL=1 - -[YROverlay] -Begin=243; which number is the first from new YR overlay? - -; things only FinalAlert will ignore -; these are usually all dummies and leftovers from TS -[IgnoreRA2] -0=GAARMORY -1=APACHE -2=DeathDummy -3=WEEDGUY -4=GADUMY -5=NAWAST -6=GARADR -7=CAIRSFGL -8=CALIT01E -9=CALIT01N -10=CALIT01S -11=CALIT01W -12=CALIT03E -13=CALIT03N -14=CALIT03S -15=CALIT03W -16=CALIT02L -17=CALIT02R -18=NAHPAD -19=CAEURO01 -20=CACITY01 -21=CACITY02 -22=CACITY03 -23=CACITY04 -24=CITY06 -25=CITY05 -26=CITY04 -27=CITY03 -28=CITY02 -29=CITY01 -30=CAARMR -31=TREE29 -32=TREE30 -33=CANEWY05 -34=REDLAMP -35=GRENLAMP -36=BLUELAMP -37=YELWLAMP -38=PURPLAMP -39=INORANLAMP -;40=NEGLAMP ; NEGLAMP added again, invisible in game -41=NEGRED -42=TSTLAMP -43=CAPOL01E -44=CAPOL01N -45=CAPOL01S -46=CAPOL01W -47=CASIN01E -48=CASIN01N -49=CASIN01W -50=CASIN01S -51=GAGREEN -52=GALITE -53=CARGOPLANE -; 54=CAHOSP -55=XCOMET -56=CAKRMW -57=CAFNCB -58=CAFNCW -59=CAFNCP -60=CR1 -61=CR2 -62=CR3 -63=CR4 -64=CR5 -65=CR6 -66=BURN01 -67=BURN02 -68=BURN03 -69=BURN04 -70=BURN05 -71=BURN06 -72=BURN07 -73=BURN08 -74=BURN09 -75=BURN10 -76=BURN11 -77=BURN12 -78=BURN13 -79=BURN14 -80=BURN15 -Another one :) =BURN16 -82=CASYDN01 -83=CATIME -84=CALOND02;? -;85=CAMORR01 -;86=CAMORR02 -;87=CAMORR03 -;88=CAEGYP06 -;89=CAMORR04 -;90=CAEGYP04 -;91=CAEGYP05 -;92=CALA06 - -97=DNOB;? -98=GAWRONG -99=CALA02;? -100=CAMOON01 -;101=CAEGYP01 -102=UTNK -103=YDUM -104=WWLF -105=YADOG -106=YDOG -107=SMON -108=CMON -109=YADEPT -110=CALOND06;? -;111=TREE32 - -; Yes means Image= in art ini will be ignored -[IgnoreArtImage] -CAML=yes - -; hacks for shore pieces -; shore id_pos=iswater -; pos: count from left top to right, then next "row" - -; RA2 only needs one fix (for URBAN specifically) -[ShoreTerrainRA2] -12_4=1 -12_5=1 - -; But TS needs all :( -[ShoreTerrainTS] -0_0=0 -0_1=0 -0_2=1 -0_3=1 -1_0=0 -1_1=0 -2_0=0 -2_1=0 -3_0=0 -4_0=0 -4_1=0 -4_3=0 -5_0=0 -5_1=0 -5_2=0 -6_0=0 -7_0=0 -8_0=0 -8_2=0 -9_0=0 -9_2=0 -10_0=0 -10_2=0 -11_0=0 -12_0=0 -12_1=0 -12_3=0 -13_0=0 -13_3=0 -13_4=0 -14_2=0 -15_2=0 -16_2=0 -16_3=0 -17_2=0 -17_3=0 -18_2=0 -18_3=0 -19_1=0 -20_3=0 -20_4=0 -20_5=0 -21_2=0 -21_4=0 -21_5=0 -22_3=0 -23_3=0 -24_1=0 -24_3=0 -25_1=0 -25_3=0 -26_1=0 -26_3=0 -27_1=0 -28_1=0 -28_2=0 -28_5=0 -29_2=0 -29_4=0 -29_5=0 -30_1=0 -31_1=0 -32_0=0 -32_1=0 -32_2=0 -33_0=0 -33_1=0 -33_2=0 -34_0=0 -34_2=0 -34_3=0 -35_0=0 -35_2=0 -35_3=0 -36_1=0 -36_2=0 -36_3=0 -37_1=0 -37_2=0 -37_3=0 -38_0=0 -38_1=0 -38_3=0 -39_0=0 -39_1=0 -39_3=0 - -; tilesets that may be modified using the shore or a similar logic -[SoftTileSets] -ClearTile=1 -RoughTile=1 -ClearToRoughLat=1 -SandTile =1 -ClearToSandLat=1 -GreenTile=1 -ClearToGreenLat=1 -PaveTile=1 -MiscPaveTile =1 -ClearToPaveLat=1 -RoughGround=0; no -WaterSet=1 -ShorePieces=1 - -; corner strings are: cornerleft, cornerright, cornerbottom, cornertop - -[CliffBackData] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataAlt] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataNEWURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffFrontData] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataAlt] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataNEWURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -; EVENTS AND ACTIONS -; param type format: Description,ListType -; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): -; 0-Nothing -; 1-Houses -; 2-Teamtypes -; 3-UnitTypes -; 4-InfantryTypes -; 5-AircraftTypes -; 6-BuildingTypes -; 7-Videos -; 8-tutorial texts -; 9-Triggers -; 10-yes/no -; 11=sounds -; 12=themes -; 13=speeches -; 14=special weapons -; 15=animations -; 16=particles -; 17=waypoints -; 18=crate types * -; 19=speech bubble types * -; 20=Global variables <--- wrong, local variables! -; 21=.CSF strings (RA2 only) * -; 22=Tag * -; 23=Meteors * -; 24=Weapons * -; 25=Light behavior * -; 26=Shower * -; 27=Rules Global variables -; 28=Building INI names -; 29=Techtypes - - -; ParamTypes -; Name, ListType, [Code] -[ParamTypes] --1=δʹÓÃ,0,1;not listed in FA2 -0=δʹÓÃ,0 -1=δ֪,0 -2=ËùÊô·½,1 -3=¾Ö²¿±äÁ¿,20 -4=ʱ¼ä,0 -5=»ý·Ö,0 -6=ÊýÖµ,0 -7=С¶ÓÀàÐÍ,2 -8=½¨Öþ,6 -9=·ÉÐÐÆ÷,5 -10=²½±ø,4 -11=µ¥Î»,3 -12=µçÓ°,7 -13=Îı¾,8 -14=´¥·¢,9 -15=ÔÊÐí,10 -16=ÉùÒô,11 -17=ÀÖÇú,12 -18=ÓïÒô,13 -19=²½Öè,0 -20=³¬¼¶ÎäÆ÷,14 -21=×ó,0 -22=ÉÏ,0 -23=¿í,0 -24=¸ß,0 -25=¶¯»­,15 -26=Á£×Ó,16 -27=³ÖÐøÊ±¼ä,0 -28=ËÙ¶È,0 -29=VoxelË鯬IDºÅ,29 -30=·¾¶µã,17 -31=ľÏäÀàÐÍ,PT_CrateTypes -32=ÓïÒôÌáʾ¿ò,19 -33=×Ö·û,21 -34=ÐÐΪ,9 -35=È«¾Ö±äÁ¿,27 -36=ÌØ¶¨ÎäÆ÷,14 -37=ÒѼ¤»î,10 -38=´¥·¢±êÇ©,22 -39=¿Æ¼¼ÀàÐÍ,0 -40=À´Ô´,0 -41=ÎäÆ÷,24 -42=·¢¹âÐÐΪ,25 -43=ʼþ,9 -44=ÕóÓê,26 -45=¸¡µãÖµ,0 -46=¿Æ¼¼ÀàÐÍ,29,2 -47=½¨Öþ,28 -48=ÊýÁ¿,0 -49=ÏñËØ¶¯»­,23 -50=ӰƬ,7 -51=À×´ïʼþ,PT_RadarEventTypes - -; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C -; Origianl definitinos are as follows: -; "Money" -; "Unit" -; "HealBase" -; "Cloak" -; "Explosion" -; "Napalm" -; "Squad" -; "Darkness" -; "Reveal" -; "Armor" -; "Speed" -; "Firepower" -; "ICBM" -; "Invulnerability" -; "Veteran" -; "IonStorm" -; "Gas" -; "Tiberium" -; "Pod" -[PT_CrateTypes] -FixedValueCount=19 -0=0 - Ç®Ïä -1=1 - Ëæ»úÔØ¾ßµ¥Î» -2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ -3=3 - ÓÀ¾ÃÒþÐÎ -4=4 - C4µ¯Í·É˺¦ -5=5 - »ðÑæ±¬Õ¨É˺¦ -6=6 - Ëæ»ú²½±øÐ¡¶Ó -7=7 - ȫͼºÚÄ» -8=8 - ÏÔʾȫµØÍ¼ -9=9 - »¤¼×Ç¿»¯ -10=10 - ËÙ¶ÈÌáÉý -11=11 - »ðÁ¦ÌáÉý -12=12 - ºËµ¯³¬Îäµ¥´Î -13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© -14=14 - ¾­ÑéÉýÐÇ -15=15 - Àë×ӷ籩£¨ÎÞЧ£© -16=16 - ¶¾ÆøÁ£×Ó -17=17 - СƬ¿óʯ -18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© - -; Controls for radar events -; The events, in order, are: -; (1) Generic Combat Event, -; (2) Generic Noncombat Event, -; (3) Dropzone Event, -; (4) Base Under Attack Event, -; (5) Harvester Under Attack Event, -; (6) Enemy Object Sensed Event -[PT_RadarEventTypes] -FixedValueCount=6 -0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ -1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ -2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ -3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ -4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ -5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» - -[ScriptParams] -0=ռλ,0 -1=Ä¿±ê,1 -2=·¾¶µã,2 -3=Ìø×ªÖÁÐÐ#,3 -4=·ÖÀëС¶Ó,4 -5=È«¾Ö±äÁ¿,5 -6=½Å±¾,6 -7=С¶Ó,7 -8=ËùÊô·½,8 -9=ÓïÒô,9 -10=ÒôЧ,10 -11=ӰƬ,11 -12=ÒôÀÖ,12 -13=¹ú¼Ò,13 -14=¾Ö²¿±äÁ¿,14 -15=³¯Ïò,15 -16=½¨Öþ,16 -17=¶¯»­,17 -18=¶Ô»°ÆøÅÝ,18 -19=½øÈë״̬,19 -20=ÕûÊý,0 -21=²¼¶û,20 -22=Ä¿±êÁбí,SP_TargetList - -[SP_TargetList] -ParseFromSection=TeamTargetTechnoTypes -ExtraValueType=0 - -[ScriptExtras] -0=SE_TargetScanStrategy - -[SE_TargetScanStrategy] -0=0 - ×îСÍþв -1=1 - ×î´óÍþв -2=2 - ×î½ü¾àÀë -3=3 - ×îÔ¶¾àÀë - -;Index=Name,ParamType,Obsolete,YROnly,Description -[ScriptsRA2] -0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ -1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ -2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ -3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ -4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ -5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© -6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ -7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ -8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ -9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ -10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ -11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ -12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ -13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© -14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© -15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© -16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ -17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© -18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© -19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ -20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© -21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ -22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ -23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ -24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ -25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ -26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ -27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ -28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ -29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ -30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ -31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ -32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ -33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ -34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© -35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ -36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ -37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ -38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ -39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ -40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ -41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ -42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ -43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ -44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© -45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© -46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ -47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ -48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ -49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ -50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© -51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ -52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ -53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ -56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -;YR Only -58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ -59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ -60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ -61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ -62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ -63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ -64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ -;Hares Only -65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ -66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ -67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ -68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ -69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ -70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü -71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï - -[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? -0=5 -1=9 -;2=10 -3=11 - -; events format: -; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] -; negative number for type currently not supported (only Actions do support yet)! -; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. -; NOTE: ID must be the same like # -[EventsRA2] -0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 -1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 -2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 -3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 -4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 -5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 -6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 -7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 -8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 -9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 -10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 -11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 -12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 -13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 -14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 -15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 -16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 -17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 -18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 -19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 -20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 -21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 -22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 -23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 -24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 -25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 -26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 -27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 -28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 -29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 -30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 -31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 -32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 -33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 -34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 -35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 -36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 -37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 -38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 -39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 -40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 -41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 -42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 -43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 -44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 -45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 -46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 -47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 -48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 -49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 -50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 -51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 -52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 -53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 -54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 -55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 -56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 -57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 - -; YR -58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 -59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 - -; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters -60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 -61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 -86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 - - -; action format: -; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] -; if using negative number for type, param will be set to the absolute value of this number -; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. -; NOTE: ID must be the same like # -[ActionsRA2] -0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 -1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 -2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 -3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 -4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 -5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 -6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 -7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 -8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 -9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 -10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 -11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 -12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 -13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 -14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 -15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 -16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 -17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 -18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 -19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 -20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 -21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 -22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 -23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 -24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 -25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 -26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 -27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 -28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 -29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 -30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 -31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 -32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 -33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 -34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 -35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 -36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 -37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 -38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 -39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 -40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 -41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 -42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 -43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 -44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 -45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 -46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 -47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 -48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 -49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 -50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 -51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 -52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 -53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 -54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 -55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 -56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 -57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 -58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 -59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 -60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 -61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 -62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 -63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 -64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 -65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 -66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 -67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 -68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 -69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 -70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 -71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 -72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 -73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 -74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 -75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 -76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 -77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 -78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 -79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 -80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 -81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 -82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 -83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 -84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 -85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 -86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 -87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 -88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 -89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 -90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 -91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 -92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 -93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 -94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 -95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 -96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 -97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 -98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 -99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 -100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 -101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 -102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 -103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 -104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 -105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 -106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 -107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 -108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 -109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 -110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 -111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 -112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 -113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 -114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 -115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 -116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 -117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 -118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 -119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 -120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 -121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 -122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 -123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 -124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 -125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 -126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 -127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 -128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 -129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 - -; YR -130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 -131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 -132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 -133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 -134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 -135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 -136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 -137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 -138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 -139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 -140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 -141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 -142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 -143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 -144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 -145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 -;bellow only added in hares -146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 -147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 -148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 -149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 -150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 -151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 -152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 -153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 -154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 - -[BridgesTS] - -[BridgesRA2] - -[SpecialOverlayTS] - -[SpecialOverlayRA2] - -[IgnoreTerrainRA2] - -[ForceIsoPalettePrefix] - -;===ScriptTemplates=== -;X=UIName, Name, Count, Key 1 ,Value 1 , Key 2 ,Value 2 , ..., Key Count ,Value Count -;EMPTY will be considered as a CONST, with it FA2Copy will ignore the value - -;By prry -[ScriptTemplates] -DefaultName=ĬÈÏ -Counts=5 -1=Á½µã¼äѲÂß,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 -2=Èýµã¼äѲÂß,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 -3=Ëĵã¼äѲÂß,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 -4=×°ÔØ²¿¶ÓÐ¶ÔØ¹¥»÷,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 -5=×°ÔØÈëÔØ¾ß²¢¹¥»÷,New load script,3,21,EMPTY,14,EMPTY,0,0 - -;===TeamTemplates=== -;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 -;Checkbox order matrix: -; |1 6 11 | -; |2 7 12 16| -; |3 8 13 17| -; |4 9 14 18| -; |5 10 15 19| - -;By Sandman -[TeamTemplates] -DefaultName=ĬÈÏ -Counts=3 -1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 -2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 -3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 - -; not NOSURFACES: -;[BuildingVoxelTurretsRA2] -;GTGCANX=-1 -;GTGCANY=0;-6 -;NASAMY=0;2 -;NALASRX=0 -;NALASRY=0;-3 -;NAFLAKY=10;10 - -[VehicleVoxelTurretsRA2Disabled] -;DISKX=-10 -;DISKY=-10 -;YTNKY=-30 -SREFX=4 -SREFY=3 - -[IgnoreArtImage] -BFRT=1 -CAML=1 - -[IgnoreSuperAnim1] - - -[IgnoreSuperAnim2] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim3] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim4] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -; fix for building list: -[GTGCAN] -AIBasePlanningSide=0 - -[YACOMD] -AIBasePlanningSide=2 - -[YADEPT] -AIBasePlanningSide=0 - -[NASPYB] -AIBasePlanningSide=2 - -; rename list for objects. ObjectID=StringID -[Rename] - -[MovieList] -Start=66; Anything below will not be listed! - -[StdBrushSize] -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 -WaterSet=2 - -[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 - -; SlopeSetPieces for cliffs have a specific direction. -; used for AutoLevel logic -; CURRENTLY IGNORED -[SlopeSetPiecesDirections] -Count=10 -0=Right_1 -1=Left_1 -2=Top_1 -3=Bottom_1 -4=Right_2 -5=Left_2 -6=Left_2 -7=Bottom_2 -8=Top_2 -9=Top_2 - -[LUNARLimits] -TreeMax=999 -TreeMin=999 - -[URBANLimits] -TreeMax=999 -;TreeMax=27 - -[TEMPERATELimits] -TreeMax=999 -;TreeMax=27 - -[SNOWLimits] -TreeMax=999 -;TreeMax=27 - -[NEWURBANLimits] -TreeMax=999 -;TreeMax=27 - -[DESERTLimits] -TreeMin=30 -TreeMax=999 - -; tileset ini overwritings -; only used by FinalAlert -[IgnoreSetTEMPERATE] -0=77 -1=78 -2=79 - -[IgnoreSetSNOW] -0=8 -1=46 - -[IgnoreSetURBAN] -0=49 -1=50 -2=51 -5=56 -7=30 -8=91 -9=92 -10=93 -11=94 -12=95 -13=96 -14=97 -15=98 -16=99 -17=100 -;3=53; Tunnel -;4=54; Tunnel Side -;6=73; Dirt Tunnel - -[IgnoreSetNEWURBAN] -0=101 - -[IgnoreSetDESERT] -0=19 -1=54 -2=53 -3=56 -4=73 -5=80 - -[IgnoreSetLUNAR] - -[UseSetTEMPERATE] -0=57 - -[UseSetSNOW] -[UseSetURBAN] - -[NewUrbanInfo] -Morphable2=114 -Ramps2=117 -Cliffs2=110 -CliffsWater2=112 - -; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! -; If a ground tile id exceeds this number, FA2 will assume the map is a YR map -[RA2TileMax] -Temperat=838 -Urban=1077 -Snow=798 - -[YRInfantry] -YENGINEER=1 -GGI=1 -INIT=1 -BORIS=1 -BRUTE=1 -VIRUS=1 -CLNT=1 -ARND=1 -STLN=1 -CAML=1 -EINS=1 -MUMY=1 -RMNV=1 -LUNR=1 -DNOA=1 -DNOB=1 -SLAV=1 -WWLF=1 -YDOG=1 -YADOG=1 - -[YRUnits] -YHVR=1 -PCV=1 -SMIN=1 -SMON=1 -YCAB=1 -YTNK=1 -BFRT=1 -TELE=1 -CAOS=1 -DDBX=1 -BCAB=1 -BSUB=1 -SCHP=1 -JEEP=1 -MIND=1 -DISK=1 -UTNK=1 -ROBO=1 -YDUM=1 -SCHD=1 -DOLY=1 -CBLC=1 -FTRK=1 -AMBU=1 -CIVP=1 - -[YRBuildings] -YACNST=1 -YAPOWR=1 -YABRCK=1 -YAWEAP=1 -YAYARD=1 -YADEPT=1 -YATECH=1 -GAFWLL=1 -YAGGUN=1 -YAPSYT=1 -NAINDP=1 -YAGRND=1 -YAGNTC=1 -CASLAB=1 -CATIME=1 -YAPPET=1 -CALOND04=1 -CALOND05=1 -CALOND06=1 -CAMOON01=1 -CATRAN03=1 -CAEAST01=1 -CAEGYP01=1 -CAEGYP02=1 -CAEGYP03=1 -CALA01=1 -CALA02=1 -CALA03=1 -CALA04=1 -CALA05=1 -CALOND01=1 -CALOND02=1 -CALOND03=1 -CAMORR01=1 -CAMORR02=1 -CAMORR03=1 -CASANF01=1 -CASANF02=1 -CASANF03=1 -CASANF04=1 -CASANF05=1 -CASEAT01=1 -NATBNK=1 -GAGATE_A=1 -CASANF09=1 -CASANF10=1 -CASANF11=1 -CASANF12=1 -CASANF13=1 -CASANF14=1 -CASANF06=1 -CASANF07=1 -CASANF08=1 -CASEAT02=1 -YACOMD=1 -YAPPPT=1 -GAROBO=1 -YAREFN=1 -YAROCK=1 -NABNKR=1 -CASANF15=1 -CASANF16=1 -CASANF17=1 -CASANF18=1 -CASIN03E=1 -CASIN03S=1 -CAURB01=1 -CAURB02=1 -CAURB03=1 -CAPOWR=1 -CALA07=1 -CAEGYP06=1 -CALA08=1 -CAEAST02=1 -CABARR01=1 -CABARR02=1 -CAMORR04=1 -CAMORR05=1 -CALA09=1 -CAEGYP04=1 -CAEGYP05=1 -CALA06=1 -CAMORR06=1 -CAMORR07=1 -CAMORR08=1 -CAMORR09=1 -CAMORR10=1 -CATIME01=1 -CATIME02=1 -CALA10=1 -CALA11=1 -CALA12=1 -CALA13=1 -CAPARK04=1 -CAPARK05=1 -CAPARK06=1 -CALA14=1 -CALA15=1 -CABUNK03=1 -CABUNK04=1 -CALUNR01=1 -CALUNR02=1 - -[YRTerrain] -TREE31=1 -TREE32=1 -TREE33=1 -TREE34=1 -TREE35=1 -TREE36=1 - -[YRAircraft] -BPLN=1 -SPYP=1 -CMISL=1 - -[YROverlay] -Begin=243; which number is the first from new YR overlay? - -; things only FinalAlert will ignore -; these are usually all dummies and leftovers from TS -[IgnoreRA2] -0=GAARMORY -1=APACHE -2=DeathDummy -3=WEEDGUY -4=GADUMY -5=NAWAST -6=GARADR -7=CAIRSFGL -8=CALIT01E -9=CALIT01N -10=CALIT01S -11=CALIT01W -12=CALIT03E -13=CALIT03N -14=CALIT03S -15=CALIT03W -16=CALIT02L -17=CALIT02R -18=NAHPAD -19=CAEURO01 -20=CACITY01 -21=CACITY02 -22=CACITY03 -23=CACITY04 -24=CITY06 -25=CITY05 -26=CITY04 -27=CITY03 -28=CITY02 -29=CITY01 -30=CAARMR -31=TREE29 -32=TREE30 -33=CANEWY05 -34=REDLAMP -35=GRENLAMP -36=BLUELAMP -37=YELWLAMP -38=PURPLAMP -39=INORANLAMP -;40=NEGLAMP ; NEGLAMP added again, invisible in game -41=NEGRED -42=TSTLAMP -43=CAPOL01E -44=CAPOL01N -45=CAPOL01S -46=CAPOL01W -47=CASIN01E -48=CASIN01N -49=CASIN01W -50=CASIN01S -51=GAGREEN -52=GALITE -53=CARGOPLANE -; 54=CAHOSP -55=XCOMET -56=CAKRMW -57=CAFNCB -58=CAFNCW -59=CAFNCP -60=CR1 -61=CR2 -62=CR3 -63=CR4 -64=CR5 -65=CR6 -66=BURN01 -67=BURN02 -68=BURN03 -69=BURN04 -70=BURN05 -71=BURN06 -72=BURN07 -73=BURN08 -74=BURN09 -75=BURN10 -76=BURN11 -77=BURN12 -78=BURN13 -79=BURN14 -80=BURN15 -Another one :) =BURN16 -82=CASYDN01 -83=CATIME -84=CALOND02;? -;85=CAMORR01 -;86=CAMORR02 -;87=CAMORR03 -;88=CAEGYP06 -;89=CAMORR04 -;90=CAEGYP04 -;91=CAEGYP05 -;92=CALA06 - -97=DNOB;? -98=GAWRONG -99=CALA02;? -100=CAMOON01 -;101=CAEGYP01 -102=UTNK -103=YDUM -104=WWLF -105=YADOG -106=YDOG -107=SMON -108=CMON -109=YADEPT -110=CALOND06;? -;111=TREE32 - -; Yes means Image= in art ini will be ignored -[IgnoreArtImage] -CAML=yes - -; hacks for shore pieces -; shore id_pos=iswater -; pos: count from left top to right, then next "row" - -; RA2 only needs one fix (for URBAN specifically) -[ShoreTerrainRA2] -12_4=1 -12_5=1 - -; But TS needs all :( -[ShoreTerrainTS] -0_0=0 -0_1=0 -0_2=1 -0_3=1 -1_0=0 -1_1=0 -2_0=0 -2_1=0 -3_0=0 -4_0=0 -4_1=0 -4_3=0 -5_0=0 -5_1=0 -5_2=0 -6_0=0 -7_0=0 -8_0=0 -8_2=0 -9_0=0 -9_2=0 -10_0=0 -10_2=0 -11_0=0 -12_0=0 -12_1=0 -12_3=0 -13_0=0 -13_3=0 -13_4=0 -14_2=0 -15_2=0 -16_2=0 -16_3=0 -17_2=0 -17_3=0 -18_2=0 -18_3=0 -19_1=0 -20_3=0 -20_4=0 -20_5=0 -21_2=0 -21_4=0 -21_5=0 -22_3=0 -23_3=0 -24_1=0 -24_3=0 -25_1=0 -25_3=0 -26_1=0 -26_3=0 -27_1=0 -28_1=0 -28_2=0 -28_5=0 -29_2=0 -29_4=0 -29_5=0 -30_1=0 -31_1=0 -32_0=0 -32_1=0 -32_2=0 -33_0=0 -33_1=0 -33_2=0 -34_0=0 -34_2=0 -34_3=0 -35_0=0 -35_2=0 -35_3=0 -36_1=0 -36_2=0 -36_3=0 -37_1=0 -37_2=0 -37_3=0 -38_0=0 -38_1=0 -38_3=0 -39_0=0 -39_1=0 -39_3=0 - -; tilesets that may be modified using the shore or a similar logic -[SoftTileSets] -ClearTile=1 -RoughTile=1 -ClearToRoughLat=1 -SandTile =1 -ClearToSandLat=1 -GreenTile=1 -ClearToGreenLat=1 -PaveTile=1 -MiscPaveTile =1 -ClearToPaveLat=1 -RoughGround=0; no -WaterSet=1 -ShorePieces=1 - -; corner strings are: cornerleft, cornerright, cornerbottom, cornertop - -[CliffBackData] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataAlt] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataNEWURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffFrontData] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataAlt] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataNEWURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -; EVENTS AND ACTIONS -; param type format: Description,ListType -; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): -; 0-Nothing -; 1-Houses -; 2-Teamtypes -; 3-UnitTypes -; 4-InfantryTypes -; 5-AircraftTypes -; 6-BuildingTypes -; 7-Videos -; 8-tutorial texts -; 9-Triggers -; 10-yes/no -; 11=sounds -; 12=themes -; 13=speeches -; 14=special weapons -; 15=animations -; 16=particles -; 17=waypoints -; 18=crate types * -; 19=speech bubble types * -; 20=Global variables <--- wrong, local variables! -; 21=.CSF strings (RA2 only) * -; 22=Tag * -; 23=Meteors * -; 24=Weapons * -; 25=Light behavior * -; 26=Shower * -; 27=Rules Global variables -; 28=Building INI names -; 29=Techtypes - - -; ParamTypes -; Name, ListType, [Code] -[ParamTypes] --1=δʹÓÃ,0,1;not listed in FA2 -0=δʹÓÃ,0 -1=δ֪,0 -2=ËùÊô·½,1 -3=¾Ö²¿±äÁ¿,20 -4=ʱ¼ä,0 -5=»ý·Ö,0 -6=ÊýÖµ,0 -7=С¶ÓÀàÐÍ,2 -8=½¨Öþ,6 -9=·ÉÐÐÆ÷,5 -10=²½±ø,4 -11=µ¥Î»,3 -12=µçÓ°,7 -13=Îı¾,8 -14=´¥·¢,9 -15=ÔÊÐí,10 -16=ÉùÒô,11 -17=ÀÖÇú,12 -18=ÓïÒô,13 -19=²½Öè,0 -20=³¬¼¶ÎäÆ÷,14 -21=×ó,0 -22=ÉÏ,0 -23=¿í,0 -24=¸ß,0 -25=¶¯»­,15 -26=Á£×Ó,16 -27=³ÖÐøÊ±¼ä,0 -28=ËÙ¶È,0 -29=VoxelË鯬IDºÅ,29 -30=·¾¶µã,17 -31=ľÏäÀàÐÍ,PT_CrateTypes -32=ÓïÒôÌáʾ¿ò,19 -33=×Ö·û,21 -34=ÐÐΪ,9 -35=È«¾Ö±äÁ¿,27 -36=ÌØ¶¨ÎäÆ÷,14 -37=ÒѼ¤»î,10 -38=´¥·¢±êÇ©,22 -39=¿Æ¼¼ÀàÐÍ,0 -40=À´Ô´,0 -41=ÎäÆ÷,24 -42=·¢¹âÐÐΪ,25 -43=ʼþ,9 -44=ÕóÓê,26 -45=¸¡µãÖµ,0 -46=¿Æ¼¼ÀàÐÍ,29,2 -47=½¨Öþ,28 -48=ÊýÁ¿,0 -49=ÏñËØ¶¯»­,23 -50=ӰƬ,7 -51=À×´ïʼþ,PT_RadarEventTypes - -; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C -; Origianl definitinos are as follows: -; "Money" -; "Unit" -; "HealBase" -; "Cloak" -; "Explosion" -; "Napalm" -; "Squad" -; "Darkness" -; "Reveal" -; "Armor" -; "Speed" -; "Firepower" -; "ICBM" -; "Invulnerability" -; "Veteran" -; "IonStorm" -; "Gas" -; "Tiberium" -; "Pod" -[PT_CrateTypes] -FixedValueCount=19 -0=0 - Ç®Ïä -1=1 - Ëæ»úÔØ¾ßµ¥Î» -2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ -3=3 - ÓÀ¾ÃÒþÐÎ -4=4 - C4µ¯Í·É˺¦ -5=5 - »ðÑæ±¬Õ¨É˺¦ -6=6 - Ëæ»ú²½±øÐ¡¶Ó -7=7 - ȫͼºÚÄ» -8=8 - ÏÔʾȫµØÍ¼ -9=9 - »¤¼×Ç¿»¯ -10=10 - ËÙ¶ÈÌáÉý -11=11 - »ðÁ¦ÌáÉý -12=12 - ºËµ¯³¬Îäµ¥´Î -13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© -14=14 - ¾­ÑéÉýÐÇ -15=15 - Àë×ӷ籩£¨ÎÞЧ£© -16=16 - ¶¾ÆøÁ£×Ó -17=17 - СƬ¿óʯ -18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© - -; Controls for radar events -; The events, in order, are: -; (1) Generic Combat Event, -; (2) Generic Noncombat Event, -; (3) Dropzone Event, -; (4) Base Under Attack Event, -; (5) Harvester Under Attack Event, -; (6) Enemy Object Sensed Event -[PT_RadarEventTypes] -FixedValueCount=6 -0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ -1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ -2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ -3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ -4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ -5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» - -[ScriptParams] -0=ռλ,0 -1=Ä¿±ê,1 -2=·¾¶µã,2 -3=Ìø×ªÖÁÐÐ#,3 -4=·ÖÀëС¶Ó,4 -5=È«¾Ö±äÁ¿,5 -6=½Å±¾,6 -7=С¶Ó,7 -8=ËùÊô·½,8 -9=ÓïÒô,9 -10=ÒôЧ,10 -11=ӰƬ,11 -12=ÒôÀÖ,12 -13=¹ú¼Ò,13 -14=¾Ö²¿±äÁ¿,14 -15=³¯Ïò,15 -16=½¨Öþ,16 -17=¶¯»­,17 -18=¶Ô»°ÆøÅÝ,18 -19=½øÈë״̬,19 -20=ÕûÊý,0 -21=²¼¶û,20 -22=Ä¿±êÁбí,SP_TargetList - -[SP_TargetList] -ParseFromSection=TeamTargetTechnoTypes -ExtraValueType=0 - -[ScriptExtras] -0=SE_TargetScanStrategy - -[SE_TargetScanStrategy] -0=0 - ×îСÍþв -1=1 - ×î´óÍþв -2=2 - ×î½ü¾àÀë -3=3 - ×îÔ¶¾àÀë - -;Index=Name,ParamType,Obsolete,YROnly,Description -[ScriptsRA2] -0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ -1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ -2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ -3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ -4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ -5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© -6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ -7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ -8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ -9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ -10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ -11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ -12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ -13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© -14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© -15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© -16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ -17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© -18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© -19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ -20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© -21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ -22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ -23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ -24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ -25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ -26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ -27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ -28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ -29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ -30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ -31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ -32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ -33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ -34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© -35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ -36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ -37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ -38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ -39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ -40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ -41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ -42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ -43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ -44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© -45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© -46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ -47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ -48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ -49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ -50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© -51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ -52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ -53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ -56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -;YR Only -58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ -59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ -60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ -61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ -62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ -63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ -64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ -;Hares Only -65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ -66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ -67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ -68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ -69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ -70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü -71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï - -[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? -0=5 -1=9 -;2=10 -3=11 - -; events format: -; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] -; negative number for type currently not supported (only Actions do support yet)! -; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. -; NOTE: ID must be the same like # -[EventsRA2] -0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 -1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 -2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 -3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 -4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 -5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 -6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 -7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 -8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 -9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 -10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 -11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 -12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 -13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 -14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 -15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 -16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 -17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 -18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 -19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 -20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 -21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 -22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 -23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 -24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 -25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 -26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 -27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 -28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 -29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 -30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 -31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 -32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 -33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 -34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 -35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 -36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 -37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 -38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 -39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 -40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 -41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 -42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 -43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 -44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 -45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 -46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 -47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 -48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 -49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 -50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 -51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 -52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 -53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 -54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 -55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 -56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 -57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 - -; YR -58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 -59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 - -; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters -60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 -61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 -86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 - - -; action format: -; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] -; if using negative number for type, param will be set to the absolute value of this number -; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. -; NOTE: ID must be the same like # -[ActionsRA2] -0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 -1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 -2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 -3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 -4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 -5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 -6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 -7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 -8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 -9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 -10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 -11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 -12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 -13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 -14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 -15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 -16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 -17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 -18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 -19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 -20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 -21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 -22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 -23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 -24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 -25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 -26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 -27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 -28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 -29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 -30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 -31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 -32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 -33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 -34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 -35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 -36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 -37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 -38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 -39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 -40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 -41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 -42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 -43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 -44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 -45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 -46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 -47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 -48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 -49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 -50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 -51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 -52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 -53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 -54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 -55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 -56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 -57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 -58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 -59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 -60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 -61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 -62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 -63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 -64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 -65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 -66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 -67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 -68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 -69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 -70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 -71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 -72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 -73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 -74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 -75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 -76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 -77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 -78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 -79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 -80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 -81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 -82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 -83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 -84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 -85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 -86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 -87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 -88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 -89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 -90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 -91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 -92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 -93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 -94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 -95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 -96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 -97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 -98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 -99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 -100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 -101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 -102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 -103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 -104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 -105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 -106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 -107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 -108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 -109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 -110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 -111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 -112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 -113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 -114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 -115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 -116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 -117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 -118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 -119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 -120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 -121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 -122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 -123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 -124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 -125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 -126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 -127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 -128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 -129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 - -; YR -130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 -131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 -132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 -133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 -134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 -135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 -136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 -137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 -138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 -139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 -140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 -141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 -142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 -143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 -144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 -145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 -;bellow only added in hares -146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 -147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 -148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 -149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 -150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 -151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 -152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 -153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 -154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 - -[BridgesTS] - -[BridgesRA2] - -[SpecialOverlayTS] - -[SpecialOverlayRA2] - -[IgnoreTerrainRA2] - -[ScriptTemplates] -DefaultName=ĬÈÏ -Counts=5 -1=Á½µã¼äѲÂß,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 -2=Èýµã¼äѲÂß,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 -3=Ëĵã¼äѲÂß,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 -4=×°ÔØ²¿¶ÓÐ¶ÔØ¹¥»÷,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 -5=×°ÔØÈëÔØ¾ß²¢¹¥»÷,New load script,3,21,EMPTY,14,EMPTY,0,0 - -;===TeamTemplates=== -;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 -;Checkbox order matrix: -; |1 6 11 | -; |2 7 12 16| -; |3 8 13 17| -; |4 9 14 18| -; |5 10 15 19| - -;By Sandman -[TeamTemplates] -DefaultName=ĬÈÏ -Counts=3 -1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 -2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 -3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 - -; not NOSURFACES: -;[BuildingVoxelTurretsRA2] -;GTGCANX=-1 -;GTGCANY=0;-6 -;NASAMY=0;2 -;NALASRX=0 -;NALASRY=0;-3 -;NAFLAKY=10;10 - -[VehicleVoxelTurretsRA2Disabled] -;DISKX=-10 -;DISKY=-10 -;YTNKY=-30 -SREFX=4 -SREFY=3 - -[IgnoreArtImage] -BFRT=1 -CAML=1 - -[IgnoreSuperAnim1] - - -[IgnoreSuperAnim2] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim3] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim4] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -; fix for building list: -[GTGCAN] -AIBasePlanningSide=0 - -[YACOMD] -AIBasePlanningSide=2 - -[YADEPT] -AIBasePlanningSide=0 - -[NASPYB] -AIBasePlanningSide=2 - -; rename list for objects. ObjectID=StringID -[Rename] - -[MovieList] -Start=66; Anything below will not be listed! - -[StdBrushSize] -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 -WaterSet=2 - -[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 - -; SlopeSetPieces for cliffs have a specific direction. -; used for AutoLevel logic -; CURRENTLY IGNORED -[SlopeSetPiecesDirections] -Count=10 -0=Right_1 -1=Left_1 -2=Top_1 -3=Bottom_1 -4=Right_2 -5=Left_2 -6=Left_2 -7=Bottom_2 -8=Top_2 -9=Top_2 - -[LUNARLimits] -TreeMax=999 -TreeMin=999 - -[URBANLimits] -TreeMax=999 -;TreeMax=27 - -[TEMPERATELimits] -TreeMax=999 -;TreeMax=27 - -[SNOWLimits] -TreeMax=999 -;TreeMax=27 - -[NEWURBANLimits] -TreeMax=999 -;TreeMax=27 - -[DESERTLimits] -TreeMin=30 -TreeMax=999 - -; tileset ini overwritings -; only used by FinalAlert -[IgnoreSetTEMPERATE] -0=77 -1=78 -2=79 - -[IgnoreSetSNOW] -0=8 -1=46 - -[IgnoreSetURBAN] -0=49 -1=50 -2=51 -5=56 -7=30 -8=91 -9=92 -10=93 -11=94 -12=95 -13=96 -14=97 -15=98 -16=99 -17=100 -;3=53; Tunnel -;4=54; Tunnel Side -;6=73; Dirt Tunnel - -[IgnoreSetNEWURBAN] -0=101 - -[IgnoreSetDESERT] -0=19 -1=54 -2=53 -3=56 -4=73 -5=80 - -[IgnoreSetLUNAR] - -[UseSetTEMPERATE] -0=57 - -[UseSetSNOW] -[UseSetURBAN] - -[NewUrbanInfo] -Morphable2=114 -Ramps2=117 -Cliffs2=110 -CliffsWater2=112 - -; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! -; If a ground tile id exceeds this number, FA2 will assume the map is a YR map -[RA2TileMax] -Temperat=838 -Urban=1077 -Snow=798 - -[YRInfantry] -YENGINEER=1 -GGI=1 -INIT=1 -BORIS=1 -BRUTE=1 -VIRUS=1 -CLNT=1 -ARND=1 -STLN=1 -CAML=1 -EINS=1 -MUMY=1 -RMNV=1 -LUNR=1 -DNOA=1 -DNOB=1 -SLAV=1 -WWLF=1 -YDOG=1 -YADOG=1 - -[YRUnits] -YHVR=1 -PCV=1 -SMIN=1 -SMON=1 -YCAB=1 -YTNK=1 -BFRT=1 -TELE=1 -CAOS=1 -DDBX=1 -BCAB=1 -BSUB=1 -SCHP=1 -JEEP=1 -MIND=1 -DISK=1 -UTNK=1 -ROBO=1 -YDUM=1 -SCHD=1 -DOLY=1 -CBLC=1 -FTRK=1 -AMBU=1 -CIVP=1 - -[YRBuildings] -YACNST=1 -YAPOWR=1 -YABRCK=1 -YAWEAP=1 -YAYARD=1 -YADEPT=1 -YATECH=1 -GAFWLL=1 -YAGGUN=1 -YAPSYT=1 -NAINDP=1 -YAGRND=1 -YAGNTC=1 -CASLAB=1 -CATIME=1 -YAPPET=1 -CALOND04=1 -CALOND05=1 -CALOND06=1 -CAMOON01=1 -CATRAN03=1 -CAEAST01=1 -CAEGYP01=1 -CAEGYP02=1 -CAEGYP03=1 -CALA01=1 -CALA02=1 -CALA03=1 -CALA04=1 -CALA05=1 -CALOND01=1 -CALOND02=1 -CALOND03=1 -CAMORR01=1 -CAMORR02=1 -CAMORR03=1 -CASANF01=1 -CASANF02=1 -CASANF03=1 -CASANF04=1 -CASANF05=1 -CASEAT01=1 -NATBNK=1 -GAGATE_A=1 -CASANF09=1 -CASANF10=1 -CASANF11=1 -CASANF12=1 -CASANF13=1 -CASANF14=1 -CASANF06=1 -CASANF07=1 -CASANF08=1 -CASEAT02=1 -YACOMD=1 -YAPPPT=1 -GAROBO=1 -YAREFN=1 -YAROCK=1 -NABNKR=1 -CASANF15=1 -CASANF16=1 -CASANF17=1 -CASANF18=1 -CASIN03E=1 -CASIN03S=1 -CAURB01=1 -CAURB02=1 -CAURB03=1 -CAPOWR=1 -CALA07=1 -CAEGYP06=1 -CALA08=1 -CAEAST02=1 -CABARR01=1 -CABARR02=1 -CAMORR04=1 -CAMORR05=1 -CALA09=1 -CAEGYP04=1 -CAEGYP05=1 -CALA06=1 -CAMORR06=1 -CAMORR07=1 -CAMORR08=1 -CAMORR09=1 -CAMORR10=1 -CATIME01=1 -CATIME02=1 -CALA10=1 -CALA11=1 -CALA12=1 -CALA13=1 -CAPARK04=1 -CAPARK05=1 -CAPARK06=1 -CALA14=1 -CALA15=1 -CABUNK03=1 -CABUNK04=1 -CALUNR01=1 -CALUNR02=1 - -[YRTerrain] -TREE31=1 -TREE32=1 -TREE33=1 -TREE34=1 -TREE35=1 -TREE36=1 - -[YRAircraft] -BPLN=1 -SPYP=1 -CMISL=1 - -[YROverlay] -Begin=243; which number is the first from new YR overlay? - -; things only FinalAlert will ignore -; these are usually all dummies and leftovers from TS -[IgnoreRA2] -0=GAARMORY -1=APACHE -2=DeathDummy -3=WEEDGUY -4=GADUMY -5=NAWAST -6=GARADR -7=CAIRSFGL -8=CALIT01E -9=CALIT01N -10=CALIT01S -11=CALIT01W -12=CALIT03E -13=CALIT03N -14=CALIT03S -15=CALIT03W -16=CALIT02L -17=CALIT02R -18=NAHPAD -19=CAEURO01 -20=CACITY01 -21=CACITY02 -22=CACITY03 -23=CACITY04 -24=CITY06 -25=CITY05 -26=CITY04 -27=CITY03 -28=CITY02 -29=CITY01 -30=CAARMR -31=TREE29 -32=TREE30 -33=CANEWY05 -34=REDLAMP -35=GRENLAMP -36=BLUELAMP -37=YELWLAMP -38=PURPLAMP -39=INORANLAMP -;40=NEGLAMP ; NEGLAMP added again, invisible in game -41=NEGRED -42=TSTLAMP -43=CAPOL01E -44=CAPOL01N -45=CAPOL01S -46=CAPOL01W -47=CASIN01E -48=CASIN01N -49=CASIN01W -50=CASIN01S -51=GAGREEN -52=GALITE -53=CARGOPLANE -; 54=CAHOSP -55=XCOMET -56=CAKRMW -57=CAFNCB -58=CAFNCW -59=CAFNCP -60=CR1 -61=CR2 -62=CR3 -63=CR4 -64=CR5 -65=CR6 -66=BURN01 -67=BURN02 -68=BURN03 -69=BURN04 -70=BURN05 -71=BURN06 -72=BURN07 -73=BURN08 -74=BURN09 -75=BURN10 -76=BURN11 -77=BURN12 -78=BURN13 -79=BURN14 -80=BURN15 -Another one :) =BURN16 -82=CASYDN01 -83=CATIME -84=CALOND02;? -;85=CAMORR01 -;86=CAMORR02 -;87=CAMORR03 -;88=CAEGYP06 -;89=CAMORR04 -;90=CAEGYP04 -;91=CAEGYP05 -;92=CALA06 - -97=DNOB;? -98=GAWRONG -99=CALA02;? -100=CAMOON01 -;101=CAEGYP01 -102=UTNK -103=YDUM -104=WWLF -105=YADOG -106=YDOG -107=SMON -108=CMON -109=YADEPT -110=CALOND06;? -;111=TREE32 - -; Yes means Image= in art ini will be ignored -[IgnoreArtImage] -CAML=yes - -; hacks for shore pieces -; shore id_pos=iswater -; pos: count from left top to right, then next "row" - -; RA2 only needs one fix (for URBAN specifically) -[ShoreTerrainRA2] -12_4=1 -12_5=1 - -; But TS needs all :( -[ShoreTerrainTS] -0_0=0 -0_1=0 -0_2=1 -0_3=1 -1_0=0 -1_1=0 -2_0=0 -2_1=0 -3_0=0 -4_0=0 -4_1=0 -4_3=0 -5_0=0 -5_1=0 -5_2=0 -6_0=0 -7_0=0 -8_0=0 -8_2=0 -9_0=0 -9_2=0 -10_0=0 -10_2=0 -11_0=0 -12_0=0 -12_1=0 -12_3=0 -13_0=0 -13_3=0 -13_4=0 -14_2=0 -15_2=0 -16_2=0 -16_3=0 -17_2=0 -17_3=0 -18_2=0 -18_3=0 -19_1=0 -20_3=0 -20_4=0 -20_5=0 -21_2=0 -21_4=0 -21_5=0 -22_3=0 -23_3=0 -24_1=0 -24_3=0 -25_1=0 -25_3=0 -26_1=0 -26_3=0 -27_1=0 -28_1=0 -28_2=0 -28_5=0 -29_2=0 -29_4=0 -29_5=0 -30_1=0 -31_1=0 -32_0=0 -32_1=0 -32_2=0 -33_0=0 -33_1=0 -33_2=0 -34_0=0 -34_2=0 -34_3=0 -35_0=0 -35_2=0 -35_3=0 -36_1=0 -36_2=0 -36_3=0 -37_1=0 -37_2=0 -37_3=0 -38_0=0 -38_1=0 -38_3=0 -39_0=0 -39_1=0 -39_3=0 - -; tilesets that may be modified using the shore or a similar logic -[SoftTileSets] -ClearTile=1 -RoughTile=1 -ClearToRoughLat=1 -SandTile =1 -ClearToSandLat=1 -GreenTile=1 -ClearToGreenLat=1 -PaveTile=1 -MiscPaveTile =1 -ClearToPaveLat=1 -RoughGround=0; no -WaterSet=1 -ShorePieces=1 - -; corner strings are: cornerleft, cornerright, cornerbottom, cornertop - -[CliffBackData] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataAlt] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataNEWURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffFrontData] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataAlt] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataNEWURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -; EVENTS AND ACTIONS -; param type format: Description,ListType -; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): -; 0-Nothing -; 1-Houses -; 2-Teamtypes -; 3-UnitTypes -; 4-InfantryTypes -; 5-AircraftTypes -; 6-BuildingTypes -; 7-Videos -; 8-tutorial texts -; 9-Triggers -; 10-yes/no -; 11=sounds -; 12=themes -; 13=speeches -; 14=special weapons -; 15=animations -; 16=particles -; 17=waypoints -; 18=crate types * -; 19=speech bubble types * -; 20=Global variables <--- wrong, local variables! -; 21=.CSF strings (RA2 only) * -; 22=Tag * -; 23=Meteors * -; 24=Weapons * -; 25=Light behavior * -; 26=Shower * -; 27=Rules Global variables -; 28=Building INI names -; 29=Techtypes - - -; ParamTypes -; Name, ListType, [Code] -[ParamTypes] --1=δʹÓÃ,0,1;not listed in FA2 -0=δʹÓÃ,0 -1=δ֪,0 -2=ËùÊô·½,1 -3=¾Ö²¿±äÁ¿,20 -4=ʱ¼ä,0 -5=»ý·Ö,0 -6=ÊýÖµ,0 -7=С¶ÓÀàÐÍ,2 -8=½¨Öþ,6 -9=·ÉÐÐÆ÷,5 -10=²½±ø,4 -11=µ¥Î»,3 -12=µçÓ°,7 -13=Îı¾,8 -14=´¥·¢,9 -15=ÔÊÐí,10 -16=ÉùÒô,11 -17=ÀÖÇú,12 -18=ÓïÒô,13 -19=²½Öè,0 -20=³¬¼¶ÎäÆ÷,14 -21=×ó,0 -22=ÉÏ,0 -23=¿í,0 -24=¸ß,0 -25=¶¯»­,15 -26=Á£×Ó,16 -27=³ÖÐøÊ±¼ä,0 -28=ËÙ¶È,0 -29=VoxelË鯬IDºÅ,29 -30=·¾¶µã,17 -31=ľÏäÀàÐÍ,PT_CrateTypes -32=ÓïÒôÌáʾ¿ò,19 -33=×Ö·û,21 -34=ÐÐΪ,9 -35=È«¾Ö±äÁ¿,27 -36=ÌØ¶¨ÎäÆ÷,14 -37=ÒѼ¤»î,10 -38=´¥·¢±êÇ©,22 -39=¿Æ¼¼ÀàÐÍ,0 -40=À´Ô´,0 -41=ÎäÆ÷,24 -42=·¢¹âÐÐΪ,25 -43=ʼþ,9 -44=ÕóÓê,26 -45=¸¡µãÖµ,0 -46=¿Æ¼¼ÀàÐÍ,29,2 -47=½¨Öþ,28 -48=ÊýÁ¿,0 -49=ÏñËØ¶¯»­,23 -50=ӰƬ,7 -51=À×´ïʼþ,PT_RadarEventTypes - -; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C -; Origianl definitinos are as follows: -; "Money" -; "Unit" -; "HealBase" -; "Cloak" -; "Explosion" -; "Napalm" -; "Squad" -; "Darkness" -; "Reveal" -; "Armor" -; "Speed" -; "Firepower" -; "ICBM" -; "Invulnerability" -; "Veteran" -; "IonStorm" -; "Gas" -; "Tiberium" -; "Pod" -[PT_CrateTypes] -FixedValueCount=19 -0=0 - Ç®Ïä -1=1 - Ëæ»úÔØ¾ßµ¥Î» -2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ -3=3 - ÓÀ¾ÃÒþÐÎ -4=4 - C4µ¯Í·É˺¦ -5=5 - »ðÑæ±¬Õ¨É˺¦ -6=6 - Ëæ»ú²½±øÐ¡¶Ó -7=7 - ȫͼºÚÄ» -8=8 - ÏÔʾȫµØÍ¼ -9=9 - »¤¼×Ç¿»¯ -10=10 - ËÙ¶ÈÌáÉý -11=11 - »ðÁ¦ÌáÉý -12=12 - ºËµ¯³¬Îäµ¥´Î -13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© -14=14 - ¾­ÑéÉýÐÇ -15=15 - Àë×ӷ籩£¨ÎÞЧ£© -16=16 - ¶¾ÆøÁ£×Ó -17=17 - СƬ¿óʯ -18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© - -; Controls for radar events -; The events, in order, are: -; (1) Generic Combat Event, -; (2) Generic Noncombat Event, -; (3) Dropzone Event, -; (4) Base Under Attack Event, -; (5) Harvester Under Attack Event, -; (6) Enemy Object Sensed Event -[PT_RadarEventTypes] -FixedValueCount=6 -0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ -1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ -2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ -3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ -4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ -5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» - -[ScriptParams] -0=ռλ,0 -1=Ä¿±ê,1 -2=·¾¶µã,2 -3=Ìø×ªÖÁÐÐ#,3 -4=·ÖÀëС¶Ó,4 -5=È«¾Ö±äÁ¿,5 -6=½Å±¾,6 -7=С¶Ó,7 -8=ËùÊô·½,8 -9=ÓïÒô,9 -10=ÒôЧ,10 -11=ӰƬ,11 -12=ÒôÀÖ,12 -13=¹ú¼Ò,13 -14=¾Ö²¿±äÁ¿,14 -15=³¯Ïò,15 -16=½¨Öþ,16 -17=¶¯»­,17 -18=¶Ô»°ÆøÅÝ,18 -19=½øÈë״̬,19 -20=ÕûÊý,0 -21=²¼¶û,20 -22=Ä¿±êÁбí,SP_TargetList - -[SP_TargetList] -ParseFromSection=TeamTargetTechnoTypes -ExtraValueType=0 - -[ScriptExtras] -0=SE_TargetScanStrategy - -[SE_TargetScanStrategy] -0=0 - ×îСÍþв -1=1 - ×î´óÍþв -2=2 - ×î½ü¾àÀë -3=3 - ×îÔ¶¾àÀë - -;Index=Name,ParamType,Obsolete,YROnly,Description -[ScriptsRA2] -0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ -1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ -2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ -3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ -4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ -5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© -6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ -7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ -8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ -9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ -10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ -11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ -12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ -13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© -14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© -15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© -16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ -17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© -18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© -19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ -20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© -21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ -22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ -23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ -24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ -25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ -26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ -27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ -28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ -29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ -30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ -31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ -32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ -33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ -34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© -35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ -36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ -37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ -38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ -39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ -40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ -41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ -42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ -43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ -44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© -45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© -46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ -47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ -48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ -49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ -50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© -51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ -52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ -53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ -56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -;YR Only -58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ -59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ -60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ -61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ -62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ -63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ -64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ -;Hares Only -65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ -66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ -67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ -68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ -69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ -70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü -71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï - -[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? -0=5 -1=9 -;2=10 -3=11 - -; events format: -; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] -; negative number for type currently not supported (only Actions do support yet)! -; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. -; NOTE: ID must be the same like # -[EventsRA2] -0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 -1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 -2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 -3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 -4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 -5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 -6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 -7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 -8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 -9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 -10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 -11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 -12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 -13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 -14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 -15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 -16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 -17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 -18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 -19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 -20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 -21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 -22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 -23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 -24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 -25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 -26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 -27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 -28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 -29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 -30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 -31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 -32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 -33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 -34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 -35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 -36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 -37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 -38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 -39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 -40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 -41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 -42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 -43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 -44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 -45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 -46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 -47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 -48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 -49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 -50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 -51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 -52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 -53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 -54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 -55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 -56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 -57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 - -; YR -58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 -59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 - -; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters -60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 -61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 -86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 - - -; action format: -; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] -; if using negative number for type, param will be set to the absolute value of this number -; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. -; NOTE: ID must be the same like # -[ActionsRA2] -0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 -1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 -2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 -3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 -4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 -5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 -6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 -7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 -8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 -9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 -10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 -11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 -12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 -13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 -14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 -15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 -16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 -17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 -18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 -19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 -20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 -21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 -22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 -23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 -24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 -25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 -26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 -27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 -28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 -29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 -30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 -31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 -32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 -33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 -34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 -35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 -36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 -37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 -38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 -39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 -40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 -41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 -42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 -43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 -44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 -45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 -46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 -47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 -48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 -49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 -50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 -51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 -52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 -53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 -54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 -55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 -56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 -57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 -58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 -59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 -60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 -61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 -62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 -63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 -64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 -65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 -66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 -67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 -68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 -69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 -70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 -71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 -72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 -73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 -74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 -75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 -76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 -77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 -78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 -79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 -80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 -81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 -82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 -83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 -84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 -85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 -86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 -87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 -88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 -89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 -90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 -91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 -92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 -93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 -94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 -95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 -96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 -97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 -98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 -99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 -100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 -101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 -102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 -103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 -104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 -105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 -106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 -107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 -108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 -109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 -110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 -111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 -112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 -113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 -114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 -115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 -116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 -117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 -118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 -119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 -120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 -121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 -122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 -123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 -124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 -125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 -126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 -127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 -128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 -129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 - -; YR -130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 -131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 -132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 -133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 -134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 -135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 -136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 -137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 -138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 -139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 -140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 -141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 -142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 -143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 -144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 -145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 -;bellow only added in hares -146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 -147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 -148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 -149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 -150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 -151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 -152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 -153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 -154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 - -[BridgesTS] - -[BridgesRA2] - -[SpecialOverlayTS] - -[SpecialOverlayRA2] - -[IgnoreTerrainRA2] - -[TeamTemplates] -DefaultName=ĬÈÏ -Counts=3 -1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 -2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 -3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 - -; not NOSURFACES: -;[BuildingVoxelTurretsRA2] -;GTGCANX=-1 -;GTGCANY=0;-6 -;NASAMY=0;2 -;NALASRX=0 -;NALASRY=0;-3 -;NAFLAKY=10;10 - -[VehicleVoxelTurretsRA2Disabled] -;DISKX=-10 -;DISKY=-10 -;YTNKY=-30 -SREFX=4 -SREFY=3 - -[IgnoreArtImage] -BFRT=1 -CAML=1 - -[IgnoreSuperAnim1] - - -[IgnoreSuperAnim2] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim3] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim4] -NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -; fix for building list: -[GTGCAN] -AIBasePlanningSide=0 - -[YACOMD] -AIBasePlanningSide=2 - -[YADEPT] -AIBasePlanningSide=0 - -[NASPYB] -AIBasePlanningSide=2 - -; rename list for objects. ObjectID=StringID -[Rename] - -[MovieList] -Start=66; Anything below will not be listed! - -[StdBrushSize] -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 -WaterSet=2 - -[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 - -; SlopeSetPieces for cliffs have a specific direction. -; used for AutoLevel logic -; CURRENTLY IGNORED -[SlopeSetPiecesDirections] -Count=10 -0=Right_1 -1=Left_1 -2=Top_1 -3=Bottom_1 -4=Right_2 -5=Left_2 -6=Left_2 -7=Bottom_2 -8=Top_2 -9=Top_2 - -[LUNARLimits] -TreeMax=999 -TreeMin=999 - -[URBANLimits] -TreeMax=999 -;TreeMax=27 - -[TEMPERATELimits] -TreeMax=999 -;TreeMax=27 - -[SNOWLimits] -TreeMax=999 -;TreeMax=27 - -[NEWURBANLimits] -TreeMax=999 -;TreeMax=27 - -[DESERTLimits] -TreeMin=30 -TreeMax=999 - -; tileset ini overwritings -; only used by FinalAlert -[IgnoreSetTEMPERATE] -0=77 -1=78 -2=79 - -[IgnoreSetSNOW] -0=8 -1=46 - -[IgnoreSetURBAN] -0=49 -1=50 -2=51 -5=56 -7=30 -8=91 -9=92 -10=93 -11=94 -12=95 -13=96 -14=97 -15=98 -16=99 -17=100 -;3=53; Tunnel -;4=54; Tunnel Side -;6=73; Dirt Tunnel - -[IgnoreSetNEWURBAN] -0=101 - -[IgnoreSetDESERT] -0=19 -1=54 -2=53 -3=56 -4=73 -5=80 - -[IgnoreSetLUNAR] - -[UseSetTEMPERATE] -0=57 - -[UseSetSNOW] -[UseSetURBAN] - -[NewUrbanInfo] -Morphable2=114 -Ramps2=117 -Cliffs2=110 -CliffsWater2=112 - -; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! -; If a ground tile id exceeds this number, FA2 will assume the map is a YR map -[RA2TileMax] -Temperat=838 -Urban=1077 -Snow=798 - -[YRInfantry] -YENGINEER=1 -GGI=1 -INIT=1 -BORIS=1 -BRUTE=1 -VIRUS=1 -CLNT=1 -ARND=1 -STLN=1 -CAML=1 -EINS=1 -MUMY=1 -RMNV=1 -LUNR=1 -DNOA=1 -DNOB=1 -SLAV=1 -WWLF=1 -YDOG=1 -YADOG=1 - -[YRUnits] -YHVR=1 -PCV=1 -SMIN=1 -SMON=1 -YCAB=1 -YTNK=1 -BFRT=1 -TELE=1 -CAOS=1 -DDBX=1 -BCAB=1 -BSUB=1 -SCHP=1 -JEEP=1 -MIND=1 -DISK=1 -UTNK=1 -ROBO=1 -YDUM=1 -SCHD=1 -DOLY=1 -CBLC=1 -FTRK=1 -AMBU=1 -CIVP=1 - -[YRBuildings] -YACNST=1 -YAPOWR=1 -YABRCK=1 -YAWEAP=1 -YAYARD=1 -YADEPT=1 -YATECH=1 -GAFWLL=1 -YAGGUN=1 -YAPSYT=1 -NAINDP=1 -YAGRND=1 -YAGNTC=1 -CASLAB=1 -CATIME=1 -YAPPET=1 -CALOND04=1 -CALOND05=1 -CALOND06=1 -CAMOON01=1 -CATRAN03=1 -CAEAST01=1 -CAEGYP01=1 -CAEGYP02=1 -CAEGYP03=1 -CALA01=1 -CALA02=1 -CALA03=1 -CALA04=1 -CALA05=1 -CALOND01=1 -CALOND02=1 -CALOND03=1 -CAMORR01=1 -CAMORR02=1 -CAMORR03=1 -CASANF01=1 -CASANF02=1 -CASANF03=1 -CASANF04=1 -CASANF05=1 -CASEAT01=1 -NATBNK=1 -GAGATE_A=1 -CASANF09=1 -CASANF10=1 -CASANF11=1 -CASANF12=1 -CASANF13=1 -CASANF14=1 -CASANF06=1 -CASANF07=1 -CASANF08=1 -CASEAT02=1 -YACOMD=1 -YAPPPT=1 -GAROBO=1 -YAREFN=1 -YAROCK=1 -NABNKR=1 -CASANF15=1 -CASANF16=1 -CASANF17=1 -CASANF18=1 -CASIN03E=1 -CASIN03S=1 -CAURB01=1 -CAURB02=1 -CAURB03=1 -CAPOWR=1 -CALA07=1 -CAEGYP06=1 -CALA08=1 -CAEAST02=1 -CABARR01=1 -CABARR02=1 -CAMORR04=1 -CAMORR05=1 -CALA09=1 -CAEGYP04=1 -CAEGYP05=1 -CALA06=1 -CAMORR06=1 -CAMORR07=1 -CAMORR08=1 -CAMORR09=1 -CAMORR10=1 -CATIME01=1 -CATIME02=1 -CALA10=1 -CALA11=1 -CALA12=1 -CALA13=1 -CAPARK04=1 -CAPARK05=1 -CAPARK06=1 -CALA14=1 -CALA15=1 -CABUNK03=1 -CABUNK04=1 -CALUNR01=1 -CALUNR02=1 - -[YRTerrain] -TREE31=1 -TREE32=1 -TREE33=1 -TREE34=1 -TREE35=1 -TREE36=1 - -[YRAircraft] -BPLN=1 -SPYP=1 -CMISL=1 - -[YROverlay] -Begin=243; which number is the first from new YR overlay? - -; things only FinalAlert will ignore -; these are usually all dummies and leftovers from TS -[IgnoreRA2] -0=GAARMORY -1=APACHE -2=DeathDummy -3=WEEDGUY -4=GADUMY -5=NAWAST -6=GARADR -7=CAIRSFGL -8=CALIT01E -9=CALIT01N -10=CALIT01S -11=CALIT01W -12=CALIT03E -13=CALIT03N -14=CALIT03S -15=CALIT03W -16=CALIT02L -17=CALIT02R -18=NAHPAD -19=CAEURO01 -20=CACITY01 -21=CACITY02 -22=CACITY03 -23=CACITY04 -24=CITY06 -25=CITY05 -26=CITY04 -27=CITY03 -28=CITY02 -29=CITY01 -30=CAARMR -31=TREE29 -32=TREE30 -33=CANEWY05 -34=REDLAMP -35=GRENLAMP -36=BLUELAMP -37=YELWLAMP -38=PURPLAMP -39=INORANLAMP -;40=NEGLAMP ; NEGLAMP added again, invisible in game -41=NEGRED -42=TSTLAMP -43=CAPOL01E -44=CAPOL01N -45=CAPOL01S -46=CAPOL01W -47=CASIN01E -48=CASIN01N -49=CASIN01W -50=CASIN01S -51=GAGREEN -52=GALITE -53=CARGOPLANE -; 54=CAHOSP -55=XCOMET -56=CAKRMW -57=CAFNCB -58=CAFNCW -59=CAFNCP -60=CR1 -61=CR2 -62=CR3 -63=CR4 -64=CR5 -65=CR6 -66=BURN01 -67=BURN02 -68=BURN03 -69=BURN04 -70=BURN05 -71=BURN06 -72=BURN07 -73=BURN08 -74=BURN09 -75=BURN10 -76=BURN11 -77=BURN12 -78=BURN13 -79=BURN14 -80=BURN15 -Another one :) =BURN16 -82=CASYDN01 -83=CATIME -84=CALOND02;? -;85=CAMORR01 -;86=CAMORR02 -;87=CAMORR03 -;88=CAEGYP06 -;89=CAMORR04 -;90=CAEGYP04 -;91=CAEGYP05 -;92=CALA06 - -97=DNOB;? -98=GAWRONG -99=CALA02;? -100=CAMOON01 -;101=CAEGYP01 -102=UTNK -103=YDUM -104=WWLF -105=YADOG -106=YDOG -107=SMON -108=CMON -109=YADEPT -110=CALOND06;? -;111=TREE32 - -; Yes means Image= in art ini will be ignored -[IgnoreArtImage] -CAML=yes - -; hacks for shore pieces -; shore id_pos=iswater -; pos: count from left top to right, then next "row" - -; RA2 only needs one fix (for URBAN specifically) -[ShoreTerrainRA2] -12_4=1 -12_5=1 - -; But TS needs all :( -[ShoreTerrainTS] -0_0=0 -0_1=0 -0_2=1 -0_3=1 -1_0=0 -1_1=0 -2_0=0 -2_1=0 -3_0=0 -4_0=0 -4_1=0 -4_3=0 -5_0=0 -5_1=0 -5_2=0 -6_0=0 -7_0=0 -8_0=0 -8_2=0 -9_0=0 -9_2=0 -10_0=0 -10_2=0 -11_0=0 -12_0=0 -12_1=0 -12_3=0 -13_0=0 -13_3=0 -13_4=0 -14_2=0 -15_2=0 -16_2=0 -16_3=0 -17_2=0 -17_3=0 -18_2=0 -18_3=0 -19_1=0 -20_3=0 -20_4=0 -20_5=0 -21_2=0 -21_4=0 -21_5=0 -22_3=0 -23_3=0 -24_1=0 -24_3=0 -25_1=0 -25_3=0 -26_1=0 -26_3=0 -27_1=0 -28_1=0 -28_2=0 -28_5=0 -29_2=0 -29_4=0 -29_5=0 -30_1=0 -31_1=0 -32_0=0 -32_1=0 -32_2=0 -33_0=0 -33_1=0 -33_2=0 -34_0=0 -34_2=0 -34_3=0 -35_0=0 -35_2=0 -35_3=0 -36_1=0 -36_2=0 -36_3=0 -37_1=0 -37_2=0 -37_3=0 -38_0=0 -38_1=0 -38_3=0 -39_0=0 -39_1=0 -39_3=0 - -; tilesets that may be modified using the shore or a similar logic -[SoftTileSets] -ClearTile=1 -RoughTile=1 -ClearToRoughLat=1 -SandTile =1 -ClearToSandLat=1 -GreenTile=1 -ClearToGreenLat=1 -PaveTile=1 -MiscPaveTile =1 -ClearToPaveLat=1 -RoughGround=0; no -WaterSet=1 -ShorePieces=1 - -; corner strings are: cornerleft, cornerright, cornerbottom, cornertop - -[CliffBackData] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataAlt] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataNEWURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffFrontData] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataAlt] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataNEWURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -; EVENTS AND ACTIONS -; param type format: Description,ListType -; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): -; 0-Nothing -; 1-Houses -; 2-Teamtypes -; 3-UnitTypes -; 4-InfantryTypes -; 5-AircraftTypes -; 6-BuildingTypes -; 7-Videos -; 8-tutorial texts -; 9-Triggers -; 10-yes/no -; 11=sounds -; 12=themes -; 13=speeches -; 14=special weapons -; 15=animations -; 16=particles -; 17=waypoints -; 18=crate types * -; 19=speech bubble types * -; 20=Global variables <--- wrong, local variables! -; 21=.CSF strings (RA2 only) * -; 22=Tag * -; 23=Meteors * -; 24=Weapons * -; 25=Light behavior * -; 26=Shower * -; 27=Rules Global variables -; 28=Building INI names -; 29=Techtypes - - -; ParamTypes -; Name, ListType, [Code] -[ParamTypes] --1=δʹÓÃ,0,1;not listed in FA2 -0=δʹÓÃ,0 -1=δ֪,0 -2=ËùÊô·½,1 -3=¾Ö²¿±äÁ¿,20 -4=ʱ¼ä,0 -5=»ý·Ö,0 -6=ÊýÖµ,0 -7=С¶ÓÀàÐÍ,2 -8=½¨Öþ,6 -9=·ÉÐÐÆ÷,5 -10=²½±ø,4 -11=µ¥Î»,3 -12=µçÓ°,7 -13=Îı¾,8 -14=´¥·¢,9 -15=ÔÊÐí,10 -16=ÉùÒô,11 -17=ÀÖÇú,12 -18=ÓïÒô,13 -19=²½Öè,0 -20=³¬¼¶ÎäÆ÷,14 -21=×ó,0 -22=ÉÏ,0 -23=¿í,0 -24=¸ß,0 -25=¶¯»­,15 -26=Á£×Ó,16 -27=³ÖÐøÊ±¼ä,0 -28=ËÙ¶È,0 -29=VoxelË鯬IDºÅ,29 -30=·¾¶µã,17 -31=ľÏäÀàÐÍ,PT_CrateTypes -32=ÓïÒôÌáʾ¿ò,19 -33=×Ö·û,21 -34=ÐÐΪ,9 -35=È«¾Ö±äÁ¿,27 -36=ÌØ¶¨ÎäÆ÷,14 -37=ÒѼ¤»î,10 -38=´¥·¢±êÇ©,22 -39=¿Æ¼¼ÀàÐÍ,0 -40=À´Ô´,0 -41=ÎäÆ÷,24 -42=·¢¹âÐÐΪ,25 -43=ʼþ,9 -44=ÕóÓê,26 -45=¸¡µãÖµ,0 -46=¿Æ¼¼ÀàÐÍ,29,2 -47=½¨Öþ,28 -48=ÊýÁ¿,0 -49=ÏñËØ¶¯»­,23 -50=ӰƬ,7 -51=À×´ïʼþ,PT_RadarEventTypes - -; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C -; Origianl definitinos are as follows: -; "Money" -; "Unit" -; "HealBase" -; "Cloak" -; "Explosion" -; "Napalm" -; "Squad" -; "Darkness" -; "Reveal" -; "Armor" -; "Speed" -; "Firepower" -; "ICBM" -; "Invulnerability" -; "Veteran" -; "IonStorm" -; "Gas" -; "Tiberium" -; "Pod" -[PT_CrateTypes] -FixedValueCount=19 -0=0 - Ç®Ïä -1=1 - Ëæ»úÔØ¾ßµ¥Î» -2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ -3=3 - ÓÀ¾ÃÒþÐÎ -4=4 - C4µ¯Í·É˺¦ -5=5 - »ðÑæ±¬Õ¨É˺¦ -6=6 - Ëæ»ú²½±øÐ¡¶Ó -7=7 - ȫͼºÚÄ» -8=8 - ÏÔʾȫµØÍ¼ -9=9 - »¤¼×Ç¿»¯ -10=10 - ËÙ¶ÈÌáÉý -11=11 - »ðÁ¦ÌáÉý -12=12 - ºËµ¯³¬Îäµ¥´Î -13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© -14=14 - ¾­ÑéÉýÐÇ -15=15 - Àë×ӷ籩£¨ÎÞЧ£© -16=16 - ¶¾ÆøÁ£×Ó -17=17 - СƬ¿óʯ -18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© - -; Controls for radar events -; The events, in order, are: -; (1) Generic Combat Event, -; (2) Generic Noncombat Event, -; (3) Dropzone Event, -; (4) Base Under Attack Event, -; (5) Harvester Under Attack Event, -; (6) Enemy Object Sensed Event -[PT_RadarEventTypes] -FixedValueCount=6 -0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ -1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ -2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ -3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ -4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ -5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» - -[ScriptParams] -0=ռλ,0 -1=Ä¿±ê,1 -2=·¾¶µã,2 -3=Ìø×ªÖÁÐÐ#,3 -4=·ÖÀëС¶Ó,4 -5=È«¾Ö±äÁ¿,5 -6=½Å±¾,6 -7=С¶Ó,7 -8=ËùÊô·½,8 -9=ÓïÒô,9 -10=ÒôЧ,10 -11=ӰƬ,11 -12=ÒôÀÖ,12 -13=¹ú¼Ò,13 -14=¾Ö²¿±äÁ¿,14 -15=³¯Ïò,15 -16=½¨Öþ,16 -17=¶¯»­,17 -18=¶Ô»°ÆøÅÝ,18 -19=½øÈë״̬,19 -20=ÕûÊý,0 -21=²¼¶û,20 -22=Ä¿±êÁбí,SP_TargetList - -[SP_TargetList] -ParseFromSection=TeamTargetTechnoTypes -ExtraValueType=0 - -[ScriptExtras] -0=SE_TargetScanStrategy - -[SE_TargetScanStrategy] -0=0 - ×îСÍþв -1=1 - ×î´óÍþв -2=2 - ×î½ü¾àÀë -3=3 - ×îÔ¶¾àÀë - -;Index=Name,ParamType,Obsolete,YROnly,Description -[ScriptsRA2] -0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ -1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ -2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ -3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ -4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ -5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© -6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ -7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ -8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ -9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ -10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ -11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ -12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ -13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© -14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© -15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© -16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ -17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© -18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© -19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ -20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© -21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ -22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ -23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ -24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ -25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ -26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ -27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ -28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ -29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ -30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ -31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ -32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ -33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ -34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© -35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ -36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ -37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ -38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ -39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ -40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ -41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ -42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ -43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ -44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© -45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© -46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ -47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ -48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ -49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ -50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© -51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ -52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ -53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ -56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -;YR Only -58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ -59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ -60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ -61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ -62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ -63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ -64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ -;Hares Only -65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ -66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ -67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ -68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ -69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ -70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü -71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï - -[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? -0=5 -1=9 -;2=10 -3=11 - -; events format: -; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] -; negative number for type currently not supported (only Actions do support yet)! -; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. -; NOTE: ID must be the same like # -[EventsRA2] -0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 -1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 -2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 -3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 -4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 -5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 -6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 -7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 -8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 -9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 -10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 -11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 -12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 -13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 -14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 -15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 -16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 -17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 -18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 -19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 -20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 -21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 -22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 -23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 -24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 -25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 -26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 -27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 -28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 -29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 -30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 -31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 -32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 -33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 -34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 -35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 -36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 -37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 -38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 -39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 -40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 -41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 -42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 -43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 -44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 -45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 -46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 -47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 -48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 -49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 -50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 -51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 -52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 -53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 -54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 -55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 -56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 -57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 - -; YR -58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 -59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 - -; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters -60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 -61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 -86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 - - -; action format: -; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] -; if using negative number for type, param will be set to the absolute value of this number -; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. -; NOTE: ID must be the same like # -[ActionsRA2] -0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 -1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 -2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 -3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 -4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 -5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 -6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 -7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 -8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 -9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 -10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 -11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 -12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 -13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 -14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 -15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 -16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 -17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 -18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 -19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 -20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 -21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 -22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 -23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 -24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 -25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 -26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 -27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 -28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 -29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 -30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 -31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 -32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 -33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 -34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 -35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 -36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 -37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 -38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 -39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 -40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 -41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 -42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 -43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 -44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 -45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 -46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 -47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 -48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 -49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 -50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 -51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 -52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 -53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 -54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 -55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 -56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 -57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 -58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 -59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 -60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 -61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 -62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 -63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 -64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 -65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 -66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 -67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 -68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 -69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 -70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 -71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 -72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 -73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 -74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 -75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 -76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 -77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 -78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 -79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 -80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 -81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 -82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 -83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 -84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 -85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 -86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 -87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 -88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 -89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 -90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 -91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 -92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 -93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 -94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 -95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 -96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 -97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 -98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 -99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 -100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 -101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 -102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 -103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 -104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 -105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 -106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 -107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 -108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 -109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 -110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 -111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 -112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 -113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 -114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 -115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 -116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 -117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 -118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 -119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 -120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 -121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 -122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 -123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 -124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 -125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 -126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 -127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 -128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 -129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 - -; YR -130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 -131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 -132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 -133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 -134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 -135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 -136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 -137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 -138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 -139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 -140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 -141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 -142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 -143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 -144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 -145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 -;bellow only added in hares -146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 -147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 -148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 -149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 -150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 -151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 -152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 -153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 -154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 - -[BridgesTS] - -[BridgesRA2] - -[SpecialOverlayTS] - -[SpecialOverlayRA2] - -[IgnoreTerrainRA2] - -[Theaters] -0=TEMPERATE,TEMPERATE -1=SNOW,SNOW -2=URBAN,URBAN -3=NEWURBAN,NEWURBAN -4=LUNAR,LUNAR -5=DESERT,DESERT - -; Letter abbreviations for different theaters -; Only works in file loading -; First = file suffix (xxxx.~~~, iso~~~.pal), must be 3 letters -; Second = new theater letter (G~CNST) -[TheaterSuffixes] -TEMPERATE=TEM,T -SNOW=SNO,A -URBAN=URB,U -NEWURBAN=UBN,N -LUNAR=LUN,L -DESERT=DES,D - -; Order: Theater, SmoothTileSet, LATTileSet[, Skip LAT Tiles, ClearTileSet] -[LATGroups] -0=SNOW,TXSnowGrass,TXSnowGrassLAT,TXSnowGrassSkipLAT -1=SNOW,TXSnowPave,TXSnowPaveLAT,TXSnowPaveSkipLAT -2=TEMPERATE,TXTemperatePave,TXTemperatePaveLAT,TXTemperatePaveSkipLAT -;newurban is disabled by default, for the vanilla pave (114) has no LAT. -;3=NEWURBAN,TXNewUrbanPave,TXNewUrbanPaveLAT,TXNewUrbanPaveSkipLAT -4=DESERT,TXDesertPave,TXDesertPaveLAT,TXDesertPaveSkipLAT -; TX remove 33 from lat system -5=LUNAR,TXLunarSand,TXTXLunarSandLAT - -; FA2 will first read this, and then [General] -; in theater INI (not include Skip LAT Tiles). -[LATSettings] -TXSnowGrass=127 -TXSnowGrassLAT=131 -TXSnowPave=97 -TXSnowPaveLAT=130 -TXTemperatePave=93 -TXTemperatePaveLAT=94 -TXNewUrbanPave=114 -TXNewUrbanPaveLAT=178 -TXDesertPave=107 -TXDesertPaveLAT=108 -TXLunarSand=33 -TXTXLunarSandLAT=34 -TXSnowGrassSkipLAT=20,44,69,71,103,104,105,128,129,132,133,134,135,142,143,147,148,149,150,162,169,171,172 -TXSnowPaveSkipLAT=20,44,69,71,87,88,98,102,103,104,105,110,111,113,116,117,120,121,124,128,129,132,133,134,135,136,142,143,147,148,149,150,162,169,171,172 -TXTemperatePaveSkipLAT=20,38,40,47,82,83,97,98,102 -TXNewUrbanPaveSkipLAT=10,15,16,17,18,19,20,23,25,35,38,40,47,76,78,80,83,85,87,102,104,106,107,117,120,121,133,137,138,140,146,148,152,155,156,171,172,174,181,190,191,192,195,203,123,124,130,131,132,134,139,144,145,170 -TXDesertPaveSkipLAT=20,38,40,47,97,98,111,112,118 - -; custom brush sizes -; format: X length + x + Y length -; it is not recommended to change first and second value -[BrushSizes] -0=1x1 -1=2x2 -2=3x3 -3=4x4 -4=5x5 -5=7x7 -6=10x10 -7=1x2 -8=2x1 -9=1x3 -10=3x1 -11=1x5 -12=5x1 -13=1x10 -14=10x1 - -; All tilesets in Morphables should have Morphable=true. -; If you want to specify a certain tile in the tileset, -; use # as a delimiter, e.g. Morphables=114#0,114#1 -; if there's no #, all tiles in the tileset will count -; You don't need to write existing RampBase here, -; only new ramps need to be added here. The Ramps -; and Morphables should have the same length of -; tilesets, and those tilesets should be one-to-one -; correspondence. -; AddTiles = some tilesets added to the Object Browser -; -> Ground, not necessarily be morphable. -; BigWaterIndices = tile indices of big (2x2) water -; default: first 6 tiles of [General]->WaterSet -; SmallWaterIndices = tile indices of small (1x1) water -; default: No. 9~13 tiles of [General]->WaterSet -; IgnoredTilesets = Tilesets not adding to the Object -; Browser -> Ground. Should be keys in [General] of -; theater INIs, e.g. WaterSet -[NewUrbanInfo] -Morphables=114,123 -Ramps=117,193 -Cliffs2=110 -CliffsWater2=112 -AddTiles=46,124,157 -IgnoredTilesets=PaveTile - -[TemperateInfo] -AddTiles=93 - -[SnowInfo] -Morphables=97 -Ramps=98 -Cliffs2=75 -CliffsWater2=79 -AddTiles=127,135 - -[UrbanInfo] -Morphables=13 -Ramps=140 - -[DesertInfo] -AddTiles=107 - -[LunarInfo] -AddTiles=33,91 -IgnoredTilesets=WaterSet - -;[OverlayDisplayLimit] -;243=48 ; This means FA2 won't display overlay 243's frames after 48 - -; BuildingTypes to be ignored during overlap detection. For Immune or InvisibleInGame cases. - -[StructureOverlappingCheckIgnores] -0=TSTLAMP -1=GALITE -2=NEGLAMP -3=INGALITE -4=REDLAMP -5=NEGRED -6=GRENLAMP -7=BLUELAMP -8=YELWLAMP -9=INYELWLAMP -10=PURPLAMP -11=INPURPLAMP -12=INORANLAMP -13=INGRNLMP -14=INREDLMP -15=INBLULMP -16=TEMMORLAMP -17=TEMDAYLAMP -18=TEMDUSLAMP -19=TEMNITLAMP -20=SNOMORLAMP -21=SNODAYLAMP -22=SNODUSLAMP -23=SNONITLAMP - -[Chinese-TileManagerDataTEM] -普通地å½?LAT=lat -悬崖=cliff -æ°´é�¢=water -水岸=shore -æ–œå�¡=ramp|slope -城市地形=pave -公路/å°�è·¯/人行é�?road|highway -地表装饰=feature|farm -æ¡?bridge -é“�è·¯=rail|train -éš§é�“=tunnel|tube -瀑布=waterfall -交界å¤?地形修å¤�=fix - -[Chinese-TileManagerDataSNO] -普通地å½?LAT=lat -悬崖=cliff -æ°´é�¢=water -水岸=shore -æ–œå�¡=ramp|slope -城市地形=pave -公路/å°�è·¯/人行é�?road|highway -地表装饰=feature|farm -æ¡?bridge -é“�è·¯=rail|train -éš§é�“=tunnel|tube -瀑布=waterfall -交界å¤?地形修å¤�=fix - -[Chinese-TileManagerDataURB] -普通地å½?LAT=lat -悬崖=cliff -æ°´é�¢=water -水岸=shore -æ–œå�¡=ramp|slope -城市地形=pave -公路/å°�è·¯/人行é�?road|highway -地表装饰=feature|farm -æ¡?bridge -é“�è·¯=rail|train -éš§é�“=tunnel|tube -瀑布=waterfall -交界å¤?地形修å¤�=fix - -[Chinese-TileManagerDataUBN] -普通地å½?LAT=lat -悬崖=cliff -æ°´é�¢=water -水岸=shore -æ–œå�¡=ramp|slope -城市地形=pave -公路/å°�è·¯/人行é�?road|highway -地表装饰=feature|farm -æ¡?bridge -é“�è·¯=rail|train -éš§é�“=tunnel|tube -瀑布=waterfall -交界å¤?地形修å¤�=fix - -[Chinese-TileManagerDataDES] -普通地å½?LAT=lat -悬崖=cliff -æ°´é�¢=water -水岸=shore -æ–œå�¡=ramp|slope -城市地形=pave -公路/å°�è·¯/人行é�?road|highway -地表装饰=feature|farm -æ¡?bridge -é“�è·¯=rail|train -éš§é�“=tunnel|tube -瀑布=waterfall -交界å¤?地形修å¤�=fix - -[Chinese-TileManagerDataLUN] -普通地å½?LAT=lat -悬崖=cliff -æ°´é�¢=water -水岸=shore -æ–œå�¡=ramp|slope -城市地形=pave -公路/å°�è·¯/人行é�?road|highway -地表装饰=feature|farm -æ¡?bridge -é“�è·¯=rail|train -éš§é�“=tunnel|tube -瀑布=waterfall -交界å¤?地形修å¤�=fix - -[English-TileManagerDataTEM] -Cliff=cliff -Water=water -Ramp=ramp|slope -Bridge=bridge -Road=road|highway -Feature=feature|farm -Railway=rail|train -Tunnel=tunnel|tube -Ramp=ramp|slope -Shore=shore -Pavement=pave -Fix=fix -LAT=lat - -[English-TileManagerDataSNO] -Cliff=cliff -Water=water -Ramp=ramp|slope -Bridge=bridge -Road=road|highway -Feature=feature|farm -Railway=rail|train -Tunnel=tunnel|tube -Ramp=ramp|slope -Shore=shore -Pavement=pave -Fix=fix -LAT=lat - -[English-TileManagerDataURB] -Cliff=cliff -Water=water -Ramp=ramp|slope -Bridge=bridge -Road=road|highway -Feature=feature|farm -Railway=rail|train -Tunnel=tunnel|tube -Ramp=ramp|slope -Shore=shore -Pavement=pave -Fix=fix -LAT=lat - -[English-TileManagerDataUBN] -Cliff=cliff -Water=water -Ramp=ramp|slope -Bridge=bridge -Road=road|highway -Feature=feature|farm -Railway=rail|train -Tunnel=tunnel|tube -Ramp=ramp|slope -Shore=shore -Pavement=pave -Fix=fix -LAT=lat - -[English-TileManagerDataDES] -Cliff=cliff -Water=water -Ramp=ramp|slope -Bridge=bridge -Road=road|highway -Feature=feature|farm -Railway=rail|train -Tunnel=tunnel|tube -Ramp=ramp|slope -Shore=shore -Pavement=pave -Fix=fix -LAT=lat - -[English-TileManagerDataLUN] -Cliff=cliff -Water=water -Ramp=ramp|slope -Bridge=bridge -Road=road|highway -Feature=feature|farm -Railway=rail|train -Tunnel=tunnel|tube -Ramp=ramp|slope -Shore=shore -Pavement=pave -Fix=fix -LAT=lat - -; override the same section in rules -;[Colors] -;Gold=43,239,255 - -; Comment these sections for FA2sp DLL drawing -; voxel turret locations -;[BuildingVoxelTurretsRA2] -;GTGCANX=00 -;GTGCANY=44;-6 -;NASAMY=-3;2 -;NALASRX=0 -;NALASRY=10;-3 -;NAFLAKY=6;10 ; flak needs additional correction below for every direction -;NAFLAKX=-5; -;NAFLAKX0=5 -;NAFLAKX2=-4; -;NAFLAKY2=5 -;NAFLAKX3=-5; -;NAFLAKY3=10 -;NAFLAKX4=5 -;NAFLAKY4=14 -;NAFLAKX5=10 -;NAFLAKY5=8 -;NAFLAKX6=15 -;NAFLAKY6=5 -;NAFLAKX7=12 -;NAFLAKY7=1 -;CAOUTPX=-30 -;CAOUTPY=12 -;YAREFNX=-30 -;YAREFNY=30 -;YAGGUNY=7 -;YAGGUNX=-5 -;YAGGUNX7=5; gattling gun needs some correction -;YAGGUNY7=-3 -;YAGGUNX6=11 -;YAGGUNY6=3 -;YAGGUNX5=10 -;YAGGUNY5=3 -;YAGGUNX4=3 -;YAGGUNY4=2 -;YAGGUNX0=5 - -; voxel barrel locations -;[BuildingVoxelBarrelsRA2] -;GTGCANX0=0 -;GTGCANY0=30;-6 -;GTGCANX1=-18 -;GTGCANY1=35;-6 -;GTGCANX2=-28 -;GTGCANY2=50;-6 -;GTGCANX3=-27 -;GTGCANY3=67;-6 -;GTGCANX4=00 -;GTGCANY4=73;-6 -;GTGCANX5=23 -;GTGCANY5=60;-6 -;GTGCANX6=30 -;GTGCANY6=48;-6 -;GTGCANX7=20 -;GTGCANY7=35;-6 - - -; not NOSURFACES: -;[BuildingVoxelTurretsRA2] -;GTGCANX=-1 -;GTGCANY=0;-6 -;NASAMY=0;2 -;NALASRX=0 -;NALASRY=0;-3 -;NAFLAKY=10;10 - -;[BuildingVoxelTurrets] - -;[VehicleVoxelTurretsRA2] -;DISKX=-10 -;DISKY=-10 -;YTNKY=-30 -;SREFX=4 -;SREFY=3 - -;[VehicleVoxelTurrets] - -;obsolete -;[IgnoreArtImage] -;BFRT=1 -;CAML=1 - -;[IgnoreActiveAnim2] - -[IgnoreSuperAnim1] -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim2] -NAMISL=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim3] -NAMISL=1 -GACSPH=1 - -[IgnoreSuperAnim4] -NAMISL=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[MovieList] -Start=66; Anything below will not be listed! - -[StdBrushSize] -;ClearTile=2 -;RoughTile=2 -;SandTile=2 -;GreenTile=2 -;PaveTile=2 -;WaterSet=2 - -; if completely surrounded by water ; currently ignored -[MinBrushSizeInWater] -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 - -; SlopeSetPieces for cliffs have a specific direction. -; used for AutoLevel logic -; CURRENTLY IGNORED -[SlopeSetPiecesDirections] -Count=10 -0=Right_1 -1=Left_1 -2=Top_1 -3=Bottom_1 -4=Right_2 -5=Left_2 -6=Left_2 -7=Bottom_2 -8=Top_2 -9=Top_2 - -[LUNARLimits] -TreeMax=999 -TreeMin=999 - -[URBANLimits] -TreeMax=999 - -[TEMPERATELimits] -TreeMax=999 - -[SNOWLimits] -TreeMax=999 - -[NEWURBANLimits] -TreeMax=999 - -[DESERTLimits] -TreeMax=999 - -; tileset ini overwritings -; only used by FinalAlert -[IgnoreSetTEMPERATE] -;0=53 -;1=54 -;2=56 -3=77 -4=78 -5=79 - -[IgnoreSetSNOW] -0=6 -1=66 -2=8 -3=46 -4=70 - -[IgnoreSetURBAN] -;0=49 -;1=50 -;2=51 -;3=53 -;4=54 -5=56 -;6=73 -;7=30 -8=91 -9=92 -10=93 -11=94 -12=95 -13=96 -14=97 -15=98 -16=99 -17=100 - -[IgnoreSetNEWURBAN] -;0=101 -1=207 - -[IgnoreSetDESERT] -;0=19 -;1=54 -;2=53 -;3=56 -;4=73 -;5=80 -6=121 -7=122 - -[IgnoreSetLUNAR] -0=34 -1=90 - -[UseSetTEMPERATE] -0=57 - -[UseSetSNOW] -[UseSetURBAN] - - -; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! -; If a ground tile id exceeds this number, FA2 will assume the map is a YR map -[RA2TileMax] -Temperat=838 -Urban=1077 -Snow=798 - -[YRInfantry] -YENGINEER=1 -GGI=1 -INIT=1 -BORIS=1 -BRUTE=1 -VIRUS=1 -CLNT=1 -ARND=1 -STLN=1 -CAML=1 -EINS=1 -MUMY=1 -RMNV=1 -LUNR=1 -DNOA=1 -DNOB=1 -SLAV=1 -WWLF=1 -YDOG=1 -YADOG=1 - -[YRUnits] -YHVR=1 -PCV=1 -SMIN=1 -SMON=1 -YCAB=1 -YTNK=1 -BFRT=1 -TELE=1 -CAOS=1 -DDBX=1 -BCAB=1 -BSUB=1 -SCHP=1 -JEEP=1 -MIND=1 -DISK=1 -UTNK=1 -ROBO=1 -YDUM=1 -SCHD=1 -DOLY=1 -CBLC=1 -FTRK=1 -AMBU=1 -CIVP=1 - -[YRBuildings] -YACNST=1 -YAPOWR=1 -YABRCK=1 -YAWEAP=1 -YAYARD=1 -YADEPT=1 -YATECH=1 -GAFWLL=1 -YAGGUN=1 -YAPSYT=1 -NAINDP=1 -YAGRND=1 -YAGNTC=1 -CASLAB=1 -CATIME=1 -YAPPET=1 -CALOND04=1 -CALOND05=1 -CALOND06=1 -CAMOON01=1 -CATRAN03=1 -CAEAST01=1 -CAEGYP01=1 -CAEGYP02=1 -CAEGYP03=1 -CALA01=1 -CALA02=1 -CALA03=1 -CALA04=1 -CALA05=1 -CALOND01=1 -CALOND02=1 -CALOND03=1 -CAMORR01=1 -CAMORR02=1 -CAMORR03=1 -CASANF01=1 -CASANF02=1 -CASANF03=1 -CASANF04=1 -CASANF05=1 -CASEAT01=1 -NATBNK=1 -GAGATE_A=1 -CASANF09=1 -CASANF10=1 -CASANF11=1 -CASANF12=1 -CASANF13=1 -CASANF14=1 -CASANF06=1 -CASANF07=1 -CASANF08=1 -CASEAT02=1 -YACOMD=1 -YAPPPT=1 -GAROBO=1 -YAREFN=1 -YAROCK=1 -NABNKR=1 -CASANF15=1 -CASANF16=1 -CASANF17=1 -CASANF18=1 -CASIN03E=1 -CASIN03S=1 -CAURB01=1 -CAURB02=1 -CAURB03=1 -CAPOWR=1 -CALA07=1 -CAEGYP06=1 -CALA08=1 -CAEAST02=1 -CABARR01=1 -CABARR02=1 -CAMORR04=1 -CAMORR05=1 -CALA09=1 -CAEGYP04=1 -CAEGYP05=1 -CALA06=1 -CAMORR06=1 -CAMORR07=1 -CAMORR08=1 -CAMORR09=1 -CAMORR10=1 -CATIME01=1 -CATIME02=1 -CALA10=1 -CALA11=1 -CALA12=1 -CALA13=1 -CAPARK04=1 -CAPARK05=1 -CAPARK06=1 -CALA14=1 -CALA15=1 -CABUNK03=1 -CABUNK04=1 -CALUNR01=1 -CALUNR02=1 - -[YRTerrain] -TREE31=1 -TREE32=1 -TREE33=1 -TREE34=1 -TREE35=1 -TREE36=1 - -[YRAircraft] -BPLN=1 -SPYP=1 -CMISL=1 - -[YROverlay] -Begin=243; which number is the first from new YR overlay? - -; custom autoshore logic -; theater, name, shore tile set, sand tile set -; theater = theater name -; name = displayed name (search translation in FALanguage.ini) -; shore tile set = used as shore, need to have the same order as vanilla shore -; can type tile set name in theater ini, like "ShorePieces" -; sand tile set = used as sand, should have only one 1x1 tile -; can type tile set name in theater ini, like "GreenTile" -; -1 = do not generate sand tile -[AutoShoreTypes] -0=TEMPERATE,Sand Shorelines,ShorePieces,GreenTile -1=SNOW,Ice Shorelines,ShorePieces,GreenTile -2=URBAN,Grass Shorelines,ShorePieces,GreenTile -3=NEWURBAN,Sand Shorelines,ShorePieces,GreenTile -4=NEWURBAN,*Grass Dark Shorelines*,129,124 -5=DESERT,Sand Shorelines,ShorePieces,GreenTile - -; hacks for shore pieces -; shore id_pos=iswater -; pos: count from left top to right, then next "row" -; RA2 only needs one fix (for URBAN specifically) -[ShoreTerrainRA2] -12_4=1 -12_5=1 - -; tilesets that may be modified using the shore or a similar logic -; 1 = affected, 0 = not affected -; in theater specific sections, format: tileIndex = 1/0 -; [SoftTileSetsTEM] -[SoftTileSets] -ClearTile=1 -RoughTile=1 -ClearToRoughLat=1 -SandTile=1 -ClearToSandLat=1 -GreenTile=1 -ClearToGreenLat=1 -PaveTile=1 -MiscPaveTile=1 -ClearToPaveLat=1 -RoughGround=0; no -WaterSet=1 -ShorePieces=1 - -[SoftTileSetsTEM] -81=0 - -; tilesets that will redraw extra image -; [RedrawExtraTileSetsTEM] - -; Normally, tile extra images are included when computing redraw relations. -; Tilesets specified in this ini section will disregard their extra images. -; [NoExtraHeightRedrawTileSetsTEM] - -; corner strings are: cornerleft, cornerright, cornerbottom, cornertop - -[CliffBackData] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataAlt] -vertic_diag_c=2 -;vertic_diag_2=0 -vertic_diag_0=2 -vertic_diag_1=3 -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=1 -;vertic_diag_cornertop_1=0 -vertic_diag_cornertop_0=1 -horiz_c=4 -horiz_0=22 -horiz_1=23 -horiz_2=24 -horiz_3=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -horiz_cornertop_c=0 -;horiz_cornertop_0=31 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffBackDataNEWURBAN] -vertic_diag_c=1 -;vertic_diag_4=0 -vertic_diag_0=2 -;vertic_diag_1=3; other cliff type -;vertic_diag_3=1 ; unused at moment -vertic_diag_cornertop_c=2 -vertic_diag_cornertop_0=0 -vertic_diag_cornertop_1=1 -horiz_c=2 -horiz_0=22 -;horiz_3=23 -;horiz_2=24 -horiz_1=25 ;2x1, not 2x2, unused at moment -horiz_cornerbottom_c=2 -horiz_cornerbottom_0=28 -horiz_cornerbottom_1=29 -vertic_c=4 -vertic_0=34 -vertic_1=35 -vertic_2=36 -vertic_3=37 ;2x1, not 2x2, unused at moment -vertic_cornerright_c=2 -vertic_cornerright_0=29 -vertic_cornerright_1=28 - -[CliffFrontData] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataAlt] -vertic_diag_c=2 -vertic_diag_0=18 -vertic_diag_1=19 -;vertic_diag_2=20 -;vertic_diag_3=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=4 -horiz_0=4 -horiz_1=5 -horiz_2=6 -horiz_3=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=6 -horiz_diag_0=8 -horiz_diag_1=9 -horiz_diag_2=10 -horiz_diag_3=11 ; unused at moment -horiz_diag_4=12 ; unused at moment -horiz_diag_5=13 ; unused at moment -vertic_c=4 -vertic_0=14 -vertic_1=15 -vertic_2=16 -vertic_3=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[CliffFrontDataNEWURBAN] -vertic_diag_c=1 -vertic_diag_0=18 -;vertic_diag_2=19 ; other cliff type -;vertic_diag_3=20 ; other cliff type -;vertic_diag_1=21 ; unused at moment -vertic_diag_cornerleft_c=1 -vertic_diag_cornerleft_0=20 -;vertic_diag_cornerleft_1=21 -vertic_diag_cornerright_c=2 -vertic_diag_cornerright_0=32 -vertic_diag_cornerright_1=33 -horiz_c=2 -horiz_0=4 -;horiz_3=5 ; other cliff type -;horiz_2=6 ; other cliff type -horiz_1=7 ;2x1, not 2x2, unused at moment -horiz_cornertop_c=1 -horiz_cornertop_0=1 -horiz_diag_c=2 -horiz_diag_0=8 -;horiz_diag_4=9 ; other cliff type -;horiz_diag_2=10 ; other cliff type -horiz_diag_1=11 ; unused at moment -;horiz_diag_3=12 ; unused at moment -;horiz_diag_5=13 ; unused at moment -vertic_c=2 -vertic_0=14 -;vertic_3=15 ; other cliff type -;vertic_2=16 ; other cliff type -vertic_1=17 ;2x1, not 2x2, unused at moment -vertic_cornerleft_c=1 -vertic_cornerleft_0=21 - -[BridgesTS] - -[BridgesRA2] - -[SpecialOverlayTS] - -[SpecialOverlayRA2] - - +[IgnoreTerrainRA2] \ No newline at end of file diff --git a/Supplementary/RevengeNow/README.md b/Supplementary/RevengeNow/README.md index f6677820..ac29a223 100644 --- a/Supplementary/RevengeNow/README.md +++ b/Supplementary/RevengeNow/README.md @@ -7,24 +7,19 @@ ## 包å�«æ–‡ä»¶æ¸…å�• 1. **`FAData.ini`**: - - å�¯ç”¨äº†å…¨å¥—顺åº�ä¿�æŒ�机制: - - `SaveMap.PreserveINISorting=true`:ä¿�存地图时ä¿�æŒ�所有 INI å°�节原有的出现顺åº�。 - - `SaveMap.PreserveINIKeySorting=true`:ä¿�存地图时ä¿�æŒ�å°�节内部键值对(Key=Value)原有的出现顺åº�(ä¸�å†�按字典/字符串长度排åº�)。 - - `SaveMap.KeepComments=true`:ä¿�存地图时ä¿�留注释。 - - å�¯ç”¨äº† Phobos 扩展特性: - - `ExtWaypoints=true`(无é™�路径点) - - `ExtVariables=true`(无é™�局部å�˜é‡�) - - `ExtOverlays=true`(无é™�覆盖物) - - å�¯ç”¨äº†ä¾¿æ�·å·¥ä½œæµ�选项: - - `ReloadGameFromMapFolder=true`(直接从地图目录加载资æº�与 INI) - - `BrowserRedraw=true`ã€�`ObjectBrowser.SafeHouses=true`ã€�`ObjectBrowser.CleanUp=true` - - 集æˆ�了æ�¥è‡ª `YR_RN_Mission_Editor` çš„ RN 专用å°�节与模æ�¿ï¼š + - 直接移æ¤�自 `YR_RN_Mission_Editor/MissionEditor/data/FinalAlert2/FAData.ini`(ä¿�留了原作者 Zero Fanker 的全套 RN 专属定制)。 + - 包å�« RN 专属å°�节与模æ�¿ï¼š - `[Sides]`(安塔列星等 12 个阵è�¥åˆ†ç±»å®šä¹‰ï¼‰ - - `[GameModes]`(RN 专属游æˆ�模å¼�列表) + - `[GameModes]`(标准作战ã€�混战ã€�淘金热ã€�攻城拔寨等 RN 模å¼�) - `[ForceUnitPalettePrefix]` - `[ScriptTemplates]`(巡逻ã€�å�¸è½½æ”»å‡»ç­‰è„šæœ¬æ¨¡æ�¿ï¼‰ - `[TeamTemplates]`(空é™�部队ã€�AI 生产å°�队ã€�çª�击å°�队等队ä¼�模æ�¿ï¼‰ - `[Customizations]` 与 `[Debug]`(å�•å�‘éš§é�“支æŒ�ã€�轨é�“逻辑开å�¯ç­‰ï¼‰ + - 仅增加了与目标编辑器ä¿�存对é½�所需的 3 项ä¿�åº�é…�置: + - `SaveMap.PreserveINISorting=true`:ä¿�存地图时ä¿�æŒ�所有 INI å°�节原有的出现顺åº�。 + - `SaveMap.PreserveINIKeySorting=true`:ä¿�存地图时ä¿�æŒ�å°�节内部键值对(Key=Value)原有的出现顺åº�(ä¸�å†�按字典/字符串长度排åº�)。 + - `SaveMap.KeepComments=true`:ä¿�存地图时ä¿�留注释。 + - **ä¸�包å�«ä»»ä½• Phobos 扩展特性**。 2. **`TileGroups.ini`**: - ç§»æ¤�自 `YR_RN_Mission_Editor/dist/FinalRevenge/TileGroups.ini`,包å�«æ¸©å’Œæ°”候ã€�雪地ã€�城市等地形的分组与快速选择é…�置。 3. **`FinalRevengeDefaults.ini`**: @@ -34,4 +29,4 @@ ## 使用方法 -将本目录中的 `FAData.ini`ã€�`TileGroups.ini`(å�Šæ‰€éœ€è¾…助文件)放置到 FA2 程åº�è¿�行根目录(或通过包å�«æœºåˆ¶å¼•入),å�¯åЍå�Žä¿�存地图å�³å�¯ä¿�è¯� INI 文件结构ã€�å°�节顺åº�与键值顺åº�与 `YR_RN_Mission_Editor` 完全一致。 +将本目录中的 `FAData.ini`ã€�`TileGroups.ini`(å�Šæ‰€éœ€è¾…助文件)放置到 FA2 程åº�è¿�行根目录(或覆盖使用),å�¯åЍå�Žä¿�存地图å�³å�¯ä¿�è¯� INI 文件结构ã€�å°�节顺åº�与键值顺åº�与 `YR_RN_Mission_Editor` 完全一致。 From 13f8bf204c3dddcbd353e63ce0f24b4dbe067e5d Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 00:05:12 -0400 Subject: [PATCH 04/24] refactor: abstract INI section and key order iteration into CINIOrderTracker range helpers --- FA2sp/Helpers/CINIOrderTracker.cpp | 131 +++++++++++++++++++++++++++++ FA2sp/Helpers/CINIOrderTracker.h | 23 +++++ FA2sp/Miscs/Hooks.INI.cpp | 61 +------------- FA2sp/Miscs/SaveMap.cpp | 111 +++--------------------- 4 files changed, 167 insertions(+), 159 deletions(-) diff --git a/FA2sp/Helpers/CINIOrderTracker.cpp b/FA2sp/Helpers/CINIOrderTracker.cpp index a1d81c8c..bc505195 100644 --- a/FA2sp/Helpers/CINIOrderTracker.cpp +++ b/FA2sp/Helpers/CINIOrderTracker.cpp @@ -1,5 +1,7 @@ #include #include "CINIOrderTracker.h" +#include +#include struct INIOrderData { @@ -109,3 +111,132 @@ SequencedKeyList* CINIOrderTracker::GetOrCreateKeyOrder(CINI* ini, const ppmfc:: } return nullptr; } + +std::vector CINIOrderTracker::GetSections(CINI* ini, bool preserveOrder) +{ + std::vector result; + if (!ini) + return result; + + result.reserve(ini->Dict.size()); + + if (!preserveOrder) + { + for (auto& pair : ini->Dict) + { + result.push_back({ pair.first, &pair.second }); + } + return result; + } + + std::unordered_set emitted; + emitted.reserve(ini->Dict.size()); + + // Pass 1: emit tracked sections in queued order that still exist in Dict + const auto* pSectionOrder = GetSectionOrder(ini); + if (pSectionOrder) + { + for (const auto& secName : *pSectionOrder) + { + auto it = ini->Dict.find(secName); + if (it != ini->Dict.end()) + { + result.push_back({ it->first, &it->second }); + emitted.insert(it->first); + } + } + } + + // Pass 2: emit untracked sections in Dict order and record them into tracker + for (auto& pair : ini->Dict) + { + if (emitted.find(pair.first) == emitted.end()) + { + RecordSection(ini, pair.first); + result.push_back({ pair.first, &pair.second }); + emitted.insert(pair.first); + } + } + + return result; +} + +std::vector CINIOrderTracker::GetSectionNames(CINI* ini, bool preserveOrder) +{ + auto sections = GetSections(ini, preserveOrder); + std::vector names; + names.reserve(sections.size()); + for (auto& s : sections) + { + names.push_back(std::move(s.Name)); + } + return names; +} + +std::vector CINIOrderTracker::GetEntries(CINI* ini, const ppmfc::CString& sectionName, INISection* section, bool preserveOrder) +{ + std::vector result; + if (!section) + { + if (!ini) + return result; + section = ini->GetSection(sectionName); + if (!section) + return result; + } + + auto& entities = section->GetEntities(); + result.reserve(entities.size()); + + if (!preserveOrder || !ini) + { + for (const auto& pair : entities) + { + result.push_back({ pair.first, pair.second }); + } + return result; + } + + std::unordered_set emitted; + emitted.reserve(entities.size()); + + // Pass 1: emit tracked keys in queued order that still exist in entities + const auto* pKeyOrder = GetKeyOrder(ini, sectionName); + if (pKeyOrder) + { + for (const auto& key : *pKeyOrder) + { + auto it = entities.find(key); + if (it != entities.end()) + { + result.push_back({ it->first, it->second }); + emitted.insert(it->first); + } + } + } + + // Pass 2: emit untracked keys in entities order and record them into tracker + for (const auto& pair : entities) + { + if (emitted.find(pair.first) == emitted.end()) + { + RecordKey(ini, sectionName, pair.first); + result.push_back({ pair.first, pair.second }); + emitted.insert(pair.first); + } + } + + return result; +} + +std::vector CINIOrderTracker::GetKeyNames(CINI* ini, const ppmfc::CString& sectionName, INISection* section, bool preserveOrder) +{ + auto entries = GetEntries(ini, sectionName, section, preserveOrder); + std::vector keys; + keys.reserve(entries.size()); + for (auto& e : entries) + { + keys.push_back(std::move(e.Key)); + } + return keys; +} diff --git a/FA2sp/Helpers/CINIOrderTracker.h b/FA2sp/Helpers/CINIOrderTracker.h index 77c6c421..752a21ee 100644 --- a/FA2sp/Helpers/CINIOrderTracker.h +++ b/FA2sp/Helpers/CINIOrderTracker.h @@ -2,9 +2,26 @@ #include #include +#include #include "SequencedKeyList.h" class CINI; +class INISection; + +struct SectionItem +{ + ppmfc::CString Name; + INISection* Section{ nullptr }; + + operator const ppmfc::CString&() const { return Name; } + operator const char*() const { return Name.GetString(); } +}; + +struct KeyValueItem +{ + ppmfc::CString Key; + ppmfc::CString Value; +}; class CINIOrderTracker { @@ -17,4 +34,10 @@ class CINIOrderTracker static const SequencedKeyList* GetSectionOrder(CINI* ini); static const SequencedKeyList* GetKeyOrder(CINI* ini, const ppmfc::CString& section); static SequencedKeyList* GetOrCreateKeyOrder(CINI* ini, const ppmfc::CString& section); + + // Range / iteration helpers: returns items in preserved queue order (or map dictionary order if preserveOrder is false) + static std::vector GetSections(CINI* ini, bool preserveOrder = true); + static std::vector GetSectionNames(CINI* ini, bool preserveOrder = true); + static std::vector GetEntries(CINI* ini, const ppmfc::CString& sectionName, INISection* section = nullptr, bool preserveOrder = true); + static std::vector GetKeyNames(CINI* ini, const ppmfc::CString& sectionName, INISection* section = nullptr, bool preserveOrder = true); }; diff --git a/FA2sp/Miscs/Hooks.INI.cpp b/FA2sp/Miscs/Hooks.INI.cpp index 59c0bcdf..98378f9e 100644 --- a/FA2sp/Miscs/Hooks.INI.cpp +++ b/FA2sp/Miscs/Hooks.INI.cpp @@ -687,69 +687,14 @@ DEFINE_HOOK(4536B0, CINI_WriteToFile, 8) } std::ostringstream oss; - auto writeSection = [&](const ppmfc::CString& sectionName, INISection& section) + for (const auto& [sectionName, pSection] : CINIOrderTracker::GetSections(pThis, ExtConfigs::SaveMap_PreserveINISorting)) { oss << "[" << sectionName << "]\n"; - if (ExtConfigs::SaveMap_PreserveINIKeySorting) + for (const auto& [key, value] : CINIOrderTracker::GetEntries(pThis, sectionName, pSection, ExtConfigs::SaveMap_PreserveINIKeySorting)) { - const auto* pKeyOrder = CINIOrderTracker::GetKeyOrder(pThis, sectionName); - if (pKeyOrder) - { - for (const auto& key : *pKeyOrder) - { - auto it = section.GetEntities().find(key); - if (it != section.GetEntities().end()) - { - oss << it->first << "=" << it->second << "\n"; - } - } - } - for (const auto& pair : section.GetEntities()) - { - if (!pKeyOrder || !pKeyOrder->Contains(pair.first)) - { - CINIOrderTracker::RecordKey(pThis, sectionName, pair.first); - oss << pair.first << "=" << pair.second << "\n"; - } - } - } - else - { - for (const auto& pair : section.GetEntities()) - oss << pair.first << "=" << pair.second << "\n"; + oss << key << "=" << value << "\n"; } oss << "\n"; - }; - - if (ExtConfigs::SaveMap_PreserveINISorting) - { - const auto* pSectionOrder = CINIOrderTracker::GetSectionOrder(pThis); - if (pSectionOrder) - { - for (const auto& secName : *pSectionOrder) - { - auto it = pThis->Dict.find(secName); - if (it != pThis->Dict.end()) - { - writeSection(it->first, it->second); - } - } - } - for (auto& [sectionName, pSection] : pThis->Dict) - { - if (!pSectionOrder || !pSectionOrder->Contains(sectionName)) - { - CINIOrderTracker::RecordSection(pThis, sectionName); - writeSection(sectionName, pSection); - } - } - } - else - { - for (auto& [sectionName, pSection] : pThis->Dict) - { - writeSection(sectionName, pSection); - } } FString output = oss.str(); diff --git a/FA2sp/Miscs/SaveMap.cpp b/FA2sp/Miscs/SaveMap.cpp index 72330a77..cd30dd31 100644 --- a/FA2sp/Miscs/SaveMap.cpp +++ b/FA2sp/Miscs/SaveMap.cpp @@ -793,35 +793,9 @@ bool SaveMapExt::SaveMap(CINI* pINI, CFinalSunDlg* pFinalSun, FString filepath, oss << "\n"; }; - if (ExtConfigs::SaveMap_PreserveINIKeySorting) + for (const auto& [key, value] : CINIOrderTracker::GetEntries(pINI, sectionName, pSection, ExtConfigs::SaveMap_PreserveINIKeySorting)) { - const auto* pKeyOrder = CINIOrderTracker::GetKeyOrder(pINI, sectionName); - if (pKeyOrder) - { - for (const auto& key : *pKeyOrder) - { - auto it = pSection->GetEntities().find(key); - if (it != pSection->GetEntities().end()) - { - writeEntry(it->first, it->second); - } - } - } - for (const auto& pair : pSection->GetEntities()) - { - if (!pKeyOrder || !pKeyOrder->Contains(pair.first)) - { - CINIOrderTracker::RecordKey(pINI, sectionName, pair.first); - writeEntry(pair.first, pair.second); - } - } - } - else - { - for (const auto& pair : pSection->GetEntities()) - { - writeEntry(pair.first, pair.second); - } + writeEntry(key, value); } if (wroteSection) @@ -861,81 +835,16 @@ bool SaveMapExt::SaveMap(CINI* pINI, CFinalSunDlg* pFinalSun, FString filepath, saveSection(pSection, "PreviewPack"); } - if (!SaveMapExt::IsAutoSaving && ExtConfigs::SaveMap_PreserveINISorting) - { - const auto* pSectionOrder = CINIOrderTracker::GetSectionOrder(pINI); - if (pSectionOrder && !pSectionOrder->Empty()) - { - for (const auto& sectionName : *pSectionOrder) - { - if (!strcmp(sectionName, "Preview") - || !strcmp(sectionName, "PreviewPack") - || !strcmp(sectionName, "Header") - || !strcmp(sectionName, "Digest")) - continue; - - if (const auto pSection = pINI->GetSection(sectionName)) - { - saveSection(pSection, sectionName); - } - } - for (auto& section : pINI->Dict) - { - if (!strcmp(section.first, "Preview") - || !strcmp(section.first, "PreviewPack") - || !strcmp(section.first, "Header") - || !strcmp(section.first, "Digest")) - continue; - - if (!pSectionOrder->Contains(section.first)) - { - saveSection(§ion.second, section.first); - } - } - } - else - { - for (const auto& sectionName : CMapDataExt::MapIniSectionSorting) - { - if (!strcmp(sectionName, "Preview") - || !strcmp(sectionName, "PreviewPack") - || !strcmp(sectionName, "Header") - || !strcmp(sectionName, "Digest")) - continue; - - if (const auto pSection = pINI->GetSection(sectionName)) - { - saveSection(pSection, sectionName); - } - } - for (auto& section : pINI->Dict) - { - if (!strcmp(section.first, "Preview") - || !strcmp(section.first, "PreviewPack") - || !strcmp(section.first, "Header") - || !strcmp(section.first, "Digest")) - continue; - - auto it = std::find(CMapDataExt::MapIniSectionSorting.begin(), CMapDataExt::MapIniSectionSorting.end(), section.first); - if (it == CMapDataExt::MapIniSectionSorting.end()) - { - saveSection(§ion.second, section.first); - } - } - } - } - else + const bool preserveSections = !SaveMapExt::IsAutoSaving && ExtConfigs::SaveMap_PreserveINISorting; + for (const auto& [sectionName, pSection] : CINIOrderTracker::GetSections(pINI, preserveSections)) { - for (auto& section : pINI->Dict) - { - if (!strcmp(section.first, "Preview") - || !strcmp(section.first, "PreviewPack") - || !strcmp(section.first, "Header") - || !strcmp(section.first, "Digest")) - continue; + if (!strcmp(sectionName, "Preview") + || !strcmp(sectionName, "PreviewPack") + || !strcmp(sectionName, "Header") + || !strcmp(sectionName, "Digest")) + continue; - saveSection(§ion.second, section.first); - } + saveSection(pSection, sectionName); } // Generate the Digest From c8bf3c12e7a473118d3725e4a6a6c810e338ed38 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 00:54:38 -0400 Subject: [PATCH 05/24] feat(unittest): integrate googletest and in-process test runner for FA2sp --- .gitignore | 10 ++ .gitmodules | 5 +- FA2sp.UnitTest/CINIOrderTrackerTest.cpp | 69 ++++++++++++++ FA2sp.UnitTest/FA2sp.UnitTest.vcxproj | 119 ++++++++++++++++++++++++ FA2sp.UnitTest/SequencedKeyListTest.cpp | 113 ++++++++++++++++++++++ FA2sp.UnitTest/TestCommon.h | 6 ++ FA2sp.UnitTest/main.cpp | 98 +++++++++++++++++++ FA2sp.sln | 7 +- FA2sp/Helpers/SequencedKeyList.h | 10 ++ Supplementary/RunUnitTest.bat | 39 ++++++++ googletest | 1 + 11 files changed, 475 insertions(+), 2 deletions(-) create mode 100644 FA2sp.UnitTest/CINIOrderTrackerTest.cpp create mode 100644 FA2sp.UnitTest/FA2sp.UnitTest.vcxproj create mode 100644 FA2sp.UnitTest/SequencedKeyListTest.cpp create mode 100644 FA2sp.UnitTest/TestCommon.h create mode 100644 FA2sp.UnitTest/main.cpp create mode 100644 Supplementary/RunUnitTest.bat create mode 160000 googletest diff --git a/.gitignore b/.gitignore index 85658862..b5921cbe 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,13 @@ MFC42 !Debug/Scintilla.lib /ida_mapping /migration + +/FA2sp.UnitTest/Debug/* +/FA2sp.UnitTest/Release/* +/FA2sp.UnitTest/FA2sp.UnitTest/* + +Supplementary/FA2sp.UnitTest.dll +Supplementary/FA2sp.dll +Supplementary/*.log +Supplementary/*.txt +Supplementary/UnitTest.xml diff --git a/.gitmodules b/.gitmodules index d7cbc11c..2375e84c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,4 +9,7 @@ url = https://github.com/ScintillaOrg/lexilla [submodule "scintilla"] path = scintilla - url = https://github.com/mirror/scintilla \ No newline at end of file + url = https://github.com/mirror/scintilla +[submodule "googletest"] + path = googletest + url = https://github.com/google/googletest.git diff --git a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp new file mode 100644 index 00000000..a351a2fb --- /dev/null +++ b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp @@ -0,0 +1,69 @@ +#include "TestCommon.h" +#include +#include +#include +#include + +TEST(CINIOrderTrackerTest, SectionOrderTrackingAndQueueSemantics) +{ + // Dummy pointer for tracking + CINI* pDummy = reinterpret_cast(0x12340000); + CINIOrderTracker::Clear(pDummy); + + CINIOrderTracker::RecordSection(pDummy, "Header"); + CINIOrderTracker::RecordSection(pDummy, "Map"); + CINIOrderTracker::RecordSection(pDummy, "Basic"); + + const auto* order = CINIOrderTracker::GetSectionOrder(pDummy); + ASSERT_NE(order, nullptr); + EXPECT_EQ(order->size(), 3u); + + // Remove Map, then re-record Map -> must be at the end! + CINIOrderTracker::RemoveSection(pDummy, "Map"); + EXPECT_EQ(order->size(), 2u); + + CINIOrderTracker::RecordSection(pDummy, "Map"); + EXPECT_EQ(order->size(), 3u); + + std::vector expected = { "Header", "Basic", "Map" }; + std::vector actual; + for (const auto& sec : *order) + { + actual.push_back(sec.GetString()); + } + EXPECT_EQ(actual, expected); + + CINIOrderTracker::Clear(pDummy); + EXPECT_EQ(CINIOrderTracker::GetSectionOrder(pDummy), nullptr); +} + +TEST(CINIOrderTrackerTest, KeyOrderTrackingAndQueueSemantics) +{ + CINI* pDummy = reinterpret_cast(0x12340000); + CINIOrderTracker::Clear(pDummy); + + CINIOrderTracker::RecordKey(pDummy, "Basic", "Name"); + CINIOrderTracker::RecordKey(pDummy, "Basic", "Player"); + CINIOrderTracker::RecordKey(pDummy, "Basic", "Theme"); + + const auto* kOrder = CINIOrderTracker::GetKeyOrder(pDummy, "Basic"); + ASSERT_NE(kOrder, nullptr); + EXPECT_EQ(kOrder->size(), 3u); + + // Remove Player, then re-record Player -> must be moved to the end! + CINIOrderTracker::RemoveKey(pDummy, "Basic", "Player"); + EXPECT_EQ(kOrder->size(), 2u); + + CINIOrderTracker::RecordKey(pDummy, "Basic", "Player"); + EXPECT_EQ(kOrder->size(), 3u); + + std::vector expected = { "Name", "Theme", "Player" }; + std::vector actual; + for (const auto& k : *kOrder) + { + actual.push_back(k.GetString()); + } + EXPECT_EQ(actual, expected); + + CINIOrderTracker::Clear(pDummy); +} diff --git a/FA2sp.UnitTest/FA2sp.UnitTest.vcxproj b/FA2sp.UnitTest/FA2sp.UnitTest.vcxproj new file mode 100644 index 00000000..e8d1131a --- /dev/null +++ b/FA2sp.UnitTest/FA2sp.UnitTest.vcxproj @@ -0,0 +1,119 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + 17.0 + Win32Proj + {C9F18204-74EE-47D5-816C-5198901E278F} + FA2spUnitTest + 10.0 + + + + DynamicLibrary + true + v143 + MultiByte + + + DynamicLibrary + false + v143 + false + MultiByte + + + + + + + + + + + + + + + FA2sp.UnitTest + false + $(ProjectDir)..\Debug\ + + + FA2sp.UnitTest + false + $(ProjectDir)..\Release\ + + + + Level3 + true + WIN32;_CRT_SECURE_NO_WARNINGS;_X86_;_DEBUG;NOMINMAX;SYR_VER=2;_WINDLL;%(PreprocessorDefinitions) + true + $(ProjectDir)..\googletest\googletest\include;$(ProjectDir)..\googletest\googletest;$(ProjectDir)..\FA2pp;$(ProjectDir)..\FA2sp;$(ProjectDir)..\MFC42\include;%(AdditionalIncludeDirectories) + stdcpp20 + MultiThreadedDebug + Sync + true + 4065;4530;4731;4244;4114;4172;4018;4390;4091;6269;28159;26812;28251;26495; + /source-charset:gbk %(AdditionalOptions) + + + Console + true + uxtheme.lib;windowscodecs.lib;legacy_stdio_definitions.lib;%(AdditionalDependencies) + /SAFESEH:NO %(AdditionalOptions) + + + copy /Y "$(TargetPath)" "$(ProjectDir)..\Supplementary\$(TargetFileName)" + + + + + Level3 + true + false + true + WIN32;_CRT_SECURE_NO_WARNINGS;_X86_;NDEBUG;NOMINMAX;SYR_VER=2;_WINDLL;%(PreprocessorDefinitions) + true + $(ProjectDir)..\googletest\googletest\include;$(ProjectDir)..\googletest\googletest;$(ProjectDir)..\FA2pp;$(ProjectDir)..\FA2sp;$(ProjectDir)..\MFC42\include;%(AdditionalIncludeDirectories) + stdcpp20 + MultiThreaded + Sync + MaxSpeed + true + 4065;4530;4731;4244;4114;4172;4018;4390;4091;6269;28159;26812;28251;26495; + /source-charset:gbk %(AdditionalOptions) + + + Console + true + true + true + uxtheme.lib;windowscodecs.lib;legacy_stdio_definitions.lib;%(AdditionalDependencies) + /SAFESEH:NO %(AdditionalOptions) + + + copy /Y "$(TargetPath)" "$(ProjectDir)..\Supplementary\$(TargetFileName)" + + + + + + + + + + + + + diff --git a/FA2sp.UnitTest/SequencedKeyListTest.cpp b/FA2sp.UnitTest/SequencedKeyListTest.cpp new file mode 100644 index 00000000..d1e725e7 --- /dev/null +++ b/FA2sp.UnitTest/SequencedKeyListTest.cpp @@ -0,0 +1,113 @@ +#include "TestCommon.h" +#include +#include +#include + +TEST(SequencedKeyListTest, PreservesInsertionOrder) +{ + SequencedKeyList list; + EXPECT_TRUE(list.Empty()); + EXPECT_EQ(list.size(), 0u); + + list.Add("Alpha"); + list.Add("Beta"); + list.Add("Gamma"); + + EXPECT_FALSE(list.Empty()); + EXPECT_EQ(list.size(), 3u); + + std::vector expected = { "Alpha", "Beta", "Gamma" }; + std::vector actual; + for (const auto& key : list) + { + actual.push_back(key.GetString()); + } + + EXPECT_EQ(actual, expected); +} + +TEST(SequencedKeyListTest, IgnoresDuplicateAdditions) +{ + SequencedKeyList list; + list.Add("One"); + list.Add("Two"); + list.Add("One"); // duplicate + + EXPECT_EQ(list.size(), 2u); + + std::vector expected = { "One", "Two" }; + std::vector actual; + for (const auto& key : list) + { + actual.push_back(key.GetString()); + } + + EXPECT_EQ(actual, expected); +} + +TEST(SequencedKeyListTest, ReAddAfterRemovePushedToTailQueueSemantics) +{ + // Verification of FIFO queue semantics: + // If an item is deleted and added back later, it must be queued at the tail! + SequencedKeyList list; + list.Add("Item1"); + list.Add("Item2"); + list.Add("Item3"); + + // Remove middle item + list.Remove("Item2"); + EXPECT_EQ(list.size(), 2u); + EXPECT_FALSE(list.Contains("Item2")); + + // Re-add Item2 + list.Add("Item2"); + EXPECT_EQ(list.size(), 3u); + EXPECT_TRUE(list.Contains("Item2")); + + // Sequence MUST now be: Item1, Item3, Item2 + std::vector expected = { "Item1", "Item3", "Item2" }; + std::vector actual; + for (const auto& key : list) + { + actual.push_back(key.GetString()); + } + + EXPECT_EQ(actual, expected); +} + +TEST(SequencedKeyListTest, RemoveHeadAndTail) +{ + SequencedKeyList list; + list.Add("Head"); + list.Add("Mid"); + list.Add("Tail"); + + // Remove Head + list.Remove("Head"); + EXPECT_FALSE(list.Contains("Head")); + EXPECT_EQ(list.size(), 2u); + + // Remove Tail + list.Remove("Tail"); + EXPECT_FALSE(list.Contains("Tail")); + EXPECT_EQ(list.size(), 1u); + + EXPECT_STREQ((*list.begin()).GetString(), "Mid"); +} + +TEST(SequencedKeyListTest, ClearResetsState) +{ + SequencedKeyList list; + for (int i = 0; i < 50; ++i) + { + char buf[32]; + sprintf_s(buf, "Key_%d", i); + list.Add(buf); + } + EXPECT_EQ(list.size(), 50u); + + list.Clear(); + EXPECT_TRUE(list.Empty()); + EXPECT_EQ(list.size(), 0u); + EXPECT_FALSE(list.Contains("Key_0")); +} diff --git a/FA2sp.UnitTest/TestCommon.h b/FA2sp.UnitTest/TestCommon.h new file mode 100644 index 00000000..7975c2e5 --- /dev/null +++ b/FA2sp.UnitTest/TestCommon.h @@ -0,0 +1,6 @@ +#pragma once + +// Must include MFC headers before any Windows.h or GoogleTest headers +#include +#include +#include diff --git a/FA2sp.UnitTest/main.cpp b/FA2sp.UnitTest/main.cpp new file mode 100644 index 00000000..8301090c --- /dev/null +++ b/FA2sp.UnitTest/main.cpp @@ -0,0 +1,98 @@ +#include "TestCommon.h" +#include +#include +#include +#include +#include + +void SetupLogAndConsole() +{ + // Try to attach to parent console or allocate a new one + if (!AttachConsole(ATTACH_PARENT_PROCESS)) + { + AllocConsole(); + } + + // Redirect stdout and stderr to UnitTest.log so test reports can be printed and inspected + FILE* fpLog = nullptr; + freopen_s(&fpLog, "UnitTest.log", "w", stdout); + freopen_s(&fpLog, "UnitTest.log", "a", stderr); +} + +// Hook 0x41FAD0 (CFinalSunApp::InitInstance in FA2) via Syringe DEFINE_HOOK +// At this point, CRT and MFC are fully initialized and safe to use. +DEFINE_HOOK(41FAD0, UnitTest_InitInstance, 8) +{ + SetupLogAndConsole(); + + printf("=======================================================\n"); + printf(" FA2sp GoogleTest In-Process Test Runner Initiated \n"); + printf("=======================================================\n\n"); + + int rawArgc = 0; + LPWSTR* szArglist = CommandLineToArgvW(GetCommandLineW(), &rawArgc); + std::vector argStorage; + bool hasXmlOutput = false; + + if (szArglist && rawArgc > 0) + { + argStorage.reserve(rawArgc + 2); + for (int i = 0; i < rawArgc; ++i) + { + int sizeNeeded = WideCharToMultiByte(CP_ACP, 0, szArglist[i], -1, NULL, 0, NULL, NULL); + std::string argStr(sizeNeeded, 0); + WideCharToMultiByte(CP_ACP, 0, szArglist[i], -1, &argStr[0], sizeNeeded, NULL, NULL); + if (!argStr.empty() && argStr.back() == '\0') + { + argStr.pop_back(); + } + if (argStr.find("--gtest_output=") != std::string::npos) + { + hasXmlOutput = true; + } + argStorage.push_back(std::move(argStr)); + } + LocalFree(szArglist); + } + else + { + argStorage.push_back("FinalAlert2YR.dat"); + } + + if (!hasXmlOutput) + { + argStorage.push_back("--gtest_output=xml:UnitTest.xml"); + } + + std::vector argvPointers; + argvPointers.reserve(argStorage.size() + 1); + for (auto& s : argStorage) + { + argvPointers.push_back(s.data()); + } + argvPointers.push_back(nullptr); + + int argc = static_cast(argStorage.size()); + char** argv = argvPointers.data(); + + testing::InitGoogleTest(&argc, argv); + + int res = RUN_ALL_TESTS(); + + printf("\n=======================================================\n"); + printf(" Tests completed with exit code: %d\n", res); + printf("=======================================================\n\n"); + fflush(stdout); + fflush(stderr); + fclose(stdout); + fclose(stderr); + + // Exit immediately so host FA2 does not initialize GUI windows + ExitProcess(static_cast(res)); + return 0; +} + +BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved) +{ + return TRUE; +} diff --git a/FA2sp.sln b/FA2sp.sln index 857e5d09..a831b875 100644 --- a/FA2sp.sln +++ b/FA2sp.sln @@ -1,10 +1,11 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.0.31423.177 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FA2sp", "FA2sp.vcxproj", "{3BBEA2D2-97DA-4B96-9516-36A6C8D3B4A3}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FA2sp.UnitTest", "FA2sp.UnitTest\FA2sp.UnitTest.vcxproj", "{C9F18204-74EE-47D5-816C-5198901E278F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x86 = Debug|x86 @@ -15,6 +16,10 @@ Global {3BBEA2D2-97DA-4B96-9516-36A6C8D3B4A3}.Debug|x86.Build.0 = Debug|Win32 {3BBEA2D2-97DA-4B96-9516-36A6C8D3B4A3}.Release|x86.ActiveCfg = Release|Win32 {3BBEA2D2-97DA-4B96-9516-36A6C8D3B4A3}.Release|x86.Build.0 = Release|Win32 + {C9F18204-74EE-47D5-816C-5198901E278F}.Debug|x86.ActiveCfg = Debug|Win32 + {C9F18204-74EE-47D5-816C-5198901E278F}.Debug|x86.Build.0 = Debug|Win32 + {C9F18204-74EE-47D5-816C-5198901E278F}.Release|x86.ActiveCfg = Release|Win32 + {C9F18204-74EE-47D5-816C-5198901E278F}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/FA2sp/Helpers/SequencedKeyList.h b/FA2sp/Helpers/SequencedKeyList.h index 50ba8492..38ea6e7c 100644 --- a/FA2sp/Helpers/SequencedKeyList.h +++ b/FA2sp/Helpers/SequencedKeyList.h @@ -66,11 +66,21 @@ class SequencedKeyList return m_order.size(); } + size_t size() const noexcept + { + return m_order.size(); + } + bool Empty() const { return m_order.empty(); } + bool empty() const noexcept + { + return m_order.empty(); + } + const ListType& GetOrder() const { return m_order; diff --git a/Supplementary/RunUnitTest.bat b/Supplementary/RunUnitTest.bat new file mode 100644 index 00000000..a152cd77 --- /dev/null +++ b/Supplementary/RunUnitTest.bat @@ -0,0 +1,39 @@ +@echo off +pushd "%~dp0" + +:DO_ISOLATE +if exist "FA2sp.dll" ( + if exist "FA2sp.dll.isolated" del /f /q "FA2sp.dll.isolated" >nul 2>&1 + ren "FA2sp.dll" "FA2sp.dll.isolated" >nul 2>&1 + if exist "FA2sp.dll" ( + timeout /t 1 /nobreak >nul + goto :DO_ISOLATE + ) +) + +if exist "UnitTest.log" del /f /q "UnitTest.log" +if exist "UnitTest.xml" del /f /q "UnitTest.xml" + +echo ======================================================== +echo Launching FA2sp Unit Tests via Syringe in FinalAlert2 +echo ======================================================== +Syringe.exe "FinalAlert2YR.dat" %* +set TEST_EXIT_CODE=%ERRORLEVEL% + +:DO_RESTORE +if exist "FA2sp.dll.isolated" ( + ren "FA2sp.dll.isolated" "FA2sp.dll" >nul 2>&1 + if exist "FA2sp.dll.isolated" ( + timeout /t 1 /nobreak >nul + goto :DO_RESTORE + ) +) + +if exist "UnitTest.log" ( + echo. + type UnitTest.log +) +echo. +echo Tests exited with code: %TEST_EXIT_CODE% +popd +exit /b %TEST_EXIT_CODE% diff --git a/googletest b/googletest new file mode 160000 index 00000000..b514bdc8 --- /dev/null +++ b/googletest @@ -0,0 +1 @@ +Subproject commit b514bdc898e2951020cbdca1304b75f5950d1f59 From 8d12d22deaa541b1f7c8f2cb13abdc7089d2a3d9 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 00:57:49 -0400 Subject: [PATCH 06/24] ci: add PR compile and UT verification workflow --- .github/workflows/verify.yml | 75 ++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 .github/workflows/verify.yml diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml new file mode 100644 index 00000000..ab7bb336 --- /dev/null +++ b/.github/workflows/verify.yml @@ -0,0 +1,75 @@ +name: Basic verify + +on: + pull_request: + branches: + - "**" + types: + - opened + - synchronize + - reopened + paths-ignore: + - 'image/**' + - 'docs/**' + - '**/*.md' + workflow_dispatch: + +jobs: + compile-check: + runs-on: windows-2022 + env: + CONFIGURATION: Release + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + submodules: recursive + lfs: true + + - name: setup-msvc + uses: egor-tensin/vs-shell@v2 + with: + # Target architecture + arch: x86 + + - name: Build Program and UT (MSVC) + run: | + MSBuild FA2sp.sln /m /p:Configuration="${{ env.CONFIGURATION }}" /p:Platform=x86 + + - name: Copy binaries to Supplementary + shell: pwsh + run: | + if (Test-Path "Release/FA2sp.dll") { + Copy-Item -Force "Release/FA2sp.dll" "Supplementary/FA2sp.dll" + } + if (Test-Path "Release/FA2sp.UnitTest.dll") { + Copy-Item -Force "Release/FA2sp.UnitTest.dll" "Supplementary/FA2sp.UnitTest.dll" + } + + - name: do UT + shell: cmd + run: | + cd Supplementary + RunUnitTest.bat + + - name: Upload UT Results + if: always() + uses: actions/upload-artifact@v4 + with: + name: FA2sp-UT-Results-pr-${{ github.run_number }} + path: | + Supplementary/UnitTest.log + Supplementary/UnitTest.xml + Supplementary/syringe.log + retention-days: 7 + + - name: Upload artifact + if: success() + uses: actions/upload-artifact@v4 + with: + name: FA2sp-pr-${{ github.run_number }} + path: | + Release/FA2sp.dll + Release/FA2sp.pdb + retention-days: 7 From 92a31a0db720ac4f2c6cc3912dfab5312dd8e9f5 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 18:27:37 -0400 Subject: [PATCH 07/24] ci: refactor into reusable build-and-test workflow, upgrade msbuild.yml for PR verify and add release.yml --- .github/workflows/msbuild.yml | 53 ++++-------- .github/workflows/release.yml | 85 +++++++++++++++++++ .github/workflows/reusable-build-and-test.yml | 83 ++++++++++++++++++ .github/workflows/verify.yml | 75 ---------------- 4 files changed, 184 insertions(+), 112 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/reusable-build-and-test.yml delete mode 100644 .github/workflows/verify.yml diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index eae2b4b4..72e899e4 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -1,46 +1,25 @@ name: MSBuild on: - push: - branches: [ "master" ] pull_request: - branches: [ "master" ] + branches: + - "**" + types: + - opened + - synchronize + - reopened + paths-ignore: + - 'image/**' + - 'docs/**' + - '**/*.md' + workflow_dispatch: permissions: contents: read jobs: - build: - runs-on: windows-2022 - - strategy: - matrix: - configuration: [ Release ] - - env: - SOLUTION_FILE_PATH: . - BUILD_CONFIGURATION: ${{ matrix.configuration }} - - steps: - - name: Checkout repository (with submodules) - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Add MSBuild to PATH - uses: microsoft/setup-msbuild@v1.0.2 - - - name: Restore NuGet packages - run: nuget restore ${{ env.SOLUTION_FILE_PATH }} - - - name: Build ${{ matrix.configuration }} - run: msbuild /m /p:Configuration=${{ env.BUILD_CONFIGURATION }} ${{ env.SOLUTION_FILE_PATH }} - - - name: Upload ${{ matrix.configuration }} Artifacts - if: ${{ success() }} - uses: actions/upload-artifact@v4 - with: - name: FA2sp_${{ matrix.configuration }}_${{ github.sha }} - path: | - ${{ env.SOLUTION_FILE_PATH }}/${{ env.BUILD_CONFIGURATION }}/FA2sp.dll - ${{ env.SOLUTION_FILE_PATH }}/${{ env.BUILD_CONFIGURATION }}/FA2sp.pdb \ No newline at end of file + verify: + uses: ./.github/workflows/reusable-build-and-test.yml + with: + configuration: Release + run_tests: true \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..cfdab7fa --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,85 @@ +name: Release + +permissions: + contents: write + +on: + pull_request: + branches: + - "master" + types: + - closed + paths-ignore: + - 'image/**' + - 'docs/**' + - '**/*.md' + workflow_dispatch: + inputs: + tag_name: + description: 'Release Tag (leave empty for auto v1.6.3.run_number)' + required: false + default: '' + type: string + prerelease: + description: 'Is Pre-release' + required: false + default: false + type: boolean + +jobs: + build-and-test: + if: github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged == true) + uses: ./.github/workflows/reusable-build-and-test.yml + with: + configuration: Release + run_tests: true + + release: + needs: build-and-test + if: github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged == true) + runs-on: windows-2022 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Download Build Artifacts + uses: actions/download-artifact@v4 + with: + name: FA2sp_Release_${{ github.sha }} + path: bin_output + + - name: Package Release + id: package + shell: pwsh + run: | + $ver = "${{ inputs.tag_name }}" + if ([string]::IsNullOrWhiteSpace($ver)) { + $ver = "v1.6.3." + ${{ github.run_number }} + } + $pkgName = "FA2sp-$ver.zip" + + New-Item -ItemType Directory -Force -Path "package_dir" | Out-Null + Copy-Item -Force "bin_output/FA2sp.dll" "package_dir/FA2sp.dll" + if (Test-Path "bin_output/FA2sp.pdb") { + Copy-Item -Force "bin_output/FA2sp.pdb" "package_dir/FA2sp.pdb" + } + + Compress-Archive -Path "package_dir/*" -DestinationPath $pkgName -Force + + echo "RELEASE_TAG=$ver" >> $env:GITHUB_ENV + echo "PACKAGE_NAME=$pkgName" >> $env:GITHUB_ENV + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ env.RELEASE_TAG }} + name: FA2sp ${{ env.RELEASE_TAG }} + files: | + ${{ env.PACKAGE_NAME }} + bin_output/FA2sp.dll + bin_output/FA2sp.pdb + target_commitish: ${{ github.sha }} + prerelease: ${{ inputs.prerelease || false }} + generate_release_notes: true diff --git a/.github/workflows/reusable-build-and-test.yml b/.github/workflows/reusable-build-and-test.yml new file mode 100644 index 00000000..b55b9a26 --- /dev/null +++ b/.github/workflows/reusable-build-and-test.yml @@ -0,0 +1,83 @@ +name: Reusable Build and Test + +on: + workflow_call: + inputs: + configuration: + description: 'Build Configuration (e.g. Release)' + required: false + default: 'Release' + type: string + run_tests: + description: 'Whether to run Unit Tests' + required: false + default: true + type: boolean + outputs: + artifact_name: + description: 'Name of the uploaded binary artifact' + value: ${{ jobs.build-and-test.outputs.artifact_name }} + +jobs: + build-and-test: + runs-on: windows-2022 + env: + SOLUTION_FILE_PATH: FA2sp.sln + CONFIGURATION: ${{ inputs.configuration }} + outputs: + artifact_name: FA2sp_${{ inputs.configuration }}_${{ github.sha }} + + steps: + - name: Checkout repository (with submodules) + uses: actions/checkout@v4 + with: + fetch-depth: 1 + submodules: recursive + lfs: true + + - name: Add MSBuild to PATH + uses: microsoft/setup-msbuild@v1.0.2 + + - name: Restore NuGet packages + run: nuget restore ${{ env.SOLUTION_FILE_PATH }} + + - name: Build Program and UT (MSVC) + run: msbuild /m /p:Configuration="${{ env.CONFIGURATION }}" /p:Platform=x86 ${{ env.SOLUTION_FILE_PATH }} + + - name: Copy binaries to Supplementary + shell: pwsh + run: | + if (Test-Path "${{ env.CONFIGURATION }}/FA2sp.dll") { + Copy-Item -Force "${{ env.CONFIGURATION }}/FA2sp.dll" "Supplementary/FA2sp.dll" + } + if (Test-Path "${{ env.CONFIGURATION }}/FA2sp.UnitTest.dll") { + Copy-Item -Force "${{ env.CONFIGURATION }}/FA2sp.UnitTest.dll" "Supplementary/FA2sp.UnitTest.dll" + } + + - name: do UT + if: inputs.run_tests + shell: cmd + run: | + cd Supplementary + RunUnitTest.bat + + - name: Upload UT Results + if: always() && inputs.run_tests + uses: actions/upload-artifact@v4 + with: + name: FA2sp-UT-Results-${{ github.run_number }} + path: | + Supplementary/UnitTest.log + Supplementary/UnitTest.xml + Supplementary/syringe.log + retention-days: 7 + + - name: Upload Build Artifacts + if: success() + uses: actions/upload-artifact@v4 + with: + name: FA2sp_${{ env.CONFIGURATION }}_${{ github.sha }} + path: | + ${{ env.CONFIGURATION }}/FA2sp.dll + ${{ env.CONFIGURATION }}/FA2sp.pdb + retention-days: 7 diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml deleted file mode 100644 index ab7bb336..00000000 --- a/.github/workflows/verify.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: Basic verify - -on: - pull_request: - branches: - - "**" - types: - - opened - - synchronize - - reopened - paths-ignore: - - 'image/**' - - 'docs/**' - - '**/*.md' - workflow_dispatch: - -jobs: - compile-check: - runs-on: windows-2022 - env: - CONFIGURATION: Release - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 1 - submodules: recursive - lfs: true - - - name: setup-msvc - uses: egor-tensin/vs-shell@v2 - with: - # Target architecture - arch: x86 - - - name: Build Program and UT (MSVC) - run: | - MSBuild FA2sp.sln /m /p:Configuration="${{ env.CONFIGURATION }}" /p:Platform=x86 - - - name: Copy binaries to Supplementary - shell: pwsh - run: | - if (Test-Path "Release/FA2sp.dll") { - Copy-Item -Force "Release/FA2sp.dll" "Supplementary/FA2sp.dll" - } - if (Test-Path "Release/FA2sp.UnitTest.dll") { - Copy-Item -Force "Release/FA2sp.UnitTest.dll" "Supplementary/FA2sp.UnitTest.dll" - } - - - name: do UT - shell: cmd - run: | - cd Supplementary - RunUnitTest.bat - - - name: Upload UT Results - if: always() - uses: actions/upload-artifact@v4 - with: - name: FA2sp-UT-Results-pr-${{ github.run_number }} - path: | - Supplementary/UnitTest.log - Supplementary/UnitTest.xml - Supplementary/syringe.log - retention-days: 7 - - - name: Upload artifact - if: success() - uses: actions/upload-artifact@v4 - with: - name: FA2sp-pr-${{ github.run_number }} - path: | - Release/FA2sp.dll - Release/FA2sp.pdb - retention-days: 7 From 05aca469965c0674134b9bc71a07bf75f9d9094f Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 18:49:34 -0400 Subject: [PATCH 08/24] refactor: centralize hash into Helper.h --- FA2sp/FA2sp.h | 15 +-------------- FA2sp/Helpers/Helper.h | 17 +++++++++++++++++ FA2sp/Helpers/SequencedKeyList.h | 19 +------------------ 3 files changed, 19 insertions(+), 32 deletions(-) diff --git a/FA2sp/FA2sp.h b/FA2sp/FA2sp.h index 24282171..a159f679 100644 --- a/FA2sp/FA2sp.h +++ b/FA2sp/FA2sp.h @@ -2,6 +2,7 @@ #include "Ext/FA2Expand.h" #include "Helpers/MultimapHelper.h" +#include "Helpers/Helper.h" #include #include @@ -290,20 +291,6 @@ class ExtConfigs static void UpdateOptionTranslations(); }; -#ifndef PPMFC_CSTRING_HASH_DEFINED -#define PPMFC_CSTRING_HASH_DEFINED -namespace std -{ - template <> - struct hash - { - size_t operator()(const ppmfc::CString &str) const noexcept - { - return hash()(string_view(str, str.GetLength())); - } - }; -} -#endif namespace std { diff --git a/FA2sp/Helpers/Helper.h b/FA2sp/Helpers/Helper.h index 2c0ae4da..3f2e64b3 100644 --- a/FA2sp/Helpers/Helper.h +++ b/FA2sp/Helpers/Helper.h @@ -1,6 +1,23 @@ #pragma once #include +#include +#include + +#ifndef PPMFC_CSTRING_HASH_DEFINED +#define PPMFC_CSTRING_HASH_DEFINED +namespace std +{ + template <> + struct hash + { + size_t operator()(const ppmfc::CString &str) const noexcept + { + return hash()(string_view(str, str.GetLength())); + } + }; +} +#endif static size_t ParseList(const char* pValue, const char** outValue, size_t Count = 1) { char buffer[0x400] = { 0 }; diff --git a/FA2sp/Helpers/SequencedKeyList.h b/FA2sp/Helpers/SequencedKeyList.h index 38ea6e7c..fe735aa3 100644 --- a/FA2sp/Helpers/SequencedKeyList.h +++ b/FA2sp/Helpers/SequencedKeyList.h @@ -2,24 +2,7 @@ #include #include -#include -#include -#include - -#ifndef PPMFC_CSTRING_HASH_DEFINED -#define PPMFC_CSTRING_HASH_DEFINED -namespace std -{ - template <> - struct hash - { - size_t operator()(const ppmfc::CString& str) const noexcept - { - return hash()(string_view(str.m_pchData, str.GetLength())); - } - }; -} -#endif +#include "Helper.h" class SequencedKeyList { From c7a71df61582caaa9881578e9375020a7ac5a3ec Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 18:52:41 -0400 Subject: [PATCH 09/24] docs: add agents.md, Claude.md, and Codex.md with UT verification guidelines --- Claude.md | 5 +++++ Codex.md | 5 +++++ agents.md | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 Claude.md create mode 100644 Codex.md create mode 100644 agents.md diff --git a/Claude.md b/Claude.md new file mode 100644 index 00000000..4fe0819c --- /dev/null +++ b/Claude.md @@ -0,0 +1,5 @@ +# Instructions for Claude + +Must read [agents.md](agents.md). + +Always adhere strictly to the project rules, test verification mandates, and git constraints specified in [agents.md](agents.md). diff --git a/Codex.md b/Codex.md new file mode 100644 index 00000000..ff7ca203 --- /dev/null +++ b/Codex.md @@ -0,0 +1,5 @@ +# Instructions for Codex + +Must read [agents.md](agents.md). + +Always adhere strictly to the project rules, test verification mandates, and git constraints specified in [agents.md](agents.md). diff --git a/agents.md b/agents.md new file mode 100644 index 00000000..ee7b2864 --- /dev/null +++ b/agents.md @@ -0,0 +1,61 @@ +# Agent Guidelines & Development Standards + +## 1. Mandatory Verification Rule +> [!IMPORTANT] +> **Always verify that the solution compiles with 0 errors and all unit tests PASS before submitting changes, finishing tasks, or committing code, unless the user explicitly requests to skip the verification step.** + +## 2. Project Architecture & Context +- **Project**: FA2sp (FinalAlert 2 Special / Modernized Yuri's Revenge Map Editor extension). +- **Host Target**: `FinalAlert2YR.dat` (32-bit x86 Windows executable located in `Supplementary/`). +- **Platform**: Windows `Win32` (`x86`) only. +- **Toolchain**: Visual Studio 2022 (MSVC v143, C++20). +- **Submodules**: + - `FA2pp` at `FA2pp/` (**CRITICAL**: Must remain 100% clean and untouched; do not commit into this submodule unless explicitly instructed). + - `MFC42` at `MFC42/`. + - `googletest` at `googletest/` (tag `v1.15.2`). + - `lexilla`, `scintilla`. +- **Git Remote Constraints**: + - **NEVER** push local commits to remote repositories (`git push`) unless the user explicitly requests it. + +## 3. Unit Test (UT) Architecture +- **In-Process Test Architecture**: + - Unit tests are located in `FA2sp.UnitTest/` and built into `Supplementary/FA2sp.UnitTest.dll`. + - The test DLL hooks `CFinalSunApp::InitInstance` (address `0x41FAD0`) in `FinalAlert2YR.dat` via Syringe. + - Upon entry, it redirects stdout/stderr to `Supplementary/UnitTest.log` and `Supplementary/UnitTest.xml`, forwards CLI arguments to GoogleTest (`testing::InitGoogleTest`), runs all tests via `RUN_ALL_TESTS()`, closes output streams, and terminates cleanly via `ExitProcess(res)` before any host GUI windows are created. +- **Strict Isolation Mechanism**: + - During tests, `FA2sp.dll` must NOT be loaded alongside `FA2sp.UnitTest.dll` to prevent hook collisions. + - The runner script `Supplementary/RunUnitTest.bat` automatically isolates `FA2sp.dll` (temporarily renaming it to `FA2sp.dll.isolated`) before launching Syringe, and restores it unconditionally upon test completion. + +## 4. How to Build & Run Tests + +### Build +From project root: +```bat +msbuild FA2sp.sln /m /p:Configuration=Release /p:Platform=x86 +``` +Or build the UnitTest project alone: +```bat +msbuild FA2sp.UnitTest/FA2sp.UnitTest.vcxproj /p:Configuration=Release /p:Platform=Win32 /m +``` + +### Run Unit Tests +From `Supplementary/` directory: +```bat +cd Supplementary +RunUnitTest.bat +``` + +### Run with GoogleTest Filters / Options +Arguments are automatically forwarded to GoogleTest through Syringe: +```bat +RunUnitTest.bat --gtest_filter=SequencedKeyListTest.* +RunUnitTest.bat --gtest_filter=CINIOrderTrackerTest.* +RunUnitTest.bat --gtest_repeat=5 +``` + +### Inspect Test Results +- Console output: printed directly by `RunUnitTest.bat`. +- Detailed log: `Supplementary/UnitTest.log`. +- XML report: `Supplementary/UnitTest.xml`. +- Injector log: `Supplementary/syringe.log`. +- Exit code: 0 indicates success, non-zero indicates test failure. From be9d7d17c2473c1aa98d05e84dfe900b30cc4f11 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 19:09:36 -0400 Subject: [PATCH 10/24] ci: enhance release workflow with build-tag-number versioning and multi-target matrix packaging --- .github/workflows/release.yml | 131 +++++++++++++++++++++++++++++----- 1 file changed, 114 insertions(+), 17 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cfdab7fa..e5a24f6e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ on: workflow_dispatch: inputs: tag_name: - description: 'Release Tag (leave empty for auto v1.6.3.run_number)' + description: 'Custom Release Tag (leave empty to use auto-version)' required: false default: '' type: string @@ -26,6 +26,11 @@ on: default: false type: boolean +env: + VERSION_MAJOR: 1 + VERSION_MINOR: 6 + VERSION_PREFIX: "v" + jobs: build-and-test: if: github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged == true) @@ -34,10 +39,48 @@ jobs: configuration: Release run_tests: true - release: + prepare-version: needs: build-and-test if: github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged == true) runs-on: windows-2022 + outputs: + release_tag: ${{ steps.determine_version.outputs.release_tag }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Generate Build Number + if: ${{ !inputs.tag_name }} + id: buildnumber + uses: onyxmueller/build-tag-number@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + prefix: auto-version-${{ env.VERSION_MAJOR }}.${{ env.VERSION_MINOR }} + + - name: Determine Release Tag + id: determine_version + shell: pwsh + run: | + $customTag = "${{ inputs.tag_name }}" + if (-not [string]::IsNullOrWhiteSpace($customTag)) { + $tag = $customTag + } else { + $buildNum = [int]"${{ steps.buildnumber.outputs.build_number }}" + $revision = $buildNum - 1 + $tag = "${{ env.VERSION_PREFIX }}${{ env.VERSION_MAJOR }}.${{ env.VERSION_MINOR }}.$revision" + } + Add-Content -Path $env:GITHUB_OUTPUT -Value "release_tag=$tag" -Encoding utf8 + Write-Host "Determined Release Tag: $tag" + + package: + needs: [build-and-test, prepare-version] + if: github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged == true) + runs-on: windows-2022 + strategy: + matrix: + target: [YR, MO, RN] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -50,34 +93,88 @@ jobs: name: FA2sp_Release_${{ github.sha }} path: bin_output - - name: Package Release - id: package + - name: Package Target (${{ matrix.target }}) shell: pwsh run: | - $ver = "${{ inputs.tag_name }}" - if ([string]::IsNullOrWhiteSpace($ver)) { - $ver = "v1.6.3." + ${{ github.run_number }} + $target = "${{ matrix.target }}" + $ver = "${{ needs.prepare-version.outputs.release_tag }}" + $pkgName = "FA2sp-$target-$ver.zip" + $stageDir = "staging_$target" + + Write-Host "Packaging target: $($target) with version $ver into $pkgName" + + # 1. Copy Supplementary folder to staging directory + Copy-Item -Path "Supplementary" -Destination $stageDir -Recurse -Force + + # 2. Apply target-specific transformations + if ($target -eq "YR") { + Remove-Item -Path "$stageDir/MentalOmega" -Recurse -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/RevengeNow" -Recurse -Force -ErrorAction SilentlyContinue + } + elseif ($target -eq "MO") { + Get-ChildItem -Path "$stageDir/MentalOmega" | ForEach-Object { + Copy-Item -Path $_.FullName -Destination $stageDir -Recurse -Force + } + Remove-Item -Path "$stageDir/MentalOmega" -Recurse -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/RevengeNow" -Recurse -Force -ErrorAction SilentlyContinue + } + elseif ($target -eq "RN") { + Get-ChildItem -Path "$stageDir/RevengeNow" | ForEach-Object { + Copy-Item -Path $_.FullName -Destination $stageDir -Recurse -Force + } + Remove-Item -Path "$stageDir/MentalOmega" -Recurse -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/RevengeNow" -Recurse -Force -ErrorAction SilentlyContinue } - $pkgName = "FA2sp-$ver.zip" - New-Item -ItemType Directory -Force -Path "package_dir" | Out-Null - Copy-Item -Force "bin_output/FA2sp.dll" "package_dir/FA2sp.dll" + # 3. Copy newly compiled binaries into staging + Copy-Item -Force "bin_output/FA2sp.dll" "$stageDir/FA2sp.dll" if (Test-Path "bin_output/FA2sp.pdb") { - Copy-Item -Force "bin_output/FA2sp.pdb" "package_dir/FA2sp.pdb" + Copy-Item -Force "bin_output/FA2sp.pdb" "$stageDir/FA2sp.pdb" } - Compress-Archive -Path "package_dir/*" -DestinationPath $pkgName -Force + # 4. Clean any development or test files + Remove-Item -Path "$stageDir/FA2sp.UnitTest.dll" -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/RunUnitTest.bat" -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/*.log" -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/*.xml" -Force -ErrorAction SilentlyContinue + + # 5. Compress into release zip + Compress-Archive -Path "$stageDir/*" -DestinationPath $pkgName -Force - echo "RELEASE_TAG=$ver" >> $env:GITHUB_ENV - echo "PACKAGE_NAME=$pkgName" >> $env:GITHUB_ENV + Add-Content -Path $env:GITHUB_ENV -Value "PACKAGE_NAME=$pkgName" -Encoding utf8 + + - name: Upload Target Artifact + uses: actions/upload-artifact@v4 + with: + name: release-pkg-${{ matrix.target }} + path: ${{ env.PACKAGE_NAME }} + retention-days: 1 + + publish-release: + needs: [prepare-version, package] + if: github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged == true) + runs-on: windows-2022 + steps: + - name: Download all release target packages + uses: actions/download-artifact@v4 + with: + pattern: release-pkg-* + merge-multiple: true + path: release_assets + + - name: Download Build Artifacts + uses: actions/download-artifact@v4 + with: + name: FA2sp_Release_${{ github.sha }} + path: bin_output - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: - tag_name: ${{ env.RELEASE_TAG }} - name: FA2sp ${{ env.RELEASE_TAG }} + tag_name: ${{ needs.prepare-version.outputs.release_tag }} + name: FA2sp ${{ needs.prepare-version.outputs.release_tag }} files: | - ${{ env.PACKAGE_NAME }} + release_assets/*.zip bin_output/FA2sp.dll bin_output/FA2sp.pdb target_commitish: ${{ github.sha }} From 2fda2b70cb6d7ef061dfe13611bf23b995e8050b Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 19:22:43 -0400 Subject: [PATCH 11/24] refactor: add Scripts/PackageRelease.ps1, relocate RunUnitTest.bat to Scripts/, and remove obsolete FinalRevengeDefaults.ini --- .github/workflows/release.yml | 48 +---- .github/workflows/reusable-build-and-test.yml | 3 +- Scripts/PackageRelease.ps1 | 169 ++++++++++++++++++ {Supplementary => Scripts}/RunUnitTest.bat | 2 +- .../RevengeNow/FinalRevengeDefaults.ini | 16 -- Supplementary/RevengeNow/README.md | 6 +- agents.md | 27 +-- 7 files changed, 192 insertions(+), 79 deletions(-) create mode 100644 Scripts/PackageRelease.ps1 rename {Supplementary => Scripts}/RunUnitTest.bat (96%) delete mode 100644 Supplementary/RevengeNow/FinalRevengeDefaults.ini diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e5a24f6e..c9d02348 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -96,52 +96,8 @@ jobs: - name: Package Target (${{ matrix.target }}) shell: pwsh run: | - $target = "${{ matrix.target }}" - $ver = "${{ needs.prepare-version.outputs.release_tag }}" - $pkgName = "FA2sp-$target-$ver.zip" - $stageDir = "staging_$target" - - Write-Host "Packaging target: $($target) with version $ver into $pkgName" - - # 1. Copy Supplementary folder to staging directory - Copy-Item -Path "Supplementary" -Destination $stageDir -Recurse -Force - - # 2. Apply target-specific transformations - if ($target -eq "YR") { - Remove-Item -Path "$stageDir/MentalOmega" -Recurse -Force -ErrorAction SilentlyContinue - Remove-Item -Path "$stageDir/RevengeNow" -Recurse -Force -ErrorAction SilentlyContinue - } - elseif ($target -eq "MO") { - Get-ChildItem -Path "$stageDir/MentalOmega" | ForEach-Object { - Copy-Item -Path $_.FullName -Destination $stageDir -Recurse -Force - } - Remove-Item -Path "$stageDir/MentalOmega" -Recurse -Force -ErrorAction SilentlyContinue - Remove-Item -Path "$stageDir/RevengeNow" -Recurse -Force -ErrorAction SilentlyContinue - } - elseif ($target -eq "RN") { - Get-ChildItem -Path "$stageDir/RevengeNow" | ForEach-Object { - Copy-Item -Path $_.FullName -Destination $stageDir -Recurse -Force - } - Remove-Item -Path "$stageDir/MentalOmega" -Recurse -Force -ErrorAction SilentlyContinue - Remove-Item -Path "$stageDir/RevengeNow" -Recurse -Force -ErrorAction SilentlyContinue - } - - # 3. Copy newly compiled binaries into staging - Copy-Item -Force "bin_output/FA2sp.dll" "$stageDir/FA2sp.dll" - if (Test-Path "bin_output/FA2sp.pdb") { - Copy-Item -Force "bin_output/FA2sp.pdb" "$stageDir/FA2sp.pdb" - } - - # 4. Clean any development or test files - Remove-Item -Path "$stageDir/FA2sp.UnitTest.dll" -Force -ErrorAction SilentlyContinue - Remove-Item -Path "$stageDir/RunUnitTest.bat" -Force -ErrorAction SilentlyContinue - Remove-Item -Path "$stageDir/*.log" -Force -ErrorAction SilentlyContinue - Remove-Item -Path "$stageDir/*.xml" -Force -ErrorAction SilentlyContinue - - # 5. Compress into release zip - Compress-Archive -Path "$stageDir/*" -DestinationPath $pkgName -Force - - Add-Content -Path $env:GITHUB_ENV -Value "PACKAGE_NAME=$pkgName" -Encoding utf8 + ./Scripts/PackageRelease.ps1 -Target ${{ matrix.target }} -Version ${{ needs.prepare-version.outputs.release_tag }} -BinDir bin_output -OutputDir . + Add-Content -Path $env:GITHUB_ENV -Value "PACKAGE_NAME=FA2sp-${{ matrix.target }}-${{ needs.prepare-version.outputs.release_tag }}.zip" -Encoding utf8 - name: Upload Target Artifact uses: actions/upload-artifact@v4 diff --git a/.github/workflows/reusable-build-and-test.yml b/.github/workflows/reusable-build-and-test.yml index b55b9a26..d9b7a6c9 100644 --- a/.github/workflows/reusable-build-and-test.yml +++ b/.github/workflows/reusable-build-and-test.yml @@ -58,8 +58,7 @@ jobs: if: inputs.run_tests shell: cmd run: | - cd Supplementary - RunUnitTest.bat + call Scripts\RunUnitTest.bat - name: Upload UT Results if: always() && inputs.run_tests diff --git a/Scripts/PackageRelease.ps1 b/Scripts/PackageRelease.ps1 new file mode 100644 index 00000000..9d1bbe83 --- /dev/null +++ b/Scripts/PackageRelease.ps1 @@ -0,0 +1,169 @@ +<# +.SYNOPSIS + Packages FA2sp release zips for target editions (YR, MO, RN) both locally and in CI. + +.PARAMETER Target + The target edition to package: 'YR', 'MO', 'RN', or 'All'. Default is 'All'. + +.PARAMETER Version + The release version tag (e.g. 'v1.6.4'). Default is 'v1.6.4'. + +.PARAMETER BinDir + Directory containing compiled FA2sp.dll and FA2sp.pdb. + If not specified, auto-detects from 'bin_output', 'Release', or 'Supplementary'. + +.PARAMETER OutputDir + Destination directory for output zip files. Default is 'dist'. + +.PARAMETER SupplementaryDir + Path to the Supplementary source directory. Default is project root's 'Supplementary'. + +.EXAMPLE + # Package all targets for local testing: + ./Scripts/PackageRelease.ps1 + +.EXAMPLE + # Package only RN edition with custom version: + ./Scripts/PackageRelease.ps1 -Target RN -Version v1.6.4 +#> + +[CmdletBinding()] +param( + [Parameter(Position = 0)] + [ValidateSet("YR", "MO", "RN", "All")] + [string]$Target = "All", + + [Parameter(Position = 1)] + [string]$Version = "v1.6.4", + + [Parameter(Position = 2)] + [string]$BinDir = "", + + [Parameter(Position = 3)] + [string]$OutputDir = "dist", + + [Parameter()] + [string]$SupplementaryDir = "" +) + +$ErrorActionPreference = "Stop" + +# Resolve project root relative to script location +$ProjectRoot = (Resolve-Path "$PSScriptRoot/..").Path + +# Resolve Supplementary directory +if ([string]::IsNullOrWhiteSpace($SupplementaryDir)) { + $SupplementaryDir = Join-Path $ProjectRoot "Supplementary" +} +if (-not (Test-Path $SupplementaryDir)) { + throw "Supplementary directory not found: $SupplementaryDir" +} +$SupplementaryDir = (Resolve-Path $SupplementaryDir).Path + +# Auto-detect BinDir if not provided +if ([string]::IsNullOrWhiteSpace($BinDir)) { + $candidates = @( + (Join-Path $ProjectRoot "bin_output"), + (Join-Path $ProjectRoot "Release"), + $SupplementaryDir + ) + foreach ($cand in $candidates) { + if (Test-Path (Join-Path $cand "FA2sp.dll")) { + $BinDir = $cand + break + } + } +} +if ([string]::IsNullOrWhiteSpace($BinDir) -or -not (Test-Path (Join-Path $BinDir "FA2sp.dll"))) { + Write-Warning "FA2sp.dll not found in candidate binary paths. Packages will be built using files present in Supplementary." +} else { + $BinDir = (Resolve-Path $BinDir).Path + Write-Host "Using binary directory: $BinDir" +} + +# Resolve Output directory +if (-not [System.IO.Path]::IsPathRooted($OutputDir)) { + $OutputDir = [System.IO.Path]::GetFullPath((Join-Path (Get-Location) $OutputDir)) +} +if (-not (Test-Path $OutputDir)) { + New-Item -ItemType Directory -Path $OutputDir -Force | Out-Null +} + +$targetsToProcess = if ($Target -eq "All") { @("YR", "MO", "RN") } else { @($Target) } + +Write-Host "========================================================" +Write-Host " Packaging FA2sp ($Version) for targets: $($targetsToProcess -join ', ')" +Write-Host " Output Directory: $OutputDir" +Write-Host "========================================================" + +foreach ($t in $targetsToProcess) { + $pkgName = "FA2sp-$t-$Version.zip" + $zipPath = Join-Path $OutputDir $pkgName + $stageDir = Join-Path $OutputDir "staging_$t" + + Write-Host "`n--> Packaging target: $t" + + if (Test-Path $stageDir) { + Remove-Item -Path $stageDir -Recurse -Force + } + + # 1. Copy Supplementary base tree + Copy-Item -Path $SupplementaryDir -Destination $stageDir -Recurse -Force + + # 2. Apply target modifications + if ($t -eq "YR") { + Remove-Item -Path "$stageDir/MentalOmega" -Recurse -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/RevengeNow" -Recurse -Force -ErrorAction SilentlyContinue + } + elseif ($t -eq "MO") { + if (Test-Path "$stageDir/MentalOmega") { + Get-ChildItem -Path "$stageDir/MentalOmega" | ForEach-Object { + Copy-Item -Path $_.FullName -Destination $stageDir -Recurse -Force + } + } + Remove-Item -Path "$stageDir/MentalOmega" -Recurse -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/RevengeNow" -Recurse -Force -ErrorAction SilentlyContinue + } + elseif ($t -eq "RN") { + if (Test-Path "$stageDir/RevengeNow") { + Get-ChildItem -Path "$stageDir/RevengeNow" | ForEach-Object { + Copy-Item -Path $_.FullName -Destination $stageDir -Recurse -Force + } + } + Remove-Item -Path "$stageDir/MentalOmega" -Recurse -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/RevengeNow" -Recurse -Force -ErrorAction SilentlyContinue + } + + # 3. Inject compiled binaries if available + if (-not [string]::IsNullOrWhiteSpace($BinDir)) { + $dllPath = Join-Path $BinDir "FA2sp.dll" + $pdbPath = Join-Path $BinDir "FA2sp.pdb" + if (Test-Path $dllPath) { + Copy-Item -Force $dllPath "$stageDir/FA2sp.dll" + } + if (Test-Path $pdbPath) { + Copy-Item -Force $pdbPath "$stageDir/FA2sp.pdb" + } + } + + # 4. Clean developer / test artifacts + Remove-Item -Path "$stageDir/FA2sp.UnitTest.dll" -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/RunUnitTest.bat" -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/*.log" -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/*.xml" -Force -ErrorAction SilentlyContinue + Remove-Item -Path "$stageDir/*.isolated" -Force -ErrorAction SilentlyContinue + + # 5. Compress + if (Test-Path $zipPath) { + Remove-Item -Force $zipPath + } + Compress-Archive -Path "$stageDir/*" -DestinationPath $zipPath -Force + + # Cleanup staging directory + Remove-Item -Path $stageDir -Recurse -Force + + $zipItem = Get-Item $zipPath + Write-Host "Created: $pkgName ($([math]::Round($zipItem.Length / 1MB, 2)) MB)" +} + +Write-Host "`nAll requested targets packaged successfully." diff --git a/Supplementary/RunUnitTest.bat b/Scripts/RunUnitTest.bat similarity index 96% rename from Supplementary/RunUnitTest.bat rename to Scripts/RunUnitTest.bat index a152cd77..351b491a 100644 --- a/Supplementary/RunUnitTest.bat +++ b/Scripts/RunUnitTest.bat @@ -1,5 +1,5 @@ @echo off -pushd "%~dp0" +pushd "%~dp0..\Supplementary" :DO_ISOLATE if exist "FA2sp.dll" ( diff --git a/Supplementary/RevengeNow/FinalRevengeDefaults.ini b/Supplementary/RevengeNow/FinalRevengeDefaults.ini deleted file mode 100644 index 7c4944c4..00000000 --- a/Supplementary/RevengeNow/FinalRevengeDefaults.ini +++ /dev/null @@ -1,16 +0,0 @@ -[Files] - -[FinalAlert] -Language=English -FileSearchLikeGame=yes - -[RA2] - -[UserInterface] -LoadScreenDelay=4.0 -UseDefaultMouseCursor=1 -ShowBuildingCells=1 -EasyView=0 - -[MiniMap] -Scale=2.000000 diff --git a/Supplementary/RevengeNow/README.md b/Supplementary/RevengeNow/README.md index ac29a223..49bed0d2 100644 --- a/Supplementary/RevengeNow/README.md +++ b/Supplementary/RevengeNow/README.md @@ -21,12 +21,10 @@ - `SaveMap.KeepComments=true`:ä¿�存地图时ä¿�留注释。 - **ä¸�包å�«ä»»ä½• Phobos 扩展特性**。 2. **`TileGroups.ini`**: - - ç§»æ¤�自 `YR_RN_Mission_Editor/dist/FinalRevenge/TileGroups.ini`,包å�«æ¸©å’Œæ°”候ã€�雪地ã€�城市等地形的分组与快速选择é…�置。 -3. **`FinalRevengeDefaults.ini`**: - - ç§»æ¤�自 `YR_RN_Mission_Editor/dist/FinalRevenge/FinalRevengeDefaults.ini`,包å�«é¢„设界é�¢å�‚数(缩放ã€�显示网格等)。 + - ç§»æ¤�自 `YR_RN_Mission_Editor/dist/FinalRevenge/TileGroups.ini`(注:FA2sp 原生未接入该地形分组é…�置,仅供å�‚考ä¿�留)。 --- ## 使用方法 -将本目录中的 `FAData.ini`ã€�`TileGroups.ini`(å�Šæ‰€éœ€è¾…助文件)放置到 FA2 程åº�è¿�行根目录(或覆盖使用),å�¯åЍå�Žä¿�存地图å�³å�¯ä¿�è¯� INI 文件结构ã€�å°�节顺åº�与键值顺åº�与 `YR_RN_Mission_Editor` 完全一致。 +将本目录中的 `FAData.ini` 放置到 FA2 程åº�è¿�行根目录(或覆盖使用),å�¯åЍå�Žä¿�存地图å�³å�¯ä¿�è¯� INI 文件结构ã€�å°�节顺åº�与键值顺åº�与 `YR_RN_Mission_Editor` 完全一致。 diff --git a/agents.md b/agents.md index ee7b2864..0e915def 100644 --- a/agents.md +++ b/agents.md @@ -39,23 +39,30 @@ msbuild FA2sp.UnitTest/FA2sp.UnitTest.vcxproj /p:Configuration=Release /p:Platfo ``` ### Run Unit Tests -From `Supplementary/` directory: +From project root: ```bat -cd Supplementary -RunUnitTest.bat +Scripts\RunUnitTest.bat ``` - -### Run with GoogleTest Filters / Options -Arguments are automatically forwarded to GoogleTest through Syringe: +Or with GoogleTest Filters / Options: ```bat -RunUnitTest.bat --gtest_filter=SequencedKeyListTest.* -RunUnitTest.bat --gtest_filter=CINIOrderTrackerTest.* -RunUnitTest.bat --gtest_repeat=5 +Scripts\RunUnitTest.bat --gtest_filter=SequencedKeyListTest.* +Scripts\RunUnitTest.bat --gtest_filter=CINIOrderTrackerTest.* +Scripts\RunUnitTest.bat --gtest_repeat=5 ``` ### Inspect Test Results -- Console output: printed directly by `RunUnitTest.bat`. +- Console output: printed directly by `Scripts\RunUnitTest.bat`. - Detailed log: `Supplementary/UnitTest.log`. - XML report: `Supplementary/UnitTest.xml`. - Injector log: `Supplementary/syringe.log`. - Exit code: 0 indicates success, non-zero indicates test failure. + +## 5. Local Release Simulation & Packaging +Package release zip archives for YR, MO, and RN locally using `Scripts/PackageRelease.ps1`: +```powershell +# Package all editions (YR, MO, RN) into dist/ +./Scripts/PackageRelease.ps1 + +# Package a single edition with specific version: +./Scripts/PackageRelease.ps1 -Target RN -Version v1.6.4 +``` From 793bae297bdb69be16b7e724b70c5b9c74860fd4 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 19:32:03 -0400 Subject: [PATCH 12/24] fix(rn): base RevengeNow FAData.ini on default FAData.ini with proper includes and remove unused TileGroups.ini --- .gitignore | 2 + Supplementary/RevengeNow/FAData.ini | 2224 ++++++++++++++--------- Supplementary/RevengeNow/README.md | 14 +- Supplementary/RevengeNow/TileGroups.ini | 113 -- 4 files changed, 1348 insertions(+), 1005 deletions(-) delete mode 100644 Supplementary/RevengeNow/TileGroups.ini diff --git a/.gitignore b/.gitignore index b5921cbe..783a8204 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,5 @@ Supplementary/FA2sp.dll Supplementary/*.log Supplementary/*.txt Supplementary/UnitTest.xml +dist/ +bin_output/ diff --git a/Supplementary/RevengeNow/FAData.ini b/Supplementary/RevengeNow/FAData.ini index 0f8a2a98..28d62b9f 100644 --- a/Supplementary/RevengeNow/FAData.ini +++ b/Supplementary/RevengeNow/FAData.ini @@ -1,98 +1,1271 @@ -; FAData.ini - Data file for FinalAlert 2: Yuri's Revenge +; FAData.ini - Data file for FinalAlert 2: Yuri's Revenge (tm) ; This file offers data for FinalAlert 2 -; last change: Zero Fanker, June 1, 2024 ; Debug section: use carefully! [Debug] -;DisplayAllOverlay=Yes ; Doesn¡ät cripple the overlay list in any way -;IgnoreSHPImageHeadUnused=Yes ; Use this *carefully* to make SHP graphics of some mods work that incorrectly have the shadow flag set -EnableTrackLogic=Yes ; Enables Track Logic -AllowTunnels=yes -AllowUnidirectionalTunnels=yes -;ShowBuildingsWithToTile=no -RenderPlainHouseColor=yes +;DisplayAllOverlay=true ; Doesn't cripple the overlay list in any way +EnableTrackLogic=true ; Enables Track Logic +;IgnoreSHPImageHeadUnused=true ; Use this *carefully* to make SHP graphics of some mods work that incorrectly have the shadow flag set +AllowTunnels=true ; Enables tunnel editing + +; Recursive inclusion is not supported +[Include] +0=FAData_RandomPlacement.ini +1=FAData_ObjectBrowser.ini +2=FAData_TriggerAndScript.ini +3=FAData_Customized.ini [ExtConfigs] -; Preserve existing INI section order when saving maps -SaveMap.PreserveINISorting=true +; BOOLEAN ; Enables the redesigned ObjectBrowserView +; BOOLEAN ; å�¯ç”¨é‡�æž„å�Žçš„ ObjectBrowserView +BrowserRedraw=true + +; 0/1 ; Controls how FA2sp guesses a unit house: 0 (default) uses Prerequisite, 1 uses the first Owner +; 0/1 ; 决定 FA2sp 如何猜测å�•ä½�的阵è�¥, 0(默认)为Prerequisite, 1为第一个Owner +ObjectBrowser.GuessMode=0 + +; INTERGER ; Maximum number of sides to guess; higher values return Other (-1). Default 15 +; INTERGER ; 决定猜测阵è�¥çš„æœ€å¤§å€¼. 如果超过该值则返回为其他(-1), 默认为 15 +ObjectBrowser.GuessMax=15 + +; BOOLEAN ; Remove empty entries from house categories +; BOOLEAN ; 阵è�¥åˆ†ç±»ä¼šæ¸…除空项目 +ObjectBrowser.CleanUp=true + +; BOOLEAN ; Hide houses that cannot be used +; BOOLEAN ; 决定 FA2sp 是å�¦å±�蔽掉ä¸�能使用的所属方 +ObjectBrowser.SafeHouses=true + +; BOOLEAN ; Additionally group structures by foundation size +; BOOLEAN ; 是å�¦ä¼šé¢�外按照建筑大å°�进行分类 +ObjectBrowser.Foundation=false + +; BOOLEAN ; Use random ore in placing +; BOOLEAN ; 是å�¦åœ¨æ‘†æ”¾çŸ¿çŸ³æ—¶éš�机图åƒ� +ObjectBrowser.Ore.RandomPlacement=false + +; BOOLEAN ; Display extra two types of ores in "Ore and Gems" +; BOOLEAN ; 是å�¦åœ¨â€œé‡‘矿和水晶â€�中支æŒ�é¢�外矿石类型的摆放 +ObjectBrowser.Ore.ExtraSupport=false + +; BOOLEAN ; Load EditorCategory in rules into object viewer +; BOOLEAN ; æ ¹æ�®å�•ä½�rules中的EditorCategory在对象查看器中分类 +GridObjectViewer.LoadEditorCategory=true + +; BOOLEAN ; Load ForceSides in rules into object viewer +; BOOLEAN ; æ ¹æ�®å�•ä½�çš„ForceSides在对象查看器中分类 +GridObjectViewer.LoadForceSides=true + +; BOOLEAN ; Load smudges/terrains/overlays into object viewer based on their ObjectBrowser group +; BOOLEAN ; æ ¹æ�®æ±¡æŸ“/地形对象/覆盖物在物å“�æµ�览器中的分组在对象查看器中分类 +GridObjectViewer.LoadObjectBrowserCategory=true + +; BOOLEAN ; Load the special civilian translation file (fa2civilian.csf) +; BOOLEAN ; 是å�¦åŠ è½½å¯¹å¹³æ°‘å�•ä½�/建筑的特殊翻译 (fa2civilian.csf) +LoadCivilianStringtable=true + +; BOOLEAN ; Reload supporting files from the map folder without reconfiguring FinalAlert.ini; default false +; BOOLEAN ; 是å�¦ä»Žåœ°å›¾æ–‡ä»¶å¤¹é‡�新读å�–所有文件, 而ä¸�需è¦�é‡�新设置 FinalAlert.ini, 默认为 false +ReloadGameFromMapFolder=true + +; BOOLEAN ; Reload game INIs when opening map file; default false +; BOOLEAN ; 是å�¦åœ¨æ‰“开地图时é‡�新加载游æˆ�ini, 默认为 false +ReloadIniWhenOpeningMap=false + +; BOOLEAN ; Load game resources from map folder when directly open map; default false +; BOOLEAN ; å�Œå‡»æ‰“开地图文件时,从地图目录加载资æº�文件, 默认为 false +LoadGameFromMapFolder.OnInit=false + +; BOOLEAN ; Read #include sections to load additional INI files (not recommended) +; BOOLEAN ; 读å�– #include 部分以获å�–å…¶ä»– ini(ä¸�推è��) +AllowIncludes=true + +; BOOLEAN ; Load inherited INI sections (not recommended) +; BOOLEAN ; 读å�–继承的INIå°�节(ä¸�推è��) +AllowInherits=false + +; BOOLEAN ; section name of include (yes = $Include(Phobos), no = #include(Ares)) +; BOOLEAN ; includeå°�节的å��ç§° (yes = $Include(Phobos), no = #include(Ares)) +IncludeType=false + +; BOOLEAN ; section name of inherit (yes = $Inherit(Phobos), no = []:[](Ares)) +; BOOLEAN ; inheritå°�节的å��ç§° (yes = $Inherit(Phobos), no = []:[](Ares)) +InheritType=false + +; BOOLEAN ; Allow the += syntax (not recommended) +; BOOLEAN ; 读å�– += (ä¸�推è��) +AllowPlusEqual=true + +; BOOLEAN ; Read Image= from infantry, vehicle, and aircraft art(md) +; BOOLEAN ; 读å�–步兵, 车辆, 飞行器 art(md) 中的Image= +ArtImageSwap=false + +; BOOLEAN ; When enabled, selecting a CSF text argument opens the CSF browser +; BOOLEAN ; å�¯ç”¨æ­¤åŠŸèƒ½å�Ž, 当触å�‘å�‚数为CSF文本时, 点击下拉è�œå�•会弹出CSFæµ�览器 +TutorialTexts.Viewer=true + +; BOOLEAN ; Ask for confirmation when deleting sub-entries of triggers/scripts, etc. +; BOOLEAN ; 删除删除触å�‘/脚本等的å­�æ�¡ç›®æ—¶æ˜¯å�¦éœ€è¦�确认 +ConfirmDelete.SubEntries=false + +; BOOLEAN ; Clone triggers/teams/taskforces/scripts/AI triggers with an incrementing suffix instead of "Clone" +; BOOLEAN ; å�¯ç”¨æ­¤åŠŸèƒ½å�Ž, å¤�制触å�‘ã€�å°�队ã€�特é�£ã€�脚本ã€�AI触å�‘时,都会在å��称最å�Žæ–°å¢žé€’增编å�·ï¼Œè€Œä¸�是Clone +CloneWithOrderedID=true + +; BOOLEAN ; When creating new triggers/teams/taskforces/scripts/AI triggers, always use an incremented index (max + 1) instead of searching for the first available index +; BOOLEAN ; å�¯ç”¨æ­¤åŠŸèƒ½å�Ž, 创建触å�‘ã€�å°�队ã€�特é�£ã€�脚本ã€�AI触å�‘时,会在当å‰�最大IDå�Žé€’增,而ä¸�是寻找第一个å�¯ç”¨ID +UseSequentialIndexing=false + +; Independent suffixes (such as -TR for trigger) will be assigned when creating triggers, teams, taskforces, scripts, and AI triggers +; å�¯ç”¨æ­¤åŠŸèƒ½å�Ž, 创建触å�‘ã€�å°�队ã€�特é�£ã€�脚本ã€�AI触å�‘时,会分é…�独立的å�Žç¼€ï¼ˆå¦‚触å�‘å�Žç¼€ä¸º-TR) +UseSeparateIndexing=false -; Preserve existing INI key order within sections when saving maps -SaveMap.PreserveINIKeySorting=true +; BOOLEAN ; Automatically adjust dropdown widths +; BOOLEAN ; å�¯ç”¨å�Ž, FA2 将自动调整下拉è�œå�•宽度 +AdjustDropdownWidth=true -; Keep existing comments when saving maps +; INTERGER ; Character width factor; default 8 +; INTERGER ; å�•个字符å� ç”¨ç©ºé—´, 默认为8 +AdjustDropdownWidth.Factor=6 + +; INTERGER ; Maximum dropdown width; default 360 +; INTERGER ; 下拉è�œå�•的最大长度, 默认为360 +AdjustDropdownWidth.Max=420 + +; BOOLEAN ; Display the disabled status of the trigger in the dropdown menu of the trigger editor; default true +; BOOLEAN ; 在触å�‘编辑器下拉è�œå�•显示触å�‘çš„ç¦�止状æ€�, 默认为 true +DisplayTriggerEnableInfo=true + +; BOOLEAN ; Check whether attached trigger is itself, default true +; BOOLEAN ; 检查下级触å�‘是å�¦æ˜¯è‡ªèº«, 默认为 true +AttachedTriggerIsSelfCheck=true + +; BOOLEAN ; Sort by name instead of ID in trigger/team/taskforce/script/terrain generator editors +; BOOLEAN ; 在触å�‘编辑器ã€�å°�队ã€�特é�£éƒ¨é˜Ÿã€�动作脚本ã€�地形生æˆ�器中, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº� +SortByLabelName=true + +; BOOLEAN ; Override sorting for teams to use names instead of IDs +; BOOLEAN ; 在排åº�å°�队时, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 +SortByLabelName.Team=true + +; BOOLEAN ; Override sorting for scripts to use names instead of IDs +; BOOLEAN ; 在排åº�脚本时, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 +SortByLabelName.Script=true + +; BOOLEAN ; Override sorting for triggers to use names instead of IDs +; BOOLEAN ; 在排åº�触å�‘æ—¶, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 +SortByLabelName.Trigger=true + +; BOOLEAN ; Override sorting for AI triggers to use names instead of IDs +; BOOLEAN ; 在排åº�AI触å�‘æ—¶, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 +SortByLabelName.AITrigger=true + +; BOOLEAN ; Override sorting for taskforces to use names instead of IDs +; BOOLEAN ; 在排åº�特é�£éƒ¨é˜Ÿæ—¶, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 +SortByLabelName.Taskforce=true + +; BOOLEAN ; Override sorting for tags to use names instead of IDs +; BOOLEAN ; 在排åº�标签时, 是å�¦ä¾�æ�®å��称而ä¸�是ID进行排åº�, 覆盖 SortByLabelName 设置 +SortByLabelName.Tag=true + +; BOOLEAN ; Disable automatic search for dropdown menus; search only when pressing Enter; default false +; BOOLEAN ; 是å�¦ç¦�止下拉è�œå�•的自动æ�œç´¢ï¼Œè‹¥ç¦�止,需è¦�按Enter执行æ�œç´¢, 默认为 false +SearchCombobox.Disabled=false + +; BOOLEAN ; Allow automatic search for non-parameter (trigger actiontype, eventtype, etc) dropdown menus; default true +; BOOLEAN ; 是å�¦å…�许é�žå�‚数项(触å�‘事件ã€�行为ç§�类等)下拉è�œå�•的自动æ�œç´¢, 默认为 true +SearchCombobox.AllowNonParams=true + +; BOOLEAN ; Enable auto-search when entering waypoints; default false +; BOOLEAN ; 是å�¦åœ¨ä¸‹æ‹‰è�œå�•中输入路径点时自动弹出æ�œç´¢, 默认为 false +SearchCombobox.Waypoint=false + +; BOOLEAN ; Disable Lua console safety check; default false +; BOOLEAN ; 是å�¦ç¦�用Lua脚本安全检查, 默认为 false +DisableLuaConsoleSafetyCheck=false + +; BOOLEAN ; Display real HP in techno dialogs; default true +; BOOLEAN ; 是å�¦åœ¨å�•ä½�属性窗å�£å†…显示真实血é‡�, 默认为 true +DisplayRealHPinTechnoDlg=true + +; COLORREF(R,G,B) ; Outline color when copying; default 255,0,0. Range 0-255 +; COLORREF(R,G,B) ; å¤�制时æ��边的颜色, 默认为 255,0,0. å�–值范围为0-255 +CopySelectionBound.Color=255,0,0 + +; COLORREF(R,G,B) ; Outline color for the hovered cell; default 60,160,60. Range 0-255 +; COLORREF(R,G,B) ; 鼠标所指å�•元格的æ��边的颜色, 默认为 60,160,60. å�–值范围为0-255 +CursorSelectionBound.Color=30,30,255 + +; COLORREF(R,G,B) ; Dashed height indicator color; default 60,60,60. Range 0-255 +; COLORREF(R,G,B) ; 指示高度的虚线的颜色, 默认为 60,60,60. å�–值范围为0-255 +CursorSelectionBound.HeightIndicatorColor=60,60,160 + +; BOOLEAN ; Adjust outline color by height level; default false +; BOOLEAN ; 是å�¦æ ¹æ�®å½“å‰�高度显示ä¸�å�Œçš„æ��边颜色, 默认为 false +CursorSelectionBound.AutoHeightColor=true + +; BOOLEAN ; Auto-detect encoding when opening INI and map files +; BOOLEAN ; 是å�¦åœ¨æ‰“å¼€ini和地图文件时自动推断编ç �, 默认为 true +UTF8Support.InferEncoding=true + +; BOOLEAN ; Always save maps using UTF-8 encoding +; BOOLEAN ; 是å�¦æ€»æ˜¯ä»¥UTF8ç¼–ç �ä¿�存地图, 默认为 false +UTF8Support.AlwaysSaveAsUTF8=false + +; BOOLEAN ; Enable automatic map saves +; BOOLEAN ; 是å�¦è‡ªåЍä¿�存地图 +SaveMap.AutoSave=true + +; INTEGER ; Interval between autosaves in seconds; must be >= 30, default 300 +; INTEGER ; 应大于或等于30, 默认值为300, 决定两次自动ä¿�存间隔多少秒钟 +SaveMap.AutoSave.Interval=360 + +; INTEGER ; Number of backups to keep; -1 disables automatic cleanup. Default 10 +; INTEGER ; ä¿�存几个副本, 设置为-1å°†ç¦�用自动删除备份功能, 默认为10 +SaveMap.AutoSave.MaxCount=10 + +; BOOLEAN ; Only save maps in .map format +; BOOLEAN ; å�ªä»¥.mapæ ¼å¼�ä¿�存地图 +SaveMap.OnlySaveMAP=false + +; Generate preview option when saving multiplayer maps. 0 create new, 1 reuse existing, 2 solid black. Default 0 +; ä¿�存多人游æˆ�地图时生æˆ�预览的默认选项.0 生产新的预览, 1 使用已存在的, 2 使用纯黑预览. 默认为0 +SaveMap.DefaultPreviewOptionMP=0 + +; Same as above for singleplayer missions +; å�Œä¸Š, å�•人战役 +SaveMap.DefaultPreviewOptionSP=2 + +; BOOLEAN ; Produce higher fidelity RA2-style previews when generating new previews (multiplayer only) +; BOOLEAN ; 选择生æˆ�新的预览时, 生æˆ�更精细的, 原版风格的预览图 (仅支æŒ�多人游æˆ�) +SaveMap.BetterMapPreview=true + +; BOOLEAN ; Add an encoding warning comment at the top when saving maps +; BOOLEAN ; ä¿�存地图时在开头添加编ç �警告注释 +SaveMap.FileEncodingComment=true + +; BOOLEAN ; Keep existing comments when saving maps, ini editor can also save and display comments +; BOOLEAN ; ä¿�存地图时ä¿�留注释, ini编辑器也å�¯ä»¥ä¿�存并显示注释 SaveMap.KeepComments=true -[Customizations] -AnimationListID=OrderedAnimations -DefaultGameMode=standard -DefaultMinPlayers=2 -SaveMapExtensionOverride=no -SaveMapExtensionDefault=.map - -[Sides] -0=Allied -1=Soviet -2=Yuri -3=°²ËþÁÐÐÇ -4=¿Æ¼¼¹¦Äܽ¨Öþ,1 -5=µØ±ê½¨ÖþÀà,1 -6=´ó³ÇÊн¨Öþ,1 -7=ÖÐС³ÇÊн¨Öþ,1 -8=´åׯ½¨Öþ,1 -9=¹¤Òµ½¨Öþ,1 -10=СÐÍ×°Êΰڼþ,1 -11=ÖÐÁ¢ÌØÊ⽨Öþ,1 - -[GameModes] -standard=±ê×¼×÷Õ½ -teamgame=С¶ÓÁªÃË -freeall=»ìÕ½ -cooperative=ºÏ×÷ÈÎÎñ -duel=ÇÀµØÅÌ -navalwar=º£Õ½ -meatgrind=ÉúËÀ¶· -megawealth=¾Þ¸» -manymoney=ÌÔ½ðÈÈ -fortresswar=¹¥³Ç°ÎÕ¯ -testside=¿ª·¢ÕßÀÖÔ° -airwar=(ÎÞЧ)¿ÕÕ½ -nukewar=(ÎÞЧ)ºËÕ½ - -[ForceUnitPalettePrefix] -0=TIBTRE - -[ForceIsoPalettePrefix] - -;===ScriptTemplates=== -;X=UIName, Name, Count, Key 1 ,Value 1 , Key 2 ,Value 2 , ..., Key Count ,Value Count -;EMPTY will be considered as a CONST, with it FA2Copy will ignore the value - -;By prry -[ScriptTemplates] -DefaultName=ĬÈÏ -Counts=5 -1=Á½µã¼äѲÂß,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 -2=Èýµã¼äѲÂß,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 -3=Ëĵã¼äѲÂß,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 -4=×°ÔØ²¿¶ÓÐ¶ÔØ¹¥»÷,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 -5=×°ÔØÈëÔØ¾ß²¢¹¥»÷,New load script,3,21,EMPTY,14,EMPTY,0,0 - -;===TeamTemplates=== -;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 -;Checkbox order matrix: -; |1 6 11 | -; |2 7 12 16| -; |3 8 13 17| -; |4 9 14 18| -; |5 10 15 19| - -;By Sandman -[TeamTemplates] -DefaultName=ĬÈÏ -Counts=3 -1=¿Õ½µ²¿¶Ó,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 -2=AIÉú²úС¶Ó,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 -3=Í»»÷С¶Ó,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 +; BOOLEAN ; Preserve existing INI section order when saving maps +; BOOLEAN ; ä¿�存地图时维æŒ�已有的 ini å°�节顺åº� +SaveMap.PreserveINISorting=true + +; BOOLEAN ; Preserve existing INI key order within sections when saving maps +; BOOLEAN ; ä¿�存地图时维æŒ�å°�节内已有的 ini 键值顺åº� +SaveMap.PreserveINIKeySorting=true + +; Number of recent maps to remember; range 4-9 +; 记录多少个最近打开地图, å�–值范围为4-9 +RecentFileLimit=9 + +; BOOLEAN ; Enable unlimited waypoints; default false (requires Phobos) +; BOOLEAN ; å�¯ç”¨æ— é™�路径点, 默认为 false (需è¦�Phobos) +ExtWaypoints=false + +; BOOLEAN ; Enable unlimited variables; default false (requires Phobos) +; BOOLEAN ; å�¯ç”¨æ— é™�å�˜é‡�, 默认为 false (需è¦�Phobos) +ExtVariables=false + +; BOOLEAN ; Enable unlimited overlays; switches NewINIFormat to 5 when overlay index exceeds 255. Default false (requires Phobos) +; BOOLEAN ; å�¯ç”¨æ— é™�覆盖物, 当地图中覆盖物索引超过255æ—¶, 会自动将 NewINIFormat 切æ�¢ä¸º 5, 默认为 false (需è¦�Phobos) +ExtOverlays=false + +; BOOLEAN ; Enable 32 facing directions; increases memory usage. Default false +; BOOLEAN ; å�¯ç”¨32å�‘é�¢å�‘, 会导致内存å� ç”¨å¢žå¤§, 默认为 false +ExtFacings=false + +; BOOLEAN ; Allow drag placement for 32 facings by holding Ctrl; otherwise 8 facings. Default false +; BOOLEAN ; å�¯ç”¨32å�‘拖拽, 如果该值为 true, 则按ä½� ctrl 对å�•ä½�进行拖拽å�¯é€‰32å�‘, å�¦åˆ™ä¸º8å�‘, 默认为 false +ExtFacings.Drag=false + +; BOOLEAN ; Show a live preview while dragging facings. Default true +; BOOLEAN ; å�¯ç”¨æ‹–拽é�¢å�‘的实时预览, 默认为 true +ExtFacings.DragPreview=true + +; BOOLEAN ; Allow scroll units into 32 facings when placing; otherwise 8 facings. Default false +; BOOLEAN ; å�¯ç”¨32å�‘的摆放时滚轮调整æœ�å�‘, å�¦åˆ™ä¸º8å�‘, 默认为 false +ExtFacings.Scroll=false + +; BOOLEAN ; Allow vehicles and aircraft to tilt on slopes. Default false +; BOOLEAN ; 车辆和飞行器在斜å�¡ä¸Šæ˜¾ç¤ºå€¾æ–œå›¾åƒ�, 默认为 false +ExtTilts=false + +; BOOLEAN ; Enable the new MIX loader to reduce memory leaks. Default true +; BOOLEAN ; å�¯ç”¨æ–°çš„ Mix 加载器, å�¯ä»¥å‡�少内存泄æ¼�, 默认为 true +ExtMixLoader=true + +; BOOLEAN ; Load all in-map objects during map initialization to reduce lag during use. Default false +; BOOLEAN ; 在地图åˆ�始化时加载所有地图内对象, å�¯ä»¥å‡�少使用中å�¡é¡¿, 默认为 false +LoadObjectsOnInit=false + +; INTEGER ; Number of undo/redo steps; default 64 +; INTEGER ; å�¯ä»¥è¿›è¡Œå¤šå°‘次撤销/é‡�å�š, 默认为64. +UndoRedoLimit=250 + +; BOOLEAN ; Holding Shift while placing terrain counts as a single history entry. Default true +; BOOLEAN ; 如果该值为 true, 则按ä½�shift放置地形时的å�˜åŠ¨ä»…è®°å½•ä¸€æ¬¡åŽ†å�²è®°å½•, 撤销会全部撤销, 默认为 true +UndoRedo.ShiftPlaceTile=true + +; BOOLEAN ; Holding placement when drawing overlays counts as a single history entry. Default true +; BOOLEAN ; 如果该值为 true, 则长按放置覆盖图时的å�˜åŠ¨ä»…è®°å½•ä¸€æ¬¡åŽ†å�²è®°å½•, 撤销会全部撤销, 默认为 true +UndoRedo.HoldPlaceOverlay=true + +; BOOLEAN ; Track history for game object edits. Default true +; BOOLEAN ; 如果该值为 true, 记录游æˆ�对象的修改历å�², 默认为 true +UndoRedo.RecordObjects=true + +; BOOLEAN ; Draw a rectangle background for waypoints. Default false +; BOOLEAN ; 为路径点绘制矩形背景, 默认为 false +Waypoint.Background=true + +; COLORREF(R,G,B) ; Waypoint background color. Range 0-255 +; COLORREF(R,G,B) ; 路径点背景的颜色. å�–值范围为0-255 +Waypoint.Background.Color=0,0,255 + +; COLORREF(R,G,B) ; Waypoint number color; default 0,0,255. Range 0-255 +; COLORREF(R,G,B) ; 路径点数字的颜色, 默认为 0,0,255. å�–值范围为0-255 +Waypoint.Color=255,255,0 + +; X,Y offset for waypoint text, default 0,0 +; 路径点文本的X,Yå��æ ‡å��移值, 默认为 0,0. +Waypoint.Text.ExtraOffset=0,0 + +; BOOLEAN ; Skip game directory validation (including ra2.mix). Default false +; BOOLEAN ; ç¦�用游æˆ�目录检测, å�¯ç”¨å�Žå°†ä¸�会检查游æˆ�目录是å�¦æœ‰æ•ˆ (包括ra2.mix), 默认为 false +DisableDirectoryCheck=false + +; COLORREF(R,G,B) ; Base node index color. Range 0-255 +; COLORREF(R,G,B) ; 基地节点索引å�·é¢œè‰². å�–值范围为0-255 +BaseNodeIndex.Color=255,255,0 + +; BOOLEAN ; Draw a rectangle background for index numbers. Default false +; BOOLEAN ; 为索引å�·ç»˜åˆ¶çŸ©å½¢èƒŒæ™¯, 默认为 false +BaseNodeIndex.Background=true + +; COLORREF(R,G,B) ; Background color of basenode index. Range 0-255 +; COLORREF(R,G,B) ; 基地节点索引的背景颜色. å�–值范围为0-255 +BaseNodeIndex.Background.Color=60,60,60 + +; BOOLEAN ; Move the tile browser from bottom to right pane. Default false +; BOOLEAN ; 将地形æµ�览器从底部移至å�³ä¾§, 默认为 false +VerticalLayout=true + +; BOOLEAN ; Display tile browser as a standalone window. Default false +; BOOLEAN ; 将地形æµ�览器作为独立窗å�£æ˜¾ç¤º, 默认为 false +TileSetBrowserFloating=false + +; BOOLEAN ; Display tile browser tabs in multiple rows to avoid horizontal scrolling. Default false +; BOOLEAN ; 地形æµ�览器标签页多行显示, é�¿å…�横å�‘滚动, 默认为 false +TileSetBrowserMultiLineTabs=false + +; BOOLEAN ; Display object browser as a standalone window. Default false +; BOOLEAN ; 将物å“�æµ�览器作为独立窗å�£æ˜¾ç¤º, 默认为 false +ViewObjectsFloating=false + +; BOOLEAN ; Enable dark theme. Default false +; BOOLEAN ; å�¯ç”¨æš—色模å¼�, 默认为 false +EnableDarkMode=false + +; BOOLEAN ; Dim the map view when dark theme is active. Default false +; BOOLEAN ; å�¯ç”¨æš—色模å¼�æ—¶, 将地图视图整体å�˜æš—, 默认为 false +EnableDarkMode.DimMap=false + +; BOOLEAN ; Follow the system dark theme setting; checked only at startup. Default true +; BOOLEAN ; FA2 将跟éš�系统暗色模å¼�, 仅会在å�¯åŠ¨æ—¶æ£€æµ‹, ä¸�能实时切æ�¢, 默认为 true +AutoDarkMode=true + +; DOUBLE ; Scheduled dark theme start in 24-hour time; decimals allowed. Default -1 +; DOUBLE ; 指定进入暗色模å¼�的时间, 24å°�时制, å�¯ä»¥å¡«å°�æ•°, 默认为 -1 +AutoDarkMode.StartTime=-1 + +; DOUBLE ; Scheduled dark theme end in 24-hour time; decimals allowed. Default -1 +; DOUBLE ; 指定离开暗色模å¼�的时间, 24å°�时制, å�¯ä»¥å¡«å°�æ•°, 默认为 -1 +AutoDarkMode.EndTime=-1 + +; BOOLEAN ; Enable high-DPI awareness, Default true +; BOOLEAN ; å�¯ç”¨é«˜DPI感知, 默认为 true +HiDPIAwareness=true + +; BOOLEAN ; Match IsoView default zoom to system scaling when high-DPI awareness is enabled, Default false +; BOOLEAN ; å�¯ç”¨é«˜ DPI 感知时,使地图视图默认匹é…�系统缩放比例, 默认为 true +HiDPIAwareness.ScaleIsoView=true + +; COLORREF(R,G,B) ; Highlight color for multi-selection cells +; COLORREF(R,G,B) ; 多选å�•元格功能中选中å�—的颜色 +MultiSelectionColor=255,47,255 + +; FLOAT ; Opacity of the overlay color on multi-selected cells +; FLOAT ; 多选å�•元格附加颜色的é€�明度 +MultiSelect.Opacity=0.33 + +; BOOLEAN ; Show all terrain objects in the random tree dialog. Default false +; BOOLEAN ; 在绘制éš�机树木对è¯�框中显示所有地形对象, 默认为 false +RandomTerrainObjects=false + +; BOOLEAN ; Allocate DirectDraw surfaces in video memory. Default true +; BOOLEAN ; 决定 FA2 是å�¦åœ¨æ˜¾å­˜ä¸­åˆ†é…� DirectDraw surface, 默认为 true +DDrawInVideoMem=true + +; BOOLEAN ; Use emulation mode for DirectDrawCreate. Default false +; BOOLEAN ; 决定 FA2 是å�¦åœ¨ DirectDrawCreate 中使用 emulation mode, 默认为 false +DDrawEmulation=false + +; BOOLEAN ; Support displaying IsoView on non-primary screens. Slight impact on performance. Default true +; BOOLEAN ; 是å�¦æ”¯æŒ�在副å±�上显示绘图界é�¢, 对性能有轻微影å“�, 默认为 true +SecondScreenSupport=true + +; DOUBLE ; Maximum render zoom (only in DDraw mode), Default 1.5 +; DOUBLE ; 绘图界é�¢çš„æœ€å¤§ç¼©æ”¾å€�率 (ä»…DDraw模å¼�有效), 默认为 1.5 +DDrawScalingMaximum=1.5 + +; BOOLEAN ; Use bilinear filtering when scaling the render surface. Improves quality at a performance cost. Default true +; BOOLEAN ; 使用å�Œçº¿æ€§æ�’值缩放绘图界é�¢, 缩放质é‡�更高, 但会影å“�性能, 默认为 true +DDrawScalingBilinear=true + +; BOOLEAN ; Only use bilinear filtering when zooming out. Default false +; BOOLEAN ; 仅在缩å°�界é�¢æ—¶ä½¿ç”¨å�Œçº¿æ€§æ�’值, 默认为 false +DDrawScalingBilinear.OnlyShrink=false + +; BOOLEAN ; Draw map using graphics card, dramatically improve performance. Default true +; BOOLEAN ; 使用显å�¡åŠ é€Ÿç»˜å›¾, å�¯ä»¥å¤§å¹…æ��å�‡æ€§èƒ½, 默认为 true +DirectXRendering=true + +; BOOLEAN ; Select graphics rendering API, true is OpenGL 3.3, false is Direct3D 11, default true +; BOOLEAN ; 选择显å�¡æ¸²æŸ“API, true 为 OpenGL 3.3, false 为 Direct3D 11, 默认为 true +OpenGLRendering=true + +; BOOLEAN ; Precisely calculate the depth relationship of game objects (slower). Default true +; BOOLEAN ; 精确计算游æˆ�对象间的深度关系 (轻微影å“�性能), 默认为 true +PreciseDepthCalculation=true + +; BOOLEAN ; Enable MCP server automatically when the Lua script console starts, allowing connection to LLMs. Default false +; BOOLEAN ; Lua 脚本终端开å�¯æ—¶è‡ªåЍå�¯ç”¨ MCP æœ�务器, å�¯ä»¥è¿žæŽ¥è‡³å¤§è¯­è¨€æ¨¡åž‹. 默认为 false +MCP.Enable=false + +; INTEGER ; Port of MCP server. Default 19198 +; INTEGER ; MCP æœ�务器的端å�£, 默认为 19198 +MCP.Port=19198 + +; How to integrate (change 19198 to your custom MCP.Port): +; 集æˆ�æ–¹å¼� (å°†19198替æ�¢ä¸ºä½ è‡ªå®šä¹‰çš„MCP.Port): +;{ +; "mcpServers": { +; "FA2spHE (RA2 map editor)": { +; "url": "http://localhost:19198" +; } +; } +;} + +; BOOLEAN ; Do not translate houses to their UIName. Default false +; BOOLEAN ; 决定 FA2 是å�¦*ä¸�*将所属方翻译为其 UIName, 默认为 false +NoHouseNameTranslation=false + +; BOOLEAN ; After translation, also display the English house name. Requires NoHouseNameTranslation to be false. Default false +; BOOLEAN ; 决定 FA2 是å�¦åœ¨æ‰€å±žæ–¹ç¿»è¯‘å�Žæ˜¾ç¤ºè‹±æ–‡åŽŸå��, 需è¦�关闭NoHouseNameTranslation, 默认为 false +BetterHouseNameTranslation=true + +; BOOLEAN ; Show warnings instead of errors for new map validation checks. Default false +; BOOLEAN ; 如果该值为 true, 则检查地图的新功能ä¸�会显示错误, 而是显示警告, 默认为 false +ExtendedValidationNoError=false + +; BOOLEAN ; Use a 512 value when checking map INI lengths (128 for Vanilla). Default false +; BOOLEAN ; 如果该值为 true, 则检查地图INI长度时会å�–512, 而ä¸�是原版的128, 默认为 false +ExtendedValidationAres=false + +; BOOLEAN ; Do not render structures with HP = 0 and LeaveRubble=no. Default false +; BOOLEAN ; 如果该值为 true, 则ä¸�会渲染 HP = 0 且带有 LeaveRubble=no 的建筑, 默认为 false +HideNoRubbleBuilding=false + +; BOOLEAN ; Enforce strict NewTheater logic; structures without art are hidden. Default false +; BOOLEAN ; 如果该值为 true, 则å�¯ç”¨ä¸¥æ ¼ NewTheater 逻辑, 未找到对应图åƒ�的建筑将ä¸�会显示, 默认为 false +UseStrictNewTheater=true + +; INTEGER ; Choose logic for reading the second art letter: 0 = Vanilla (G,N,C,Y), 1 = Ares (any letter). Default 1 +; INTEGER ; 设置读å�–建筑图åƒ�第二ä½�å­—æ¯�的逻辑, 0 = å°¤å¤�逻辑(G, N, C, Y开头), 1 = Ares逻辑(ä»»æ„�å­—æ¯�开头), 默认为 1 +NewTheaterType=1 + +; BOOLEAN ; Prevent placing overlapping structures; ignores StructureOverlappingCheckIgnores entries. Default false +; BOOLEAN ; 如果该值为 true, 则ä¸�能摆放é‡�å� å»ºç­‘, 忽略StructureOverlappingCheckIgnores中的建筑, 默认为 false +PlaceStructure.OverlappingCheck=true + +; BOOLEAN ; Auto-fill the Upgrade count. Default false +; BOOLEAN ; 如果该值为 true, 则自动填写Upgradeæ•°é‡�, 默认为 false +PlaceStructure.AutoUpgrade=true + +; BOOLEAN ; Apply full health when an Upgrade is present to match in-game behavior. Default false +; BOOLEAN ; 如果该值为 true, 建筑存在Upgradeæ—¶, 自动将血é‡�设置为满血, 符å�ˆæ¸¸æˆ�内表现, 默认为 false +PlaceStructure.UpgradeStrength=true + +; BOOLEAN ; Upgrades can be directly placed onto buildings. Default false +; BOOLEAN ; 如果该值为 true, å�¯ä»¥ç›´æŽ¥å�‘建筑放置加载物, 默认为 false +PlaceStructure.PlaceUpgrade=true + +; BOOLEAN ; When "Default Lighting" is selected, adjust unit RGB values. Default false +; BOOLEAN ; 选择光照沙盒的"默认光照"æ—¶, 是å�¦è°ƒæ•´å»ºç­‘, 步兵, 载具, 飞行器的RGB值. 默认为 false +LightingPreview.MultUnitColor=false + +; BOOLEAN ; Tint the tileset browser using the lighting sandbox settings. Default false +; BOOLEAN ; 是å�¦æŒ‰ç…§å…‰ç…§æ²™ç›’的光照é‡�新渲染地形æµ�览器图åƒ�. 默认为 false +LightingPreview.TintTileSetBrowserView=true + +; BOOLEAN ; Make the arrangement of images in tileset browser more compact. 默认为 true +; BOOLEAN ; 紧凑排列地形æµ�览器的图åƒ�. 默认为 true +TileSetBrowserViewCompactArrange=true + +; BOOLEAN ; Display the localsize border (blue outline) on the minimap. Default false +; BOOLEAN ; 在å°�地图中显示å�¯è§†åœ°å›¾è¾¹ç•Œ(è“�色边框). 默认为 false +ShowMapBoundInMiniMap=false + +; BOOLEAN ; Place the first infantry in subcell 4 (bottom) like the game. Default false +; BOOLEAN ; 如果该值为 true, å�•元格中第一个放置的步兵ä½�于最下方,å�³4å�·subcell, 默认为 false +InfantrySubCell.GameDefault=true + +; BOOLEAN ; Select infantry by cursor position within the cell instead of cycling all. Default false +; BOOLEAN ; 如果该值为 true, 在编辑步兵时会根æ�®é¼ æ ‡åœ¨å�•元格中的相对ä½�置选择步兵, 而ä¸�是é��历全部, 默认为 false +InfantrySubCell.Edit=true + +; BOOLEAN ; When only one infantry in a cell, still honor cursor position. Default false selects the only infantry regardless of cursor position +; BOOLEAN ; 如果该值为 true, 当å�•元格内å�ªæœ‰ä¸€ä¸ªæ­¥å…µæ—¶, ä»�然会判断鼠标的相对ä½�ç½®, false 时会始终选å�–该步兵, 默认为 false +InfantrySubCell.Edit.Single=false + +; BOOLEAN ; When dragging infantry, place them based on cursor position. Default false +; BOOLEAN ; 如果该值为 true, 在拖拽步兵时,会考虑鼠标的相对ä½�置放置, 默认为 false +InfantrySubCell.Edit.Drag=true + +; BOOLEAN ; When placing infantry, place them based on cursor position. Default false +; BOOLEAN ; 如果该值为 true, 在放置步兵时,会考虑鼠标的相对ä½�置放置, 默认为 false +InfantrySubCell.Edit.Place=true + +; BOOLEAN ; Lock infantry in the center to match InfantrySubCell.GameDefault, otherwise depend on cursor position. Default false +; BOOLEAN ; 如果该值为 true, 会固定å�•元格中间步兵的ä½�ç½®å�Œ InfantrySubCell.GameDefault 一致, å�¦åˆ™æ ¹æ�®é¼ æ ‡ä¸Šä¸‹ä½�置决定. 默认为 false +InfantrySubCell.Edit.FixCenter=false + +; BOOLEAN ; Consider OccupationBits of terrain objects when placing infantry. Default false +; BOOLEAN ; 如果该值为 true, 在放置步兵时会考虑地形对象对å�•元格的å� ç”¨, 默认为 false +InfantrySubCell.OccupationBits=true + +; STRING ; Default infantry parameterss matching the INI section +; STRING ; 摆放步兵的默认å�‚æ•°, 顺åº�与INIå°�节一致 +DefaultInfantryProperty=House,ID,256,X,Y,Subcell,Guard,64,None,0,-1,0,0,0 + +; STRING ; Default vehicle parameterss matching the INI section +; STRING ; 摆放车辆的默认å�‚æ•°, 顺åº�与INIå°�节一致 +DefaultUnitProperty=House,ID,256,X,Y,64,Guard,None,0,-1,0,-1,0,0 + +; STRING ; Default aircraft parameterss matching the INI section +; STRING ; 摆放飞行器的默认å�‚æ•°, 顺åº�与INIå°�节一致 +DefaultAircraftProperty=House,ID,256,X,Y,64,Guard,None,0,-1,0,0 + +; STRING ; Default buildiing parameterss matching the INI section +; STRING ; 摆放建筑的默认å�‚æ•°, 顺åº�与INIå°�节一致 +DefaultBuildingProperty=House,ID,256,X,Y,0,None,0,0,1,0,0,None,None,None,1,0 + +; STRING ; Supported associable map file formats +; STRING ; 支æŒ�å…³è�”的地图文件格å¼� +SupportedFormats=map,mpr,yrm,mmx,yro + +; BOOLEAN ; Force CString allocations on the stack for stability at minor perf cost. Default true +; BOOLEAN ; 强制CString内存在堆上分é…�, å�¯ä»¥æ��å�‡ç¨³å®šæ€§, 但å�¯èƒ½è½»å¾®é™�低效率, 默认为 true +StringBufferStackAllocation=true + +; BOOLEAN ; Use a stricter exception filter that catches C++ EH exceptions. Default false +; BOOLEAN ; å�¯ç”¨æ›´ä¸¥æ ¼çš„错误æ�•获, 会æ�•获 C++ EH exception, 默认为 false +StrictExceptionFilter=false + +; BOOLEAN ; Use the modern toolbar cameos. Default true +; BOOLEAN ; 是å�¦ä½¿ç”¨æ–°çš„工具æ �图标, 默认为 true +UseNewToolBarCameo=true + +; BOOLEAN ; Skip the tips of the day dialog. Default false +; BOOLEAN ; 是å�¦ä¸�显示今日æ��示窗å�£ï¼Œé»˜è®¤ä¸º false +SkipTipsOfTheDay=false + +; BOOLEAN ; Prevent brush tools (raise/lower/flatten) from changing brush size automatically. Default false +; BOOLEAN ; 在选择地形工具(抬å�‡ã€�é™�低ã€�平整地形)æ—¶, 是å�¦è·³è¿‡æ”¹å�˜ç¬”刷大å°�, 默认为 false +SkipBrushSizeChangeOnTools=true + +; BOOLEAN ; Remember brush sizes for mouse commands and restore them when switching. Default false +; BOOLEAN ; 记忆å�„æ“�作的笔刷大å°�,并在切æ�¢æ—¶è‡ªåŠ¨è¿˜åŽŸ, 默认为 false +RecordBrushSizeHistory=false + +; BOOLEAN ; When placing tiles, skip hidden cells. Default false +; BOOLEAN ; 在放置地形ã€�生æˆ�海岸ã€�抬å�‡åœ°è¡¨ã€�粘贴地形时, 是å�¦è·³è¿‡è¢«éš�è—�çš„å�•元格, 默认为 false +PlaceTileSkipHide=true + +; BOOLEAN ; Enable Veinhole Monster logic to display corresponding overlays in the object browser and terrain browser. Default false +; BOOLEAN ; å�¯ç”¨æ³°ä¼¯åˆ©äºšè—¤è”“(蔓孔)逻辑, 在物å“�æµ�览器ã€�地形æµ�览器中显示对应的覆盖物, 默认为 false +EnableVeinholeLogic=false + +; BOOLEAN ; Hide team/taskforce/script sections in the INI editor. Default false +; BOOLEAN ; 在INI编辑器中, 是å�¦å¿½ç•¥å°�队ã€�特é�£ã€�脚本å°�节, 默认为 false +INIEditor.IgnoreTeams=true + +; BOOLEAN ; When holding Ctrl for fill, treat LAT tiles as the same group. Default true +; BOOLEAN ; 按ä½�ctrl填充地形时, 是å�¦å�Œæ—¶å¡«å……目标地形的LAT, 默认为 true +FillArea.ConsiderLAT=true + +; BOOLEAN ; When holding Ctrl for fill, treat all water tiles as as the same group. Default true +; BOOLEAN ; 按ä½�ctrl填充地形时, 将所有水é�¢è§†ä¸ºä¸€ç±», 默认为 true +FillArea.ConsiderWater=true + +; BOOLEAN ; When holding Ctrl for fill, treat sub tile blocks as as the same group. Default true +; BOOLEAN ; 按ä½�ctrl填充地形时, 将整个地形的å­�地形å�—视作一类, 默认为 true +FillArea.ConsiderWholeTile=true + +; BOOLEAN ; Render object shadows in the map view. Default true +; BOOLEAN ; 是å�¦æ˜¾ç¤ºæ‰€æœ‰æ¸¸æˆ�对象的阴影, å¼€å�¯æ—¶å�¯ä»¥åœ¨å›¾å±‚中手动关闭, 默认为 true +InGameDisplay.Shadow=true + +; BOOLEAN ; Display voxel shadow on the ground instead of in the bottom. Default false +; BOOLEAN ; 在地é�¢ä¸Šè€Œä¸�是体素的最底部渲染阴影, 默认为 false +InGameDisplay.Shadow.OnGround=false + +; BOOLEAN ; Show deploy/unload images of units. Default true +; BOOLEAN ; 是å�¦å¯¹å�¯éƒ¨ç½²çš„Unload状æ€�çš„å�•ä½�显示部署图åƒ�, ä¸�会考虑å�‘生了å�•ä½�转æ�¢çš„å�•ä½�, 默认为 true +InGameDisplay.Deploy=true + +; BOOLEAN ; Draw water images of units in water. Default true +; BOOLEAN ; 是å�¦å¯¹æ°´ä¸­çš„æ­¥å…µæˆ–载具显示水中图åƒ�, ä¸�会考虑å�‘生了å�•ä½�转æ�¢çš„å�•ä½�, 默认为 true +InGameDisplay.Water=true + +; BOOLEAN ; Support Phobos damaged art images. Default true +; BOOLEAN ; 是å�¦æ”¯æŒ� Phobos çš„å�•ä½�伤残更æ�¢å›¾åƒ�功能, 默认为 true +InGameDisplay.Damage=true + +; BOOLEAN ; Render hover unit a little higher. Default true +; BOOLEAN ; 是å�¦å°†æ‚¬æµ®å�•ä½�渲染的更高一些, 默认为 true +InGameDisplay.Hover=true + +; BOOLEAN ; Display alphaimages for terrain objects and buildings; can disable manually if needed. Default true +; BOOLEAN ; 是å�¦æ˜¾ç¤ºå»ºç­‘物和地形对象的 AlphaImage, å¼€å�¯æ—¶å�¯ä»¥åœ¨å›¾å±‚中手动关闭, 默认为 true +InGameDisplay.AlphaImage=true + +; BOOLEAN ; Render "OnBridge" unit a little higher. Default true +; BOOLEAN ; 是å�¦å°†â€œåœ¨æ¡¥æ¢�上â€�çš„å�•ä½�渲染的更高一些, 默认为 true +InGameDisplay.Bridge=true + +; BOOLEAN ; Respect animation offsets in art when rendering. Default true +; BOOLEAN ; 是å�¦æ ¹æ�®ç´ æ��与 art 设置调整建筑动画图层, 在少数情况下å�¯èƒ½ä¸Žæ¸¸æˆ�内ä¸�一致, 默认为 true +InGameDisplay.AnimAdjust=true + +; BOOLEAN ; Show cloaked units as transparent. Default false +; BOOLEAN ; éš�å½¢å�•ä½�是å�¦å�Šé€�明显示, 默认为 false +InGameDisplay.Cloakable=false + +; BOOLEAN ; Display remapble colors of wall overlays by nearest building. Default false +; BOOLEAN ; æ ¹æ�®è·�离最近的建筑, 显示围墙覆盖物的所属色, 默认为 false +InGameDisplay.RemapableOverlay=false + +; BOOLEAN ; Display invisible bridge overlays in numbers. Default false +; BOOLEAN ; 以数字显示ä¸�å�¯è§�的桥æ¢�覆盖物 , 默认为 false +DisplayBridgeOverlay=false + +; BOOLEAN ; Display default images for vehicles, infantry, and aircraft without images, names are: FA2DEFAULT_AIRCRAFT, FA2DEFAULT_INFANTRY, FA2DEFAULT_UNIT. Default false +; BOOLEAN ; 为没有图åƒ�的车辆ã€�步兵与飞行器显示缺çœ�图åƒ�, å��称为: FA2DEFAULT_AIRCRAFT, FA2DEFAULT_INFANTRY, FA2DEFAULT_UNIT, 默认为 false +UseDefaultUnitImage=true + +; BOOLEAN ; Display default images for techno attachments without images. Default false +; BOOLEAN ; 为没有图åƒ�的附加å�•ä½�显示缺çœ�图åƒ�, 默认为 false +UseDefaultUnitImage.TechnoAttachment=false + +; FLOAT ; Voxel light vector as X,Y,Z corresponding to game. Positive numbers are illuminated from the direction of the axis(↖, ↗, ↓). Default 0.05,1,0.2 +; FLOAT ; VXL渲染的光æº�æ–¹å�‘, æ ¼å¼�为 X,Y,Z, 正数为从数轴方å�‘ç…§å°„(↖, ↗, ↓), 默认为 0.05,1,0.2 +LightingSource=0.05,1,0.2 + +; INTERGER ; Maximum value of overlay data. Default 60 +; INTERGER ; 覆盖物数æ�®çš„æœ€å¤§å€¼, 默认为 60 +OverlayDataLimit=256 + +; BOOLEAN ; Hide ExtraImage when Flat To Ground Mode enabled. Default false +; BOOLEAN ; å¼€å�¯å¹³é�¢æ˜¾ç¤ºæ—¶, 是å�¦éš�è—�地形的 ExtraImage, 默认为 false +FlatToGroundHideExtra=false + +; BOOLEAN ; Render objects outside of map bounds. Default false +; BOOLEAN ; 是å�¦æ˜¾ç¤ºåœ°å›¾è¾¹ç•Œå¤–的游æˆ�对象, 默认为 false +DisplayObjectsOutside=false + +; BOOLEAN ; Show options for technos (Phobos). Default false +; BOOLEAN ; 科技类型窗å�£åœ¨å¤šäººåœ°å›¾ä¸­æ˜¾ç¤º Phobos 支æŒ�çš„ 所属方, 默认为 false +PlayerAtXForTechnos=false + +; BOOLEAN ; Show options for triggers (Phobos). Default false +; BOOLEAN ; 触å�‘编辑器窗å�£åœ¨å¤šäººåœ°å›¾ä¸­æ˜¾ç¤º Phobos 支æŒ�çš„ 所属方, 默认为 false +PlayerAtXForTriggers=false + +; BOOLEAN ; Monitor map files for external edits. Default true +; BOOLEAN ; 检测地图文件是å�¦è¢«å¤–部修改. 默认为 true +FileWatcher=true + +; INTERGER ; Number of distance ruler history entries. Default 5 +; INTERGER ; è·�离标尺记录的历å�²æ•°é‡�, 默认为 5 +DistanceRuler.Records=5 + +; INTERGER ; Font size for money on map and property viewer. Default 18 +; INTERGER ; 资æº�总é‡�与属性查看字体的大å°�, 默认为 18 +DisplayTextSize=18 + +; INTERGER ; Tree view cameo size; default 32 (min 16, max 64) +; INTERGER ; 物å“�æµ�览器图标的大å°�, 默认为 32, 最å°� 16, 最大 64 +TreeViewCameo.Size=32 + +; BOOLEAN ; Whether or not draw celltag icons translucently. Default false +; BOOLEAN ; 是å�¦å�Šé€�明绘制å�•元标记图标. 默认为 false +DrawCelltagTranslucent=true + +; BOOLEAN ; Whether or not force Neutral and Special houses to use the light gray color in skirmish. Default true +; BOOLEAN ; 是å�¦åœ¨å¤šäººåœ°å›¾ä¸­, 强制 Neutral å’Œ Special 所属方使用浅ç�°è‰²é¢œè‰². 默认为 true +ForceNeutralSpecialColor=true + +; BOOLEAN ; Map house color variants to their corresponding solid colors. Default false +; BOOLEAN ; å°†å�•ä½�所属色å�˜ä½“映射为纯色. 默认为 false +UnifyHouseColors=false + +; COLORREF(R,G,B) ; Color in waypoint flag to be replaced in "Set waypoint color". Default 0,255,0. Range 0-255 +; COLORREF(R,G,B) ; 在“设置路径点颜色â€�中替æ�¢çš„路径点旗帜颜色, 默认为 0,255,0. å�–值范围为0-255 +DisplayColor.Waypoint=0,255,0 + +; COLORREF(R,G,B) ; Color in celltag icon to be replaced in "Set celltag color". Default 255,0,0. Range 0-255 +; COLORREF(R,G,B) ; 在“设置å�•元标记颜色â€�中替æ�¢çš„å�•元标记图标颜色, 默认为 255,0,0. å�–值范围为0-255 +DisplayColor.Celltag=255,0,0 + +; COLORREF(R,G,B) ; Distance ruler color. Default 255,0,0. Range 0-255 +; COLORREF(R,G,B) ; è·�离标尺线段的颜色, 默认为 255,0,0. å�–值范围为0-255 +DistanceRuler.Color=255,0,0 + +; COLORREF(R,G,B) ; Boundary color for terrain generator. Default 255,255,0. Range 0-255 +; COLORREF(R,G,B) ; 地形生æˆ�器设置范围的颜色, 默认为 255,255,0. å�–值范围为0-255 +TerrainGeneratorColor=255,255,0 + +; COLORREF(R,G,B) ; Player posistion indicator color for map renderer. Default 255,0,0. Range 0-255 +; COLORREF(R,G,B) ; 地图渲染器游æˆ�者ä½�置的颜色, 默认为 255,0,0. å�–值范围为0-255 +PlayerLocation.Color=255,0,0 + +; INTEGER ; Maximum distance displayed by range overlays; very large values reduce performance. Default 50 +; INTEGER ; 范围属性最大显示的è·�离, 过大的范围会导致显示å�¡é¡¿, 默认为50 +RangeBound.MaxRange=50 + +; COLORREF(R,G,B) ; Primary weapon range color. Default 0,255,255. Range 0-255 +; COLORREF(R,G,B) ; 主武器射程范围的颜色, 默认为 0,255,255. å�–值范围为0-255 +WeaponRangeBound.Color=0,255,255 + +; COLORREF(R,G,B) ; Primary minimum range color. Default 0,200,200. Range 0-255 +; COLORREF(R,G,B) ; 主武器最å°�射程范围的颜色, 默认为 0,200,200. å�–值范围为0-255 +WeaponRangeMinimumBound.Color=0,200,200 + +; COLORREF(R,G,B) ; Secondary weapon range color. Default 0,255,130. Range 0-255 +; COLORREF(R,G,B) ; 副武器射程范围的颜色, 默认为 0,255,130. å�–值范围为0-255 +SecondaryWeaponRangeBound.Color=0,255,130 + +; COLORREF(R,G,B) ; Secondary minimum range color. Default 0,200,100. Range 0-255 +; COLORREF(R,G,B) ; 副武器最å°�射程范围的颜色, 默认为 0,200,100. å�–值范围为0-255 +SecondaryWeaponRangeMinimumBound.Color=0,200,100 + +; COLORREF(R,G,B) ; Death weapon range color. Default 255,127,39. Range 0-255 +; COLORREF(R,G,B) ; 自æ�€æ­¦å™¨èŒƒå›´çš„颜色, 默认为 255,127,39. å�–值范围为0-255 +DeathWeaponRangeBound.Color=255,127,39 + +; COLORREF(R,G,B) ; Gap generator range color. Default 0,0,255. Range 0-255 +; COLORREF(R,G,B) ; 黑幕产生范围的颜色, 默认为 0,0,255. å�–值范围为0-255 +GapRangeBound.Color=0,0,255 + +; COLORREF(R,G,B) ; Sensor array range color. Default 255,0,255. Range 0-255 +; COLORREF(R,G,B) ; éš�形检测范围的颜色, 默认为 255,0,255. å�–值范围为0-255 +SensorsRangeBound.Color=255,0,255 + +; COLORREF(R,G,B) ; Cloak generator range color. Default 255,0,0. Range 0-255 +; COLORREF(R,G,B) ; éš�形范围的颜色, 默认为 255,0,0. å�–值范围为0-255 +CloakRangeBound.Color=255,0,0 + +; COLORREF(R,G,B) ; Psychic sensor range color. Default 255,255,0. Range 0-255 +; COLORREF(R,G,B) ; 心ç�µæ„Ÿåº”范围的颜色, 默认为 255,255,0. å�–值范围为0-255 +PsychicRangeBound.Color=255,255,0 + +; COLORREF(R,G,B) ; Guard area range color. Default 0,255,0. Range 0-255 +; COLORREF(R,G,B) ; 区域警戒范围的颜色, 默认为 0,255,0. å�–值范围为0-255 +GuardRangeBound.Color=0,255,0 + +; COLORREF(R,G,B) ; Sight range color. Default 128,128,128. Range 0-255 +; COLORREF(R,G,B) ; 视野范围的颜色, 默认为 128,128,128. å�–值范围为0-255 +SightRangeBound.Color=128,128,128 + +; COLORREF(R,G,B) ; Designator range color. Default 128,128,128. Range 0-255 +; COLORREF(R,G,B) ; 指示者范围的颜色, 默认为 34,177,76. å�–值范围为0-255 +DesignatorRangeBound.Color=34,177,76 + +; COLORREF(R,G,B) ; Inhibitor range color. Default 128,128,128. Range 0-255 +; COLORREF(R,G,B) ; 抑制者范围的颜色, 默认为 204,46,49. å�–值范围为0-255 +InhibitorRangeBound.Color=204,46,49 + +; BOOLEAN ; Apply elevation modifiers to weapon range preview; low accuracy. Default false +; BOOLEAN ; 计算武器射程时,是å�¦è€ƒè™‘高度对射程的影å“�, 精确度较低, ä»…ä¾›å�‚考, 默认为 false +WeaponRangeBound.SubjectToElevation=true + +; BOOLEAN ; Draw all ranges except for weapons subject to elevation using ellipses. Default true +; BOOLEAN ; 使用椭圆绘制除了å�—高度影å“�的武器外的所有范围, 默认为 false +RangeBound.DrawEllipse=true + +; BOOLEAN ; Show outlines by default when pasting. Default false +; BOOLEAN ; 粘贴地形时, 是å�¦é»˜è®¤æ˜¾ç¤ºæ��è¾¹, 默认为 false +PasteShowOutline=true + +; Mix overrides, yes = relative path to FA2 installed folder +; Can be used to override game content to show in FA2 +; First one has highest loading priority +;[ExtraMixes] + +; Encrypted packages, yes = relative path to FA2 installed folder +; Can be used to override game content to show in FA2 +; First one has highest loading priority +; How to use, please refer to documentation +;[ExtraPackages] +;data.rpck=false + +; Custom resource directories, read in registration order +; Value: yes/true = relative path to FA2 installed folder, no/false = relative path to game folder +; Can be used to override game content to show in FA2 +; First one has highest loading priority +; Priority: lower than Resources\HighPriority\, higher than the game path +;[ExtraDirectories] +;voxels=false + +; Stringtable overrides, yes = relative path to FA2 installed folder +; Can be used to override stringtables to show in FA2 +; Support .csf, .llf, .ecs, and .ini (exported by Ra2CsfToolsGUI) +;[ExtraStringtables] + +; Custom nested mix files, format: nested mix = parent mix +; Can be used to override game content to show in FA2 +; First one has highest loading priority +;[NestedMixes] + +; Ignored mix files, format: index = ignored mix +;[IgnoredMixes] + +;[Filenames] +;EVA=eva.ini +;EVAYR=evamd.ini +;Sound=sound.ini +;SoundYR=soundmd.ini +;Theme=theme.ini +;ThemeYR=thememd.ini +;AI=ai.ini +;AIYR=aimd.ini +;RulesYR=rulesmd.ini +;Rules=rules.ini +;ArtYR=artmd.ini +;Art=art.ini +;TemperateYR=temperatmd.ini +;Temperate=temperat.ini +;SnowYR=snowmd.ini +;Snow=snow.ini +;UrbanYR=urbanmd.ini +;Urban=urban.ini +;UrbanNYR=urbannmd.ini +;LunarYR=lunarmd.ini +;DesertYR=desertmd.ini +;MapselYR=mapselmd.ini +;MixExtension=md + +; Contains a list of theater names, only the +; existing 6 names are valid. If not listed +; then all default 6 theaters are used. +; The second item separated by commas +; represents the name saved in the map file +; under [Map] -> Theater=. +[Theaters] +0=TEMPERATE,TEMPERATE +1=SNOW,SNOW +2=URBAN,URBAN +3=NEWURBAN,NEWURBAN +4=LUNAR,LUNAR +5=DESERT,DESERT + +; Letter abbreviations for different theaters +; Only works in file loading +; First = file suffix (xxxx.~~~, iso~~~.pal), must be 3 letters +; Second = new theater letter (G~CNST) +[TheaterSuffixes] +TEMPERATE=TEM,T +SNOW=SNO,A +URBAN=URB,U +NEWURBAN=UBN,N +LUNAR=LUN,L +DESERT=DES,D + +; Order: Theater, SmoothTileSet, LATTileSet[, Skip LAT Tiles, ClearTileSet] +[LATGroups] +0=SNOW,TXSnowGrass,TXSnowGrassLAT,TXSnowGrassSkipLAT +1=SNOW,TXSnowPave,TXSnowPaveLAT,TXSnowPaveSkipLAT +2=TEMPERATE,TXTemperatePave,TXTemperatePaveLAT,TXTemperatePaveSkipLAT +;newurban is disabled by default, for the vanilla pave (114) has no LAT. +;3=NEWURBAN,TXNewUrbanPave,TXNewUrbanPaveLAT,TXNewUrbanPaveSkipLAT +4=DESERT,TXDesertPave,TXDesertPaveLAT,TXDesertPaveSkipLAT +; TX remove 33 from lat system +5=LUNAR,TXLunarSand,TXTXLunarSandLAT + +; FA2 will first read this, and then [General] +; in theater INI (not include Skip LAT Tiles). +[LATSettings] +TXSnowGrass=127 +TXSnowGrassLAT=131 +TXSnowPave=97 +TXSnowPaveLAT=130 +TXTemperatePave=93 +TXTemperatePaveLAT=94 +TXNewUrbanPave=114 +TXNewUrbanPaveLAT=178 +TXDesertPave=107 +TXDesertPaveLAT=108 +TXLunarSand=33 +TXTXLunarSandLAT=34 +TXSnowGrassSkipLAT=20,44,69,71,103,104,105,128,129,132,133,134,135,142,143,147,148,149,150,162,169,171,172 +TXSnowPaveSkipLAT=20,44,69,71,87,88,98,102,103,104,105,110,111,113,116,117,120,121,124,128,129,132,133,134,135,136,142,143,147,148,149,150,162,169,171,172 +TXTemperatePaveSkipLAT=20,38,40,47,82,83,97,98,102 +TXNewUrbanPaveSkipLAT=10,15,16,17,18,19,20,23,25,35,38,40,47,76,78,80,83,85,87,102,104,106,107,117,120,121,133,137,138,140,146,148,152,155,156,171,172,174,181,190,191,192,195,203,123,124,130,131,132,134,139,144,145,170 +TXDesertPaveSkipLAT=20,38,40,47,97,98,111,112,118 + +; custom brush sizes +; format: X length + x + Y length +; it is not recommended to change first and second value +[BrushSizes] +0=1x1 +1=2x2 +2=3x3 +3=4x4 +4=5x5 +5=7x7 +6=10x10 +7=1x2 +8=2x1 +9=1x3 +10=3x1 +11=1x5 +12=5x1 +13=1x10 +14=10x1 + +; All tilesets in Morphables should have Morphable=true. +; If you want to specify a certain tile in the tileset, +; use # as a delimiter, e.g. Morphables=114#0,114#1 +; if there's no #, all tiles in the tileset will count +; You don't need to write existing RampBase here, +; only new ramps need to be added here. The Ramps +; and Morphables should have the same length of +; tilesets, and those tilesets should be one-to-one +; correspondence. +; AddTiles = some tilesets added to the Object Browser +; -> Ground, not necessarily be morphable. +; BigWaterIndices = tile indices of big (2x2) water +; default: first 6 tiles of [General]->WaterSet +; SmallWaterIndices = tile indices of small (1x1) water +; default: No. 9~13 tiles of [General]->WaterSet +; IgnoredTilesets = Tilesets not adding to the Object +; Browser -> Ground. Should be keys in [General] of +; theater INIs, e.g. WaterSet +[NewUrbanInfo] +Morphables=114,123 +Ramps=117,193 +Cliffs2=110 +CliffsWater2=112 +AddTiles=46,124,157 +IgnoredTilesets=PaveTile + +[TemperateInfo] +AddTiles=93 + +[SnowInfo] +Morphables=97 +Ramps=98 +Cliffs2=75 +CliffsWater2=79 +AddTiles=127,135 + +[UrbanInfo] +Morphables=13 +Ramps=140 + +[DesertInfo] +AddTiles=107 + +[LunarInfo] +AddTiles=33,91 +IgnoredTilesets=WaterSet + +;[OverlayDisplayLimit] +;243=48 ; This means FA2 won't display overlay 243's frames after 48 + +; BuildingTypes to be ignored during overlap detection. For Immune or InvisibleInGame cases. + +[StructureOverlappingCheckIgnores] +0=TSTLAMP +1=GALITE +2=NEGLAMP +3=INGALITE +4=REDLAMP +5=NEGRED +6=GRENLAMP +7=BLUELAMP +8=YELWLAMP +9=INYELWLAMP +10=PURPLAMP +11=INPURPLAMP +12=INORANLAMP +13=INGRNLMP +14=INREDLMP +15=INBLULMP +16=TEMMORLAMP +17=TEMDAYLAMP +18=TEMDUSLAMP +19=TEMNITLAMP +20=SNOMORLAMP +21=SNODAYLAMP +22=SNODUSLAMP +23=SNONITLAMP + +[Chinese-TileManagerDataTEM] +普通地形/LAT=lat +悬崖=cliff +æ°´é�¢=water +水岸=shore +æ–œå�¡=ramp|slope +城市地形=pave +公路/å°�è·¯/人行é�“=road|highway +地表装饰=feature|farm +æ¡¥=bridge +é“�è·¯=rail|train +éš§é�“=tunnel|tube +瀑布=waterfall +交界处/地形修å¤�=fix + +[Chinese-TileManagerDataSNO] +普通地形/LAT=lat +悬崖=cliff +æ°´é�¢=water +水岸=shore +æ–œå�¡=ramp|slope +城市地形=pave +公路/å°�è·¯/人行é�“=road|highway +地表装饰=feature|farm +æ¡¥=bridge +é“�è·¯=rail|train +éš§é�“=tunnel|tube +瀑布=waterfall +交界处/地形修å¤�=fix + +[Chinese-TileManagerDataURB] +普通地形/LAT=lat +悬崖=cliff +æ°´é�¢=water +水岸=shore +æ–œå�¡=ramp|slope +城市地形=pave +公路/å°�è·¯/人行é�“=road|highway +地表装饰=feature|farm +æ¡¥=bridge +é“�è·¯=rail|train +éš§é�“=tunnel|tube +瀑布=waterfall +交界处/地形修å¤�=fix + +[Chinese-TileManagerDataUBN] +普通地形/LAT=lat +悬崖=cliff +æ°´é�¢=water +水岸=shore +æ–œå�¡=ramp|slope +城市地形=pave +公路/å°�è·¯/人行é�“=road|highway +地表装饰=feature|farm +æ¡¥=bridge +é“�è·¯=rail|train +éš§é�“=tunnel|tube +瀑布=waterfall +交界处/地形修å¤�=fix + +[Chinese-TileManagerDataDES] +普通地形/LAT=lat +悬崖=cliff +æ°´é�¢=water +水岸=shore +æ–œå�¡=ramp|slope +城市地形=pave +公路/å°�è·¯/人行é�“=road|highway +地表装饰=feature|farm +æ¡¥=bridge +é“�è·¯=rail|train +éš§é�“=tunnel|tube +瀑布=waterfall +交界处/地形修å¤�=fix + +[Chinese-TileManagerDataLUN] +普通地形/LAT=lat +悬崖=cliff +æ°´é�¢=water +水岸=shore +æ–œå�¡=ramp|slope +城市地形=pave +公路/å°�è·¯/人行é�“=road|highway +地表装饰=feature|farm +æ¡¥=bridge +é“�è·¯=rail|train +éš§é�“=tunnel|tube +瀑布=waterfall +交界处/地形修å¤�=fix + +[English-TileManagerDataTEM] +Cliff=cliff +Water=water +Ramp=ramp|slope +Bridge=bridge +Road=road|highway +Feature=feature|farm +Railway=rail|train +Tunnel=tunnel|tube +Ramp=ramp|slope +Shore=shore +Pavement=pave +Fix=fix +LAT=lat + +[English-TileManagerDataSNO] +Cliff=cliff +Water=water +Ramp=ramp|slope +Bridge=bridge +Road=road|highway +Feature=feature|farm +Railway=rail|train +Tunnel=tunnel|tube +Ramp=ramp|slope +Shore=shore +Pavement=pave +Fix=fix +LAT=lat + +[English-TileManagerDataURB] +Cliff=cliff +Water=water +Ramp=ramp|slope +Bridge=bridge +Road=road|highway +Feature=feature|farm +Railway=rail|train +Tunnel=tunnel|tube +Ramp=ramp|slope +Shore=shore +Pavement=pave +Fix=fix +LAT=lat + +[English-TileManagerDataUBN] +Cliff=cliff +Water=water +Ramp=ramp|slope +Bridge=bridge +Road=road|highway +Feature=feature|farm +Railway=rail|train +Tunnel=tunnel|tube +Ramp=ramp|slope +Shore=shore +Pavement=pave +Fix=fix +LAT=lat + +[English-TileManagerDataDES] +Cliff=cliff +Water=water +Ramp=ramp|slope +Bridge=bridge +Road=road|highway +Feature=feature|farm +Railway=rail|train +Tunnel=tunnel|tube +Ramp=ramp|slope +Shore=shore +Pavement=pave +Fix=fix +LAT=lat + +[English-TileManagerDataLUN] +Cliff=cliff +Water=water +Ramp=ramp|slope +Bridge=bridge +Road=road|highway +Feature=feature|farm +Railway=rail|train +Tunnel=tunnel|tube +Ramp=ramp|slope +Shore=shore +Pavement=pave +Fix=fix +LAT=lat + +; override the same section in rules +;[Colors] +;Gold=43,239,255 + +; Comment these sections for FA2sp DLL drawing +; voxel turret locations +;[BuildingVoxelTurretsRA2] +;GTGCANX=00 +;GTGCANY=44;-6 +;NASAMY=-3;2 +;NALASRX=0 +;NALASRY=10;-3 +;NAFLAKY=6;10 ; flak needs additional correction below for every direction +;NAFLAKX=-5; +;NAFLAKX0=5 +;NAFLAKX2=-4; +;NAFLAKY2=5 +;NAFLAKX3=-5; +;NAFLAKY3=10 +;NAFLAKX4=5 +;NAFLAKY4=14 +;NAFLAKX5=10 +;NAFLAKY5=8 +;NAFLAKX6=15 +;NAFLAKY6=5 +;NAFLAKX7=12 +;NAFLAKY7=1 +;CAOUTPX=-30 +;CAOUTPY=12 +;YAREFNX=-30 +;YAREFNY=30 +;YAGGUNY=7 +;YAGGUNX=-5 +;YAGGUNX7=5; gattling gun needs some correction +;YAGGUNY7=-3 +;YAGGUNX6=11 +;YAGGUNY6=3 +;YAGGUNX5=10 +;YAGGUNY5=3 +;YAGGUNX4=3 +;YAGGUNY4=2 +;YAGGUNX0=5 + +; voxel barrel locations +;[BuildingVoxelBarrelsRA2] +;GTGCANX0=0 +;GTGCANY0=30;-6 +;GTGCANX1=-18 +;GTGCANY1=35;-6 +;GTGCANX2=-28 +;GTGCANY2=50;-6 +;GTGCANX3=-27 +;GTGCANY3=67;-6 +;GTGCANX4=00 +;GTGCANY4=73;-6 +;GTGCANX5=23 +;GTGCANY5=60;-6 +;GTGCANX6=30 +;GTGCANY6=48;-6 +;GTGCANX7=20 +;GTGCANY7=35;-6 + ; not NOSURFACES: ;[BuildingVoxelTurretsRA2] @@ -103,75 +1276,57 @@ Counts=3 ;NALASRY=0;-3 ;NAFLAKY=10;10 -[VehicleVoxelTurretsRA2Disabled] +;[BuildingVoxelTurrets] + +;[VehicleVoxelTurretsRA2] ;DISKX=-10 ;DISKY=-10 ;YTNKY=-30 -SREFX=4 -SREFY=3 +;SREFX=4 +;SREFY=3 -[IgnoreArtImage] -BFRT=1 -CAML=1 +;[VehicleVoxelTurrets] -[IgnoreSuperAnim1] +;obsolete +;[IgnoreArtImage] +;BFRT=1 +;CAML=1 +;[IgnoreActiveAnim2] + +[IgnoreSuperAnim1] +YAGNTC=1 +YAPPET=1 [IgnoreSuperAnim2] NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 GACSPH=1 YAGNTC=1 YAPPET=1 [IgnoreSuperAnim3] NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 GACSPH=1 -YAGNTC=1 -YAPPET=1 [IgnoreSuperAnim4] NAMISL=1 -NAMISL2=1 -NAMISL3=1 -NAIRON=1 GACSPH=1 YAGNTC=1 YAPPET=1 -; fix for building list: -[GTGCAN] -AIBasePlanningSide=0 - -[YACOMD] -AIBasePlanningSide=2 - -[YADEPT] -AIBasePlanningSide=0 - -[NASPYB] -AIBasePlanningSide=2 - -; rename list for objects. ObjectID=StringID -[Rename] - [MovieList] Start=66; Anything below will not be listed! [StdBrushSize] -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 -WaterSet=2 - -[MinBrushSizeInWater] ; if completely surrounded by water ; currently ignored +;ClearTile=2 +;RoughTile=2 +;SandTile=2 +;GreenTile=2 +;PaveTile=2 +;WaterSet=2 + +; if completely surrounded by water ; currently ignored +[MinBrushSizeInWater] ClearTile=2 RoughTile=2 SandTile=2 @@ -200,41 +1355,45 @@ TreeMin=999 [URBANLimits] TreeMax=999 -;TreeMax=27 [TEMPERATELimits] TreeMax=999 -;TreeMax=27 [SNOWLimits] TreeMax=999 -;TreeMax=27 [NEWURBANLimits] TreeMax=999 -;TreeMax=27 [DESERTLimits] -TreeMin=30 TreeMax=999 ; tileset ini overwritings ; only used by FinalAlert [IgnoreSetTEMPERATE] -0=77 -1=78 -2=79 +;0=53 +;1=54 +;2=56 +3=77 +4=78 +5=79 [IgnoreSetSNOW] -0=8 -1=46 +0=6 +1=66 +2=8 +3=46 +4=70 [IgnoreSetURBAN] -0=49 -1=50 -2=51 +;0=49 +;1=50 +;2=51 +;3=53 +;4=54 5=56 -7=30 +;6=73 +;7=30 8=91 9=92 10=93 @@ -245,22 +1404,24 @@ TreeMax=999 15=98 16=99 17=100 -;3=53; Tunnel -;4=54; Tunnel Side -;6=73; Dirt Tunnel [IgnoreSetNEWURBAN] -0=101 +;0=101 +1=207 [IgnoreSetDESERT] -0=19 -1=54 -2=53 -3=56 -4=73 -5=80 +;0=19 +;1=54 +;2=53 +;3=56 +;4=73 +;5=80 +6=121 +7=122 [IgnoreSetLUNAR] +0=34 +1=90 [UseSetTEMPERATE] 0=57 @@ -268,11 +1429,6 @@ TreeMax=999 [UseSetSNOW] [UseSetURBAN] -[NewUrbanInfo] -Morphable2=114 -Ramps2=117 -Cliffs2=110 -CliffsWater2=112 ; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! ; If a ground tile id exceeds this number, FA2 will assume the map is a YR map @@ -450,237 +1606,60 @@ CMISL=1 [YROverlay] Begin=243; which number is the first from new YR overlay? -; things only FinalAlert will ignore -; these are usually all dummies and leftovers from TS -[IgnoreRA2] -0=GAARMORY -1=APACHE -2=DeathDummy -3=WEEDGUY -4=GADUMY -5=NAWAST -6=GARADR -7=CAIRSFGL -8=CALIT01E -9=CALIT01N -10=CALIT01S -11=CALIT01W -12=CALIT03E -13=CALIT03N -14=CALIT03S -15=CALIT03W -16=CALIT02L -17=CALIT02R -18=NAHPAD -19=CAEURO01 -20=CACITY01 -21=CACITY02 -22=CACITY03 -23=CACITY04 -24=CITY06 -25=CITY05 -26=CITY04 -27=CITY03 -28=CITY02 -29=CITY01 -30=CAARMR -31=TREE29 -32=TREE30 -33=CANEWY05 -34=REDLAMP -35=GRENLAMP -36=BLUELAMP -37=YELWLAMP -38=PURPLAMP -39=INORANLAMP -;40=NEGLAMP ; NEGLAMP added again, invisible in game -41=NEGRED -42=TSTLAMP -43=CAPOL01E -44=CAPOL01N -45=CAPOL01S -46=CAPOL01W -47=CASIN01E -48=CASIN01N -49=CASIN01W -50=CASIN01S -51=GAGREEN -52=GALITE -53=CARGOPLANE -; 54=CAHOSP -55=XCOMET -56=CAKRMW -57=CAFNCB -58=CAFNCW -59=CAFNCP -60=CR1 -61=CR2 -62=CR3 -63=CR4 -64=CR5 -65=CR6 -66=BURN01 -67=BURN02 -68=BURN03 -69=BURN04 -70=BURN05 -71=BURN06 -72=BURN07 -73=BURN08 -74=BURN09 -75=BURN10 -76=BURN11 -77=BURN12 -78=BURN13 -79=BURN14 -80=BURN15 -Another one :) =BURN16 -82=CASYDN01 -83=CATIME -84=CALOND02;? -;85=CAMORR01 -;86=CAMORR02 -;87=CAMORR03 -;88=CAEGYP06 -;89=CAMORR04 -;90=CAEGYP04 -;91=CAEGYP05 -;92=CALA06 - -97=DNOB;? -98=GAWRONG -99=CALA02;? -100=CAMOON01 -;101=CAEGYP01 -102=UTNK -103=YDUM -104=WWLF -105=YADOG -106=YDOG -107=SMON -108=CMON -109=YADEPT -110=CALOND06;? -;111=TREE32 - -; Yes means Image= in art ini will be ignored -[IgnoreArtImage] -CAML=yes +; custom autoshore logic +; theater, name, shore tile set, sand tile set +; theater = theater name +; name = displayed name (search translation in FALanguage.ini) +; shore tile set = used as shore, need to have the same order as vanilla shore +; can type tile set name in theater ini, like "ShorePieces" +; sand tile set = used as sand, should have only one 1x1 tile +; can type tile set name in theater ini, like "GreenTile" +; -1 = do not generate sand tile +[AutoShoreTypes] +0=TEMPERATE,Sand Shorelines,ShorePieces,GreenTile +1=SNOW,Ice Shorelines,ShorePieces,GreenTile +2=URBAN,Grass Shorelines,ShorePieces,GreenTile +3=NEWURBAN,Sand Shorelines,ShorePieces,GreenTile +4=NEWURBAN,*Grass Dark Shorelines*,129,124 +5=DESERT,Sand Shorelines,ShorePieces,GreenTile ; hacks for shore pieces ; shore id_pos=iswater ; pos: count from left top to right, then next "row" - ; RA2 only needs one fix (for URBAN specifically) [ShoreTerrainRA2] 12_4=1 12_5=1 -; But TS needs all :( -[ShoreTerrainTS] -0_0=0 -0_1=0 -0_2=1 -0_3=1 -1_0=0 -1_1=0 -2_0=0 -2_1=0 -3_0=0 -4_0=0 -4_1=0 -4_3=0 -5_0=0 -5_1=0 -5_2=0 -6_0=0 -7_0=0 -8_0=0 -8_2=0 -9_0=0 -9_2=0 -10_0=0 -10_2=0 -11_0=0 -12_0=0 -12_1=0 -12_3=0 -13_0=0 -13_3=0 -13_4=0 -14_2=0 -15_2=0 -16_2=0 -16_3=0 -17_2=0 -17_3=0 -18_2=0 -18_3=0 -19_1=0 -20_3=0 -20_4=0 -20_5=0 -21_2=0 -21_4=0 -21_5=0 -22_3=0 -23_3=0 -24_1=0 -24_3=0 -25_1=0 -25_3=0 -26_1=0 -26_3=0 -27_1=0 -28_1=0 -28_2=0 -28_5=0 -29_2=0 -29_4=0 -29_5=0 -30_1=0 -31_1=0 -32_0=0 -32_1=0 -32_2=0 -33_0=0 -33_1=0 -33_2=0 -34_0=0 -34_2=0 -34_3=0 -35_0=0 -35_2=0 -35_3=0 -36_1=0 -36_2=0 -36_3=0 -37_1=0 -37_2=0 -37_3=0 -38_0=0 -38_1=0 -38_3=0 -39_0=0 -39_1=0 -39_3=0 - ; tilesets that may be modified using the shore or a similar logic +; 1 = affected, 0 = not affected +; in theater specific sections, format: tileIndex = 1/0 +; [SoftTileSetsTEM] [SoftTileSets] ClearTile=1 RoughTile=1 ClearToRoughLat=1 -SandTile =1 +SandTile=1 ClearToSandLat=1 GreenTile=1 ClearToGreenLat=1 PaveTile=1 -MiscPaveTile =1 +MiscPaveTile=1 ClearToPaveLat=1 RoughGround=0; no WaterSet=1 ShorePieces=1 +[SoftTileSetsTEM] +81=0 + +; tilesets that will redraw extra image +; [RedrawExtraTileSetsTEM] + +; Normally, tile extra images are included when computing redraw relations. +; Tilesets specified in this ini section will disregard their extra images. +; [NoExtraHeightRedrawTileSetsTEM] + ; corner strings are: cornerleft, cornerright, cornerbottom, cornertop [CliffBackData] @@ -927,521 +1906,6 @@ vertic_1=17 ;2x1, not 2x2, unused at moment vertic_cornerleft_c=1 vertic_cornerleft_0=21 -; EVENTS AND ACTIONS -; param type format: Description,ListType -; ListTypes (all those not implemented yet but stubbed when this ini was written are marked with *): -; 0-Nothing -; 1-Houses -; 2-Teamtypes -; 3-UnitTypes -; 4-InfantryTypes -; 5-AircraftTypes -; 6-BuildingTypes -; 7-Videos -; 8-tutorial texts -; 9-Triggers -; 10-yes/no -; 11=sounds -; 12=themes -; 13=speeches -; 14=special weapons -; 15=animations -; 16=particles -; 17=waypoints -; 18=crate types * -; 19=speech bubble types * -; 20=Global variables <--- wrong, local variables! -; 21=.CSF strings (RA2 only) * -; 22=Tag * -; 23=Meteors * -; 24=Weapons * -; 25=Light behavior * -; 26=Shower * -; 27=Rules Global variables -; 28=Building INI names -; 29=Techtypes - - -; ParamTypes -; Name, ListType, [Code] -[ParamTypes] --1=δʹÓÃ,0,1;not listed in FA2 -0=δʹÓÃ,0 -1=δ֪,0 -2=ËùÊô·½,1 -3=¾Ö²¿±äÁ¿,20 -4=ʱ¼ä,0 -5=»ý·Ö,0 -6=ÊýÖµ,0 -7=С¶ÓÀàÐÍ,2 -8=½¨Öþ,6 -9=·ÉÐÐÆ÷,5 -10=²½±ø,4 -11=µ¥Î»,3 -12=µçÓ°,7 -13=Îı¾,8 -14=´¥·¢,9 -15=ÔÊÐí,10 -16=ÉùÒô,11 -17=ÀÖÇú,12 -18=ÓïÒô,13 -19=²½Öè,0 -20=³¬¼¶ÎäÆ÷,14 -21=×ó,0 -22=ÉÏ,0 -23=¿í,0 -24=¸ß,0 -25=¶¯»­,15 -26=Á£×Ó,16 -27=³ÖÐøÊ±¼ä,0 -28=ËÙ¶È,0 -29=VoxelË鯬IDºÅ,29 -30=·¾¶µã,17 -31=ľÏäÀàÐÍ,PT_CrateTypes -32=ÓïÒôÌáʾ¿ò,19 -33=×Ö·û,21 -34=ÐÐΪ,9 -35=È«¾Ö±äÁ¿,27 -36=ÌØ¶¨ÎäÆ÷,14 -37=ÒѼ¤»î,10 -38=´¥·¢±êÇ©,22 -39=¿Æ¼¼ÀàÐÍ,0 -40=À´Ô´,0 -41=ÎäÆ÷,24 -42=·¢¹âÐÐΪ,25 -43=ʼþ,9 -44=ÕóÓê,26 -45=¸¡µãÖµ,0 -46=¿Æ¼¼ÀàÐÍ,29,2 -47=½¨Öþ,28 -48=ÊýÁ¿,0 -49=ÏñËØ¶¯»­,23 -50=ӰƬ,7 -51=À×´ïʼþ,PT_RadarEventTypes - -; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C -; Origianl definitinos are as follows: -; "Money" -; "Unit" -; "HealBase" -; "Cloak" -; "Explosion" -; "Napalm" -; "Squad" -; "Darkness" -; "Reveal" -; "Armor" -; "Speed" -; "Firepower" -; "ICBM" -; "Invulnerability" -; "Veteran" -; "IonStorm" -; "Gas" -; "Tiberium" -; "Pod" -[PT_CrateTypes] -FixedValueCount=19 -0=0 - Ç®Ïä -1=1 - Ëæ»úÔØ¾ßµ¥Î» -2=2 - È«ÌåÒ½ÁÆ/ÐÞ¸´ -3=3 - ÓÀ¾ÃÒþÐÎ -4=4 - C4µ¯Í·É˺¦ -5=5 - »ðÑæ±¬Õ¨É˺¦ -6=6 - Ëæ»ú²½±øÐ¡¶Ó -7=7 - ȫͼºÚÄ» -8=8 - ÏÔʾȫµØÍ¼ -9=9 - »¤¼×Ç¿»¯ -10=10 - ËÙ¶ÈÌáÉý -11=11 - »ðÁ¦ÌáÉý -12=12 - ºËµ¯³¬Îäµ¥´Î -13=13 - ÌúÄ»Î޵У¨¹¦ÄܲÐȱ£© -14=14 - ¾­ÑéÉýÐÇ -15=15 - Àë×ӷ籩£¨ÎÞЧ£© -16=16 - ¶¾ÆøÁ£×Ó -17=17 - СƬ¿óʯ -18=18 - ¿Õ½µ²Ö£¨ÎÞЧ£© - -; Controls for radar events -; The events, in order, are: -; (1) Generic Combat Event, -; (2) Generic Noncombat Event, -; (3) Dropzone Event, -; (4) Base Under Attack Event, -; (5) Harvester Under Attack Event, -; (6) Enemy Object Sensed Event -[PT_RadarEventTypes] -FixedValueCount=6 -0=0 - £¨ºì£©Í¨ÓÃÕ½¶·Ê¼þ -1=1 - £¨»Æ£©Í¨Ó÷ÇÕ½¶·Ê¼þ -2=2 - £¨»Æ£©¿Õ½µÇøÊ¼þ -3=3 - £¨ºì£©»ùµØÔâÊܹ¥»÷ -4=4 - £¨ºì£©¿ó³µÔâÊܹ¥»÷ -5=5 - £¨À¶£©Ì½²âµ½µÐ·½µ¥Î» - -[ScriptParams] -0=ռλ,0 -1=Ä¿±ê,1 -2=·¾¶µã,2 -3=Ìø×ªÖÁÐÐ#,3 -4=·ÖÀëС¶Ó,4 -5=È«¾Ö±äÁ¿,5 -6=½Å±¾,6 -7=С¶Ó,7 -8=ËùÊô·½,8 -9=ÓïÒô,9 -10=ÒôЧ,10 -11=ӰƬ,11 -12=ÒôÀÖ,12 -13=¹ú¼Ò,13 -14=¾Ö²¿±äÁ¿,14 -15=³¯Ïò,15 -16=½¨Öþ,16 -17=¶¯»­,17 -18=¶Ô»°ÆøÅÝ,18 -19=½øÈë״̬,19 -20=ÕûÊý,0 -21=²¼¶û,20 -22=Ä¿±êÁбí,SP_TargetList - -[SP_TargetList] -ParseFromSection=TeamTargetTechnoTypes -ExtraValueType=0 - -[ScriptExtras] -0=SE_TargetScanStrategy - -[SE_TargetScanStrategy] -0=0 - ×îСÍþв -1=1 - ×î´óÍþв -2=2 - ×î½ü¾àÀë -3=3 - ×îÔ¶¾àÀë - -;Index=Name,ParamType,Obsolete,YROnly,Description -[ScriptsRA2] -0=0 - ¹¥»÷,1,0,1,¹¥»÷ijÀàÄ¿±ê¡£ -1=1 - ¹¥»÷·¾¶µã,2,0,1,¹¥»÷Ö¸¶¨Â·¾¶µã£¨ÉϵÄÎïÌ壩¡£ -2=2 - ±©×ߣ¨ÎÞЧ£©,0,1,0,С¶ÓµÄ°ë»úеÈ˳ÉÔ±»á±©×ߣ¨ÎÞЧ½Å±¾£©¡£ -3=3 - ÒÆ¶¯µ½Â·¾¶µã,2,0,1,ÒÆ¶¯µ½Ö¸¶¨Â·¾¶µã¡£ -4=4 - ÒÆ¶¯µ½×ø±ê,20,0,1,ÒÆ¶¯µ½×ø±êµã (int x+y*128)¡£ -5=5 - ¾¯½ä£¨Ê±¼ä¼ÆÊý£©,20,0,1,ÇøÓò¾¯½ä X Ãë¡££¨Ìî5Óë¼ÆÊ±Æ÷Á÷ÊÅ5Ãëʱ¼äÏàͬ£© -6=6 - ½Å±¾×ªµ½ÐкŠ#,3,0,1,Ìø×ªµ½½Å±¾µÄµÚ#ÐУ¬ÓÃÀ´Ñ­»·¡£ -7=7 - Íæ¼ÒʤÀû,0,0,0,Ê¹Íæ¼ÒʤÀû¡£ -8=8 - Ð¶ÔØ,4,0,1,ËùÓÐÓÐÔØÔ±µÄÔËÔØµ¥Î»Ð¶¿Í¡£ÃüÁî²ÎÊý¿ÉÒÔ·Ö±ðÖ¸¶¨Á½¸ö²¿·ÖÊÇ·ñÒÀÈ»ÊÇС¶Ó³ÉÔ±»òÕßÒªÀ뿪С¶Ó¡£ -9=9 - ²¿Êð,0,0,0,ËùÓпɲ¿Êðµ¥Î»½øÐв¿Êð¡£ -10=10 - ¸úËæÓѾüµ¥Î»,0,0,0,ÁîС¶Ó¸úËæ×î½üµÄÓѾüµ¥Î»¡£ -11=11 - ½øÈë...״̬,19,0,1,С¶ÓËùÓгÉÔ±Ö´ÐÐÖ¸¶¨ÈÎÎñ¡£ -12=12 - ÉèÖÃÈ«¾Ö±äÁ¿,5,0,1,ÉèÖÃÒ»¸öÈ«¾Ö±äÁ¿¡£ -13=13 - ½øÈë¿ÕÏж¯»­,0,0,0,ÈÃС¶ÓÖеIJ½±øµ¥Î»ÏÐÖ㨲¥·ÅÏÐÖö¯»­£© -14=14 - ×°ÔØÈëÔËÊäÔØ¾ß,0,0,0,ÈÃËùÓе¥Î»½øÈëÔËÊäÔØ¾ß£¨Èç¹û¿ÉÄܵϰ£© -15=15 - ¼äµý½øÈë·¾¶µãµÄ½¨ÖþÎï,0,1,0,£¨·ÏÆú½Å±¾£© -16=16 - ѲÂßÖÁ·¾¶µã,2,0,1,С¶Ó³ÉÔ±ÒÆ¶¯¹¥»÷µ½Ö¸¶¨Â·¾¶µã¡£ -17=17 - ¸ü¸ÄÓ¦Óýű¾,6,0,1,ÈÃС¶ÓʹÓÃеĽű¾£¨²ÎÊýΪ¶¯×÷½Å±¾ID£© -18=18 - ¸ü¸ÄС¶Ó,7,0,1,ÈÃС¶Ó¸ü¸ÄС¶ÓÀàÐÍ£¨²ÎÊýΪ×÷սС¶ÓID£© -19=19 - ¾ª»Å,0,0,0,ÈÃС¶ÓËùÓе¥Î»¾ª»Å¡£ -20=20 - ¸ü¸ÄËùÊô·½,13,0,1,С¶Ó³ÉԱȫ²¿¸ü¸ÄΪËùÊô·½£¨²ÎÊýΪËùÊô·½±àºÅ£© -21=21 - ·ÖÉ¢,0,0,0,ÈÃËùÓе¥Î»·ÖÉ¢¡£ -22=22 - ½øÈëÖÜΧµÄºÚÄ»,0,0,0,ÈÃËùÓе¥Î»ÌÓµ½ÓкÚÄ»µÄµØ·½¡£ -23=23 - Íæ¼Òʧ°Ü,0,0,0,Ê¹Íæ¼Òʧ°Ü¡£ -24=24 - ²¥·ÅÓïÒô,9,0,1,²¥·ÅÌØ¶¨µÄÓïÒôÎļþ¡£ -25=25 - ²¥·ÅÒôЧ,10,0,1,²¥·ÅÌØ¶¨µÄÒôЧÎļþ¡£ -26=26 - ²¥·ÅµçÓ°,11,0,1,²¥·ÅÌØ¶¨µÄµçÓ°Îļþ¡£ -27=27 - ²¥·ÅÒôÀÖ,12,0,1,²¥·ÅÌØ¶¨µÄÒôÀÖÎļþ¡£ -28=28 - ¼õÉÙ¿óʯ,0,0,0,¼õÉÙС¶Ó³ÉÔ±ÖÜΧµÄ¿óʯÊýÁ¿¡£ -29=29 - ¿ªÊ¼Éú²ú,0,0,0,ÈÃËùÊô·½¿ªÊ¼Éú²ú¡£ -30=30 - ±äÂôÎÚÀ­,0,0,0,ÈÃAIËùÊô·½±äÂôËùÓн¨Öþ²¢½øÐÐ×îºó×ܹ¥¡£ -31=31 - С¶Ó×Ô»Ù,0,0,0,ÈøÃС¶ÓËùÓгÉÔ±×Ô»Ù¡£ -32=32 - ÉÁµç·ç±©¿ªÊ¼£¨ÑÓʱ£©,20,0,1,¾­¹ýÖ¸¶¨µÄʱ¼äºó¿ªÊ¼ÉÁµç·ç±©¡£ -33=33 - ÉÁµç·ç±©½áÊø,0,0,0,ʹÉÁµç·ç±©½áÊø¡£ -34=34 - ¾µÍ·¾Û½¹Ð¡¶Ó,20,0,1,¾µÍ·¾Û½¹Ð¡¶Ó£¨²ÎÊýΪËÙ¶È£© -35=35 - ÖØÖõØÍ¼ºÚÄ»,0,0,0,ÖØÖõØÍ¼ºÚÄ»¡£ -36=36 - ÏÔʾȫµØÍ¼,0,0,0,ÏÔʾȫµØÍ¼¡£ -37=37 - ɾ³ýС¶Ó³ÉÔ±,0,0,0,ɾ³ý¸ÃС¶ÓËùÓгÉÔ±¡£ -38=38 - Çå³ýÈ«¾Ö±äÁ¿,5,0,1,Çå³ýÖ¸¶¨È«¾Ö±äÁ¿¡£ -39=39 - ÉèÖþֲ¿±äÁ¿,14,0,1,ÉèÖÃÖ¸¶¨¾Ö²¿±äÁ¿¡£ -40=40 - Çå³ý¾Ö²¿±äÁ¿,14,0,1,Çå³ýÖ¸¶¨¾Ö²¿±äÁ¿¡£ -41=41 - Õò¶¨,0,0,0,ʹËùÓÐС¶Ó³ÉԱֹͣ¾ª»Å¡£ -42=42 - Ç¿ÖÆÃæÏò,15,0,1,Ç¿ÖÆÐ¡¶Ó³ÉÔ±ÃæÏòÒ»¸öÌØ¶¨µÄ·½Ïò¡£ -43=43 - µÈ´ýµ½ÂúÔØ,0,0,0,µÈµ½ËùÓÐÔËÊäÆ÷ÂúÔØ¡£ -44=44 - ¿¨³µÐ¶ÔØ,0,0,0,ÈÃËùÓп¨³µÐ¶ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎªÎ´×°ÔØµ¥Î»£© -45=45 - ¿¨³µ×°ÔØ,0,0,0,ÈÃËùÓп¨³µ×°ÔØÏä×Ó£¨¼´¸Ä±äÀàÐÍÎª×°ÔØµÄµ¥Î»£© -46=46 - ¹¥»÷µÐ·½½¨ÖþÎï,16,0,1,¹¥»÷Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ¡£ -47=47 - ÒÆ¶¯µ½µÐ·½½¨ÖþÎï,16,0,1,ÒÆ¶¯µ½Ö¸¶¨ÀàÐ͵Ľ¨Öþ£¬²ÎÊýΪ½¨ÖþÐòºÅ+ϵÊý£¨+0£º¹¥»÷Íþвֵ×îСµÄ£¬+65536 £º¹¥»÷Íþвֵ×î´óµÄ£¬+131072£º¹¥»÷¾àÀë×î½üµÄ£¬+262144£º¹¥»÷¾àÀë×îÔ¶µÄ£©¡£ -48=48 - Õì²ì,0,0,0,С¶Ó»áÕì²ìÍæ¼Òδ̽Ë÷µÄÇøÓò¡£ -49=49 - ³É¹¦,0,0,0,¼Ç¼С¶ÓÍê³ÉÁËÈÎÎñ¡£ÓÃÓÚAI´¥·¢·ÖÁ¿(È¨ÖØ)¡£ÔÚÿһ¸öAI´¥·¢ºóÌí¼Ó´ËÐÐΪ¡£ -50=50 - ÉÁ˸,20,0,1,ÉÁ˸С¶ÓÒ»¶Îʱ¼ä£¨²ÎÊýΪÉÁ˸µÄÖ¡Êý£© -51=51 - ²¥·Å¶¯»­,17,0,1,ÔÚÿ¸öС¶Óµ¥Î»Éϲ¥·Å¶¯»­¡£ -52=52 - ¶Ô»°ÆøÅÝ,18,0,1,ÔÚС¶ÓµÚÒ»¸öµ¥Î»ÉÏÏÔʾ¶Ô»°ÆøÅÝ¡£ -53=53 - µÐ·½»ùµØÍ⼯ºÏ,20,0,1,Ôڵз½»ùµØ°²È«¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖа²È«¾àÀë (AISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -54=54 - ¼º·½»ùµØÍ⼯ºÏ,20,0,1,ÔÚ¼º·½»ùµØÒ»¶¨¾àÀëÍ⼯ºÏ¡£Ares2.0Æð£¬ÊýÖµ²ÎÊýµÄÕý¸º½«Ó°ÏìRulesmdÈ«¾ÖÖС¸ÓѾü»ùµØ¡¹°²È«¾àÀë (AIFriendlyDistance=£¬²»´æÔÚÕâÌõÔòÓÃAISafeDistance=) µÄÉ쳤»òËõ¶Ì¡£ -55=55 - ÇëÇó³¬Îä...,20,0,1,ÇëÇóС¶ÓËùÊô·½¶Ôµ±Ç°Ð¡¶ÓʹÓ󬼶ÎäÆ÷£¬Ä¬ÈÏΪÌúÄ»¡£Ares2.0Æð£¬ÊýÖµ²ÎÊý¾ö¶¨AIʹÓÃÄÄÒ»×鳬Î䣨¶ÔÓ¦SW.Group=£¬Ä¬ÈÏΪ0£©¡£ -56=56 - ³¬Ê±¿Õ´«ËÍÖÁ½¨Öþ,16,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÌØ¶¨½¨Öþ¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -57=57 - ³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê,1,0,1,ÈôËùÊô·½³¬Ê±¿Õ´«Ë;ÍÐ÷£¬½«¸ÃС¶Ó³¬Ê±¿Õ´«ËÍÖÁÄ¿±ê¡£µ«ÊǴ˺óÐèÒª¶îÍâʹÓù¥»÷ÃüÁî¡£ -;YR Only -58=58 - ÒÆ¶¯µ½¼º·½½¨Öþ,16,0,1,ÒÆ¶¯µ½ÓÑ·½µÄÌØ¶¨½¨Öþ£¬¶îÍâ²ÎÊý¿ÉÒÔÓÃÓÚÖ¸¶¨ËÑË÷Ä¿±êʱµÄ²ßÂÔ -59=59 - ¹¥Õ¼Â·¾¶µãÉϵĽ¨Öþ,2,0,1,¹¥»÷Õ¼¾Ý¸Ã·¾¶µãµÄ½¨ÖþÎï¡£AIµ¥Î»Í¨³£»áÓÅÏȳ¢ÊÔפÔú£¨ÈôÄÜ£©¡£ -60=60 - ½øÈë»ØÊÕ³§,0,0,0,ÈÃС¶Ó½øÈë¸ÃËùÊô·½¾Í½üµÄ²¿¶Ó»ØÊÕ³§¡£ -61=61 - ½øÈë̹¿Ëµï±¤,0,0,0,ÈÃС¶ÓµÄÿ¸öµ¥Î»½øÈë¿ÕµÄ̹¿Ëµï±¤¡£ -62=62 - ½øÈëÉú»¯·´Ó¦Â¯,0,0,0,ÈÃС¶Ó½øÈëÉú»¯·´Ó¦Â¯¡£ -63=63 - ½øÈëÕ½¶·µï±¤,0,0,0,ÈÃС¶Ó½øÈëÕ½¶·µï±¤¡£ -64=64 - ½øÈë¿Éפ¾ü½¨Öþ,0,0,0,ÈÃС¶Ó½ø×¤ÖÐÁ¢½¨ÖþÎï¡£ -;Hares Only -65=65 - ¹¥»÷ÌØ¶¨ÀàÐ͵ĵ¥Î»,22,0,1,¹¥»÷ÌØ¶¨ÀàÐ͵ĿƼ¼µ¥Î»£¬ÊýֵΪȫ¾ÖTeamTargetTechnoTypesÁбíÖеÄÐòºÅ£¬´Ó0¿ªÊ¼ -66=66 - פÔú·¾¶µãλÖõĽ¨Öþ,2,0,1,ÅÉDz²½±øµ¥Î»×¤Ôú·¾¶µãλÖõĽ¨Öþ£¨Èç¹ûÓУ©£¬²»Çø·ÖС¶ÓËùÊôÊÇÈËÀà»òAIÍæ¼Ò¡£ -67=67 - ÉãÏñ»úÊӽǸúËæ,20,0,1,¼¤»î/È¡ÏûÉãÏñ»ú×·ÖðÊÓ½ÇÉèÖÃΪ¸ÃС¶Ó³ÉÔ±£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪ¸úËæ£¬¶à³ÉԱС¶ÓÉ÷Óã©¡£ -68=68 - С¶Ó³ÉÔ±±»Íæ¼ÒÑ¡ÖÐ,20,0,1,¼¤»î/È¡ÏûÉèÖøÃС¶Ó³ÉԱΪѡÖÐ״̬£¨ËùÓгÉÔ±¶¼»á±ê¼ÇΪѡÖУ©¡£ -69=69 - ÉÏÒ»½Å±¾Ö´Ðгɹ¦,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪ³É¹¦ -70=70 - ÉÏÒ»½Å±¾Ö´ÐÐʧ°Ü,20,0,1,ÉÏÒ»´Î½Å±¾Ö´Ðнá¹ûΪʧ°Ü -71=71 - µÈ´ýNÓÎÏ·Ãë,20,0,1,µÈ´ýNÓÎÏ·Ã룬ÒÔ±£Ö¤ÉÏÒ»Ìõ½Å±¾Ö´ÐÐÍê±Ï - -[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? -0=5 -1=9 -;2=10 -3=11 - -; events format: -; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] -; negative number for type currently not supported (only Actions do support yet)! -; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. -; NOTE: ID must be the same like # -[EventsRA2] -0=-ÎÞʼþ-,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄʼþ£¬ÎÞÒâÒå¡£ÇëÑ¡ÔñÐèÒªµÄʼþ¡£,0,1,0 -1=½øÈëʼþ...,0,2,0,0,µ±²½±ø»ò³µÁ¾½øÈë¹ØÁªµÄ¶ÔÏóʱ£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢¿É¹ØÁªµ½Ò»Ëù½¨Öþ»òÒ»¸öµ¥Ôª£¨Ê¹Óá°·ÅÖÃÓÚµØÍ¼ÉÏ¡±°´Å¥£©¡£¿ÉÓÃÓÚ¹¤³Ìʦ¡¢¼äµý½øÈ뽨Öþ£¬µ«¿ÕÖе¥Î»²»»á´¥·¢´ËÌõ¼þ¡£,0,1,1 -2=Õì²ì¿ªÊ¼£¨ÎÞÓã©,0,0,0,0,µ±¼äµý½øÈë¹ØÁªµÄ½¨Öþ£¬¿ªÊ¼Õì²ì¡£,0,0,2 -3=͵ÇÔÐж¯£¨ÎÞÓã©,0,2,0,0,µ±Ò»ÃûС͵´ÓÌØ¶¨µÄ½¨ÖþÖÐ͵ÇÔ½ðǮʱ´Ëʼþ±»´¥·¢¡£,0,0,3 -4=±»ÓÎÏ·Õß·¢ÏÖ,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ£¬±»·¢ÏÖÒâζ×ÅÒªÏÔʾ¸½½üµÄµØÍ¼ÇøÓò¡£,0,1,4 -5=×÷Õ½·½±»·¢ÏÖ...,0,2,0,0,µ±Ìض¨µÄijһ×÷Õ½·½µÄÈÎÒ»µ¥Î»»ò½¨Öþ±»ÓÎÏ·Õß·¢ÏÖʱ´¥·¢´Ëʼþ¡£,0,1,5 -6=Êܵ½ÈÎÒ»×÷Õ½·½¹¥»÷,0,0,0,0,µ±µ¥Î»Êܵ½Ò»Ð©·½Ê½µÄ¹¥»÷ʱ£¬´¥·¢´Ëʼþ¡£¼ä½ÓËðÉË»òÓѾü¿ª»ð²»°üÀ¨ÔÚÄÚ¡£,0,1,6 -7=±»ÈÎÒ»×÷Õ½·½´Ý»Ù,0,0,0,0,µ±¹ØÁªµÄ¶ÔÏó±»´Ý»Ùʱ´¥·¢Ð©Ê¼þ¡£¼ä½Ó»òÓѾü¿ª»ðÔì³É±»»Ù²»°üÀ¨ÔÚÄÚ¡£,0,1,7 -8=ÈκÎʼþ,0,0,0,0,µ±µ¥¶À%1ʹÓÃʱ£¬Á¢¼´Ç¿ÖÆ´¥·¢´Ëʼþ¡£´Ë¶¯×÷¸úÁ÷ÊÅʱ¼ä ÊýÖµ1 ÏàËÆ¡£,0,1,8 -9=±»´Ý»Ù%1 µ¥Î»%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓе¥Î»±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,9 -10=±»´Ý»Ù%1 ½¨Öþ%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¨Öþ±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£µäÐÍʹÓÃÔÚÓÎÏ·µÄ½áÊøÌõ¼þÖС£,0,1,10 -11=±»´Ý»Ù%1 È«²¿...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓжÔÏó±»´Ý»Ùʱ´¥·¢´Ëʼþ¡£ÕâÊdz£¹æµÄÓÎÏ·½áÊø´¥·¢Ê¼þ(È«²¿´Ý»Ù)¡£,0,1,11 -12=½ðÇ®³¬¹ý...,0,6,0,0,µ±Óëʼþ¹ØÁªµÄ×÷Õ½·½µÄ½ðÇ®³¬¹ýÌØ¶¨Öµ´¥·¢´Ëʼþ¡£,0,1,12 -13=Á÷ÊÅʱ¼ä...,0,6,0,0,µ±Á÷ÊŵÄʱ¼ä´ïµ½Ìض¨Öµ´¥·¢´Ëʼþ¡£µ±´¥·¢Æ÷½¨Á¢Ê±¸Ãʱ¼ä³õʼ»¯£¬µ±´¥·¢Æ÷³ÖÐø²»±ä»ò±»´¥·¢Ê±£¬¼ÆÊ±Æ÷¸´Î»¡£,0,1,13 -14=ÈÎÎñʱ¼äÒѵ½,0,0,0,0,µ±È«¾ÖµÄÈÎÎñʱ¼ä(ÏÔʾÔÚÆÁÄ»ÓÒϽÇ)µ¹¼ÆÊ±ÎªÁãʱ´¥·¢´Ëʼþ¡£,0,1,14 -15=±»´Ý»Ù%1 ½¨Öþ%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1½¨Öþ(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,15 -16=±»´Ý»Ù%1 µ¥Î»%1 (ÊýÁ¿Îª#)...,0,6,0,0,µ±Ìض¨ÊýÁ¿µÄ%1µ¥Î»(ÓÉ´Ë´¥·¢Ê¼þÌØ¶¨×÷Õ½·½%1ËùÓÐ)±»´Ý»Ù¡£,0,1,16 -17=²»ÔÙÓй¤³§,0,0,0,0,µ±´Ë´¥·¢Ê¼þÌØ¶¨µÄµÄ×÷Õ½·½²»»áÔÙÓдøÓÐFactory=µÄ¹¤³§£¨½¨Ô쳡£¬³µ¼ä£¬¿ÕÖ¸²¿£¬±øÓªµÈ£©Ê±´¥·¢´Ëʼþ¡£Ò»°ã×÷Ϊ 9ÂôµôÈ«²¿½¨Öþ µÄÌõ¼þ¡£,0,1,17 -18=ƽÃñ³·À루ÎÞÓã©,0,0,0,0,µ±Æ½Ãñ³·Àëʱ(À뿪µØÍ¼)´¥·¢´Ëʼþ¡£,0,0,18 -19=½¨ÔìÌØ¶¨ÀàÐ͵Ľ¨Öþ...,0,8,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½½¨ÔìÌØ¶¨µÄ%1ÀàÐ͵Ľ¨Öþʱ´¥·¢´Ëʼþ¡£,0,1,19 -20=Éú²úÌØ¶¨ÀàÐ͵ijµÁ¾...,0,11,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ¿Æ¼¼ÀàÐ͵ijµÁ¾Ê±´¥·¢´Ëʼþ¡£,0,1,20 -21=Éú²úÌØ¶¨ÀàÐ͵IJ½±ø...,0,10,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ²½±øÀ൥λʱ´¥·¢´Ëʼþ¡£,0,1,21 -22=Éú²úÌØ¶¨ÀàÐ͵ķɻú...,0,9,0,0,µ±´¥·¢Ê¼þµÄ×÷Õ½·½Éú²úÌØ¶¨µÄ%1·ÉÐÐÀ൥λʱ´Ëʼþ±»´¥·¢¡£,0,1,22 -23=À뿪µØÍ¼(С¶Ó)...,-1,7,0,0,µ±Ìض¨µÄС¶ÓÀ뿪µØÍ¼Ê±Ê¼þ´¥·¢¡£Èç¹ûС¶Ó±»´Ý»ÙÔò²»»á´¥·¢Ê¼þ¡£Èç¹ûС¶Ó³ýÒ»¸ö³ÉÔ±ÃûÆäËûÒѱ»È«²¿´Ý»Ù£¬¶øÕâÒ»³ÉÔ±À뿪Á˵ØÍ¼£¬ÄÇôʼþ½«±»´¥·¢¡£,0,1,23 -24=½øÈëÄ³ÇøÓò...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»½øÈëÉÏÊöÕâÒ»´¥·¢Ê¼þ¶¨Î»ÇøÓò£¬Ê¼þ±»´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë±»¶¨Î»ÓÚÒ»¸öµ¥ÔªÖУ¬Ö»ÄÜÊÇÒ»¸öµ¥Ôª¡£,0,1,24 -25=Ô½¹ýˮƽÏß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓòˮƽÏßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,25 -26=Ô½¹ý´¹Ö±Ïß...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄÒ»µ¥Î»Ô½¹ý´Ë´¥·¢Ê¼þÌØ¶¨µÄÇøÓò´¹Ö±Ïßʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢Ê¼þ±ØÐë·ÅÖÃÓÚÒ»¸öµ¥ÔªÄÚ¡£,0,1,26 -27=È«¾Ö¿ªÆô...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¿ªÆô[1]ʱ£¬Ê¼þ´¥·¢¡£,0,1,27 -28=È«¾Ö¹Ø±Õ...,0,35,0,0,µ±Ìض¨µÄÈ«¾Ö±äÁ¿¹Ø±Õ[0]ʱ£¬Ê¼þ´¥·¢¡£,0,1,28 -29=±»ÈκÎÊÂÎï´Ý»Ù(²»°üÀ¨¼äµýÉøÍ¸),0,0,0,0,µ±¹ØÁª¶ÔÏó±»´Ý»Ù%1ʱ£¬Ê¼þ´¥·¢¡£²»°üÀ¨ÉøÍ¸È뽨Öþ»òµ¥Î»¡£,0,1,29 -30=µçÁ¦²»×ã...,0,2,0,0,µ±Ìض¨×÷Õ½·½Í£µçʱ£¬Ê¼þ´¥·¢¡£,0,1,30 -31=ÇÅÁº±»´Ý»Ù,0,0,0,0,µ±Ìض¨µÄÇÅÁºµ±³öÏÖȱ¿Ú²»ÄÜͨÐÐʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,31 -32=½¨Öþ´æÔÚ...,0,8,0,0,µ±´Ë´¥·¢Ê¼þ×÷Õ½·½ÓÐÌØ¶¨½¨Öþ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£´Ë½¨Öþ¿ÉÒÔÊÇÒÔǰ¾ÍÓеĻòÓÉ»ùµØ½¨ÔìµÄ¡£,0,1,32 -33=±»ÓÎÏ·ÕßÑ¡¶¨,0,2,0,0,µ±µ¥Î»±»ÓÎÏ·ÕßÑ¡¶¨Ê±£¬Ê¼þ´¥·¢¡£½öʹÓÃÓÚµ¥Î»ÈÎÎñÖС£,0,1,33 -34=µ½´ï·¾¶µã¸½½ü...,48,30,0,0,µ±¶ÔÏóµ½´ïÌØ¶¨µÄ·¾¶µã¸½½üʱ£¬Ê¼þ´¥·¢¡£²ÎÊý±íʾ¾àÀë·¾¶µãµÄ·¶Î§°ë¾¶,0,1,34 -35=µÐÈ˽øÈë¾Ö²¿ÕÕÃ÷Çø...,0,0,0,0,µ±Ò»¸öµÐÈ˵¥Î»½øÈë¹ØÁª½¨ÖþÎïͶÉäµÄ¾Ö²¿ÕÕÃ÷ÇøÊ±£¬Ê¼þ´¥·¢¡£,0,1,35 -36=¾Ö²¿¿ªÆô...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¿ªÆô(1)ʱ£¬Ê¼þ´¥·¢¡£,0,1,36 -37=¾Ö²¿¹Ø±Õ...,0,3,0,0,µ±Ìض¨µÄ¾Ö²¿±äÁ¿¹Ø±Õ(0)ʱ£¬Ê¼þ´¥·¢¡£,0,1,37 -38=Ê×´ÎÊÜËð(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱ³õ´ÎÊܵ½ËðÉËʱ£¬Ê¼þ´¥·¢¡£,0,1,38 -39=Ò»°ëÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,39 -40=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(½öÖ¸Õ½¶·),0,0,0,0,½öÖ¸×÷սʱÊܵ½ËðÉ˶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,40 -41=Ê×´ÎÊÜËð(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶ø³õ´ÎÊÜËðʱ£¬Ê¼þ´¥·¢¡£,0,1,41 -42=Ò»°ëÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐÒ»°ëÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,42 -43=ËÄ·ÖÖ®Ò»ÉúÃüÖµ(ÈκÎÀ´Ô´),0,0,0,0,µ±Êܵ½ÈκÎÀ´Ô´µÄ¹¥»÷¶øÖ»ÓÐËÄ·ÖÖ®Ò»ÉúÃüֵʱ£¬Ê¼þ´¥·¢¡£,0,1,43 -44=Êܵ½¹¥»÷(×÷Õ½·½)...,0,2,0,0,µ±Ôâµ½ÌØ¶¨×÷Õ½·½µÄijЩµ¥Î»µÄ¹¥»÷ʱ£¬Ê¼þ´¥·¢¡£,0,1,44 -45=»·¾³ÕÕÃ÷ <=(СÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶ÈµÍÓÚ»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,45 -46=»·¾³ÕÕÃ÷ >=(´óÓÚ)...,0,6,0,0,µ±»·¾³ÕÕÃ÷ÁÁ¶È³¬¹ý»òµÈÓÚijһȷ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£¿ÉÓÃÖµ½éÓÚ 0 µ½ 100Ö®¼ä¡£,0,1,46 -47=Á÷ÊŵÄÇé½Úʱ¼ä...,0,6,0,0,´Ó¾çÇ鿪ʼ¼ÆËãÓÎÏ·µÄÁ÷ÊÅʱ¼ä¡£,0,1,47 -48=±»ÈκÎÊÂÎï´Ý»Ù,0,0,0,0,µ±±»ÈκÎÊÂÎï´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£´Ë´¥·¢²»ÄܹØÁªµ½º½Ä¸ÉÏ£¬·ñÔòÆä×Ó»ú±»´Ý»ÙºóÔٴݻٺ½Ä¸£¬Ê¼þ²»»á´¥·¢¡£µ«Ïȴݻٺ½Ä¸£¬Ê¼þ¿ÉÒÔ´¥·¢¡£,0,1,48 -49=¹ØÁª¶ÔÏóʰµÃľÏä,0,0,0,0,µ±´Ëʼþ¹ØÁª¶ÔÏóʰµÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,49 -50=Èκε¥Î»Ê°µÃľÏä,0,0,0,0,µ±Èκε¥Î»Ê°µÃľÏäʱ£¬Ê¼þ´¥·¢¡£,0,1,50 -51=Ëæ»úÑÓʱ...,0,6,0,0,½øÐÐËæ»úÑÓʱ£¬Ê±¼äÖµ½éÓÚÌØ¶¨ÖµµÄ 50% µ½ 150%¡£Áª»úµØÍ¼Ê¹ÓøÃÌõ¼þÈÝÒ×ÒòΪ¸÷Íæ¼Òʱ¼ä²»¶ÔÓ¦Ôì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£¡£,0,1,51 -52=½ðÇ®µÍÓÚ...,0,6,0,0,µ±´Ëʼþ×÷Õ½·½½ðǮֵµÍÓÚÌØ¶¨ÖµÊ±£¬Ê¼þ´¥·¢¡£,0,1,52 -53=¼äµýαװ½øÈ루ÎÞÓã©...,0,2,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨×÷Õ½·½µ¥Î»½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,53 -54=¼äµýαװ²½±ø½øÈ루ÎÞÓã©...,0,10,0,0,µ±¼äµýÎ±×°ÎªÌØ¶¨²½±øÀ൥λ½øÈëʱ£¬Ê¼þ´¥·¢¡£,0,0,54 -55=±»´Ý»Ù%1 µ¥Î»%1 º£¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,55 -56=±»´Ý»Ù%1 µ¥Î»%1 ½¾ü...,0,2,0,0,µ±Ìض¨×÷Õ½·½µÄËùÓн¾üµ¥Î»±»´Ý»Ùʱ£¬Ê¼þ´¥·¢¡£µäÐÍÓ¦ÓÃÓÚÓÎÏ·½áÊøÌõ¼þÖС£,0,1,56 -57=½¨Öþ²»ÔÙ´æÔÚ,0,8,0,0,µ±Ìض¨µÄ½¨Öþ(¹éÊôÓÚ´Ëʼþ×÷Õ½·½)²»ÔÙ´æÔÚÓÚµØÍ¼ÉÏʱ£¬Ê¼þ´¥·¢¡£,0,1,57 - -; YR -58=³ä×ãÄÜÁ¿¹©Ó¦...,0,2,0,0,µ±Ìض¨²ÎÕ½·½µÄµçÁ¦³ä×ãʱ£¬Ê¼þ´¥·¢¡£,0,1,58,1 -59=½øÈë»ò·ÉÔ½...,0,2,0,0,µ±µ¥Î»%1 ²½±ø%1 »ò·ÉÐÐÆ÷ÒÆ¶¯½øÈë»ò·ÉÔ½´Ëµ¥ÔªÊ±£¬Ê¼þ´¥·¢¡£ÊôÓÚ½øÈëʼþµÄÍØÕ¹°æ£¬µ«²»ÄܹØÁª½¨Öþ¡£,0,1,59,1 - -; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters -60=¿Æ¼¼ÀàÐÍ´æÔÚ,46,48,0,0,µØÍ¼ÉϸÿƼ¼´æÔڵģ¨ÎÞÂÛËùÊô·½£©ÊýÁ¿´óÓÚµÈÓÚÉ趨ֵ£¬Ôò´¥·¢¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,60,1 -61=¿Æ¼¼ÀàÐͲ»´æÔÚ,46,48,0,0,Èç¹ûµØÍ¼ÉÏ£¨°üÀ¨½øÈëÔØ¾ßºÍ½¨ÖþµÄ£©´ËÀà¿Æ¼¼µÄÊýÁ¿Ð¡ÓÚÉ趨ֵ£¬Ôò´¥·¢£¬ÊýÖµÉèΪ0ûÓÐÒâÒå¡£´Ë´¥·¢¼ÆËã¡°ÕýÔÚ½¨ÔìÖеÄÎïÌ塱¡£,0,1,61,1 -86=ÈÎÎñµ¹¼ÆÊ±ÉÙÓÚ...,0,6,0,0,µ±ÈÎÎñ¼ÆÊ±Æ÷ʱ¼äÃëÊýСÓÚµÈÓÚÌØ¶¨Öµ´¥·¢´Ëʼþ¡£µ±¼ÆÊ±Æ÷ÖØÉèʱ¸Ãʼþ½«»áÖØÐÂÆÀ¹À¡£,0,1,13 - - -; action format: -; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] -; if using negative number for type, param will be set to the absolute value of this number -; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. -; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. -; NOTE: ID must be the same like # -[ActionsRA2] -0=-ÎÞÐÐΪ-,0,0,0,0,0,0,0,0,0,ÕâÊÇÒ»¸ö¿ÕµÄÐÐΪ¡£¾ÍÊÇʲôҲ²»×ö£¬Ï൱ÓÚûÓÐÐÐΪ¡£ÎªÊ²Ã´ÒªÓ㿸Ͻô»»³ÉÒ»¸öÓÐÓõÄÐÐΪÀ²¨r(¨s¨Œ¨t)¨q,0,1,0 -1=ʤÀûÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʤÀûÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,1 -2=ʧ°ÜÕßÊÇ...,0,2,0,0,0,0,0,0,0,ʧ°ÜÕß±ØÐëÊÇÌØ¶¨µÄijһ·½£¬ÄÇôÓÎÏ·¾Í»áÁ¢¼´½áÊø¡£Ê§°ÜÕßÖ¸¶¨µÄijһ·½£¬ÓÎÏ·Á¢¼´½áÊø¡£ÀýÈç%1 ÓÎÏ·ÕßÕâÒ»·½ÊÇÌØ¶¨µÄ¡£Èç¹ûÉèΪ·ÇÍæ¼ÒµÄ¹ú¼Ò£¬»áÔì³ÉÈÎÎñʤÀû£¬µäÐÍÀý×ÓÊǸ͝¹ý¹ú¼Ò˳ÐòµÄMOD¡£¶àÈËÈÎÎñʱ£¬´ËÐÐΪ»áµ¼ÖÂËùÓÐÍæ¼Òʧ°Ü¡£,0,1,2 -3=Éú²ú¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½½«¿ªÊ¼Éú²úµ¥Î»ºÍ½¨Öþ£¬Ö»¶ÔµçÄÔ·½ÓÐЧ¡£,0,1,3 -4=½¨Á¢Ð¡¶Ó...,-1,7,6,0,0,0,0,0,0,±¾´¥·¢Ê¼þµÄ×÷Õ½·½(¹éÊôÓÚ×÷սС¶ÓÉèÖõÄ×÷Õ½·½)½«»á½¨Á¢Ò»¸ö×÷սС¶ÓʵÀý£¬µ«Ð¡¶Ó³ÉÔ±²»»á×Ô¶¯Éú³É¡£Ð¡¶ÓÊôÐÔ²»Í¬Ð§¹û²»Í¬£ºÐ¡¶ÓÓÐ×Ô¶¯½¨ÔìÔòʹÓù¤³§½¨ÔìС¶Ó(¶ÔÈËÀàÍæ¼ÒÎÞЧ)¡£Ð¡¶ÓÓв¹³äбøÔòÕÙ¼¯µØÍ¼ÉÏÔÊÐíÖØ×éµÄµ¥Î»£¬»ò½«ÓпÉΪС¶ÓÖØ×é³ÉÔ±µÄС¶Ó²ðÉ¢ÔÙ×齨(¶ÔÈËÀàÍæ¼ÒÓÐЧ)¡£Ð¡¶ÓʵÀýµÄ´´½¨×ñѭС¶ÓÀàÐ͵Ä×î´óÖµÉèÖá£,0,1,4 -5=½âɢС¶Ó...,-1,7,0,0,0,0,0,0,0,½«Ìض¨Ð¡¶ÓÀàÐ͵ÄÈ«²¿ÊµÀýÏú»Ù¡£Ð¡¶ÓµÄ³ÉÔ±½«±»½âÉ¢£¬Í£Ö¹Ö´Ðнű¾£¬¿É×öΪбø¼ÓÈëÆäËûС¶ÓÖС£,0,1,5 -6=È«²¿ËÑË÷...,0,2,0,0,0,0,0,0,0,¾ü¶ÓÈ«²¿µ¥Î»%1(¹éÊôÓÚÌØ¶¨µÄ%1×÷Õ½·½)½øÈëËÑË÷ģʽ£¨Hunt£©¡£ËûÃǽ«ËÑË÷²¢ÏûÃðµÐÈË¡£É趨ÔÚrulesÀïµÄ[Hunt]¶Î£¬Ä¬ÈÏΪ²»·´»÷¡£,0,1,6 -7=Ô®¾ü(С¶Ó)...,-1,7,6,0,0,0,0,0,0,½¨Á¢Ò»¸öÌØ¶¨µÄÔ®¾üС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪС¶ÓÉèÖÃÖеÄ·¾¶µã¡£,0,1,7 -8=½µÂäÇøÉÁ¶¯(·¾¶µã)...,0,0,0,0,0,0,1,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨µÄ·¾¶µã³öÏÖÒ»¸ö¿Õ½µ²Õ½µÂäÇøÓò¶¯»­£¬¸Ã¶¯»­ÎªÑ­»·²¥·Å¡£´ËÇøÓò¸½½üµÄµØÍ¼Ò²½«»áÏÔʾ¡£,0,1,8 -9=ÂôµôÈ«²¿½¨Öþ...,0,2,0,0,0,0,0,0,0,ÂôµôËùÓеÄÌØ¶¨½¨Öþ(Ϊ¶ÒÈ¡ÏÖ½ð)¡£µäÐÍÓ¦ÓÃÔÚÓÎÏ·ÖеçÄÔÍæ¼Ò·¢¶¯µÄ×îºó¹¥»÷ÖС£,0,1,9 -10=²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄӰƬ(È«ÆÁÄ»)¡£ÓÎÏ·ÔÚ´ËÆÚ¼ä½«»áÔÝÍ££¬ÔÚ²¥·ÅÍê³Éºó×Ô¶¯»Ö¸´Õý³£¡£,0,1,10 -11=Îı¾´¥·¢Ê¼þ...,-4,13,2,6,0,0,0,0,0,ÏÔʾ×Ö·ûÎļþµÄÎı¾±êÖ¾<±êÇ©>¡£Îı¾ÔÚcsfÎļþÖУ¬ÐèÒªÓÃcsf±à¼­Æ÷±à¼­¡£ÒÔNOSTR:¿ªÍ·¿ÉÒÔÖ±½ÓÏÔʾÄÚÈÝ£¬µ«¿Õ¸ñ»á¶ªÊ§£¬ÇÒ¶Ô¶àÓïÑÔÖ§³Ö²»¼Ñ£»ÁíÍâËùÊô·½²ÎÊý½öÔÚ¶àÈËģʽÓÐÒâÒå¡£,0,1,11 -12=´Ý»Ù´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,´Ý»ÙËùÓÐÌØ¶¨´¥·¢Ê¼þÀàÐ͵ĵ±Ç°ÊµÀý¡£²»»áÓ°ÏìδÀ´µÄ´¥·¢ÊµÀý(°üÀ¨ÕýÔÚ½¨Á¢ÖеÄ)¡£,0,1,12 -13=(ÎÞЧ)×Ô¶¯´´½¨¿ªÊ¼...,0,2,0,0,0,0,0,0,0,ÌØ¶¨×÷Õ½·½¿ªÊ¼×Ô¶¯´´½¨Ð¡¶Ó£¬Èçµ±½¨Öþ±»¹¥»÷ʱ×Ô¶¯µ÷ÓÿÕÏе¥Î»È¥ÃðµôÇÖÂÔÕß¡£±¾Ê¼þÊʺϵçÄÔ·½¿ªÊ¼×Ô¶¯½¨Ôì¡£,0,1,13 -14=¸ü¸ÄËùÊô...,0,2,0,0,0,0,0,0,0,¸ü¸Äµ¥Î»»ò½¨Öþ¹éÊôµ½Ìض¨×÷Õ½·½¡£,0,1,14 -15=ÔÊÐíʤÀû,0,0,0,0,0,0,0,0,0,Çå³ýÒ»¸ö¡°Õϰ­¡±ºóÔÊÐíÓÎÏ·ÕßʤÀû¡£Õϰ­µÄÊýÁ¿µÈÓÚÒѽ¨Á¢¶øÓµÓдËÐÐΪµÄ´¥·¢Êý¡£Èç¹ûÕâ¸öÐÐΪЧ¹û²»ºÃ£¬ÇëʹÓô¥·¢Á´ºÍ ÐÐΪ1 ʤÀûÕßÊÇ...¡£,0,1,15 -16=ÏÔʾȫ²¿µØÍ¼,0,0,0,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔʾȫ²¿µØÍ¼(Çå³ýºÚÄ»)¡£Áª»úµØÍ¼Ê¹ÓøÃÐÐΪ»áÔì³É¡°ÖØÐÂÁ¬Ïß´íÎ󡱡£,0,1,16 -17=ÏÔʾ·¾¶µãÖÜÎ§ÇøÓò...,0,30,2,0,0,0,0,0,0,ΪÓÎÏ·ÕßÏÔÊ¾ÌØ¶¨Â·¾¶¶¨Ò»¶¨·¶Î§ÄڵĵØÍ¼ÇøÓò¡£,0,1,17 -18=ÏÔʾ·¾¶µãµÄµ¥ÔªÇøÓò...,0,30,0,0,0,0,0,0,0,ÏÔʾȫ²¿ÓëÌØ¶¨Â·¾¶µã¹²ÏíÏàÍ¬ÇøÓòµÄµ¥Ôª¡£¸ÃÐÐΪ»á²úÉúһЩ¸½´øÐ§Ó¦£¬Ê¹ÓÃʱҪ½÷É÷£¡,0,1,18 -19=²¥·ÅÉùÒô...,-7,16,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôЧ£¬¶¨ÒåÔÚsound(md).ini¡£,0,1,19 -20=²¥·ÅÒôÀÖ...,-8,17,0,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÒôÀÖÇúÄ¿£¬¶¨ÒåÔÚtheme(md).iniÖС£,0,1,20 -21=²¥·ÅÓïÒô...,-6,18,2,0,0,0,0,0,0,²¥·ÅÌØ¶¨µÄÓïÒô£¬¶¨ÒåÔÚeva(md).iniÖС£,0,1,21 -22=Ç¿ÖÆ´¥·¢Ê¼þ...,-2,14,0,0,0,0,0,0,0,²»¹ÜÌØ¶¨´¥·¢µÄÌõ¼þ£¬Ç¿ÖÆÖ´ÐÐÌØ¶¨´¥·¢µÄÐÐΪ¡£´ËÐÐΪÓÐBUG£¬Ìض¨´¥·¢»áÁ¬Ðø´¥·¢6´Î£¬ÐèÒªÔÚÌØ¶¨´¥·¢ÖÐʹÓà ÐÐΪ12 ´Ý»Ù´¥·¢Ê¼þ ´Ý»ÙÆä±¾ÉíÀ´×èÖ¹Æä´¥·¢¶à´Î¡£,0,1,22 -23=¼ÆÊ±¿ªÊ¼,0,0,0,0,0,0,0,0,0,Æô¶¯È«¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´æÔÚÓÚÓÎÏ·½çÃæÓÒϽǡ£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,23 -24=¼ÆÊ±Í£Ö¹,0,0,0,0,0,0,0,0,0,ֹͣȫ¾ÖÈÎÎñ¼ÆÊ±Æ÷£¬´ËʱÎı¾»áÏûʧ¡£,0,1,24 -25=¼ÆÊ±Ôö¼Ó...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äÔö¼ÓÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£,0,1,25 -26=¼ÆÊ±Ëõ¶Ì...,0,6,0,0,0,0,0,0,0,°´Ìض¨µÄʱ¼äËõ¶ÌÈ«¾ÖÈÎÎñ¼ÆÊ±Æ÷¡£µ«Ìض¨µÄʱ¼äÖµ²»ÄÜСÓÚÁã¡£,0,1,26 -27=¼ÆÊ±ÉèÖÃ...,0,6,0,0,0,0,0,0,0,½«È«¾ÖÈÎÎñ¼ÆÊ±Æ÷ÉèÖÃÎªÌØ¶¨µÄʱ¼äÖµ¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,27 -28=È«¾Ö¿ªÆô...,0,35,0,0,0,0,0,0,0,¿ªÆôÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,28 -29=È«¾Ö¹Ø±Õ...,0,35,0,0,0,0,0,0,0,¹Ø±ÕÈ«¾Ö±äÁ¿¡£È«¾Ö±äÁ¿±»ÃüÃûÓÚ rules ÎļþµÄ[VariableNames]¶Î¡£È«¾Ö±äÁ¿¿ÉÒÔÊǹرÕ[0]»ò¿ªÆô[1]¡£,0,1,29 -30=×Ô¶¯½¨Éè»ùµØ...,0,37,0,0,0,0,0,0,0,³õʼ»¯¼ÆËã»úÔâÓöսģʽµÄ½¨Éè¿ØÖÆ£¬¿ÉÒÔÊÇ[ON]»ò[OFF]״̬¡£µ±ÉèΪ[ON]%1ʱ£¬ÔÚµ¥ÈËÈÎÎñÖÐģʽ/ÔâÓöսģʽ¼ÆËã»ú½«½Ó¹Ü¿ØÖÆ(Ҫȷ±£Óн¨Ôì³§)¡£,0,1,30 -31=Öðµ¥ÔªÑÓÉìºÚÄ»,0,0,0,0,0,0,0,0,0,Ò»²½Ò»²½(°´µ¥Ôª)Ôö´óµØÍ¼µÄºÚÄ»(²»¿É¼û)ÇøÓò£¬ÐèÒªÏàÓ¦µÄÑÓÉìºÚÄ»INIÉèÖòÅÄÜʹÓá£,0,1,31 -32=´Ý»Ù¹ØÁªÎïÌå,0,0,0,0,0,0,0,0,0,´Ý»Ù¸Ã´¥·¢¹ØÁªµÄËùÓн¨Öþ%1 ÇÅÁº%1 »òµ¥Î»¡£Èç¹ûÊÇÇÅÁº£¬ÄÇô´Ë´¥·¢±ØÐë±»Óõ¥Ôª±ê¼Ç·ÅÖÃÔÚÄ¿±êÇÅÁºµÄÏ·½£¨Ö»ÄÜ·ÅÖÃÒ»¸öµ¥Ôª±ê¼Ç£©¡£,0,1,32 -33=Ìí¼ÓÒ»´ÎÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÒ»´Î(Ö»Ò»´Î)ÌØ¶¨µÄ³¬¼¶ÎäÆ÷¡£,0,1,33 -34=ÓÀ¾ÃÌí¼ÓÌØ¶¨µÄ³¬¼¶ÎäÆ÷...,0,36,0,0,0,0,0,0,0,ΪӵÓд˴¥·¢µÄ²ÎÕ½·½Ìí¼ÓÓÀ¾ÃµÄ³¬¼¶ÎäÆ÷¡£,0,1,34 -35=³¬ÎäÊ×ѡĿ±êÎªÌØ¶¨½¨Öþ...,0,8,0,0,0,0,0,0,0,Ö¸¶¨ÓµÓд˴¥·¢µÄ²ÎÕ½·½³¬¼¶ÎäÆ÷¹¥»÷ʱµÄÊ×ѡĿ±ê£¬Æä²ÎÊýΪ[BuildingTypes]ÀïµÄID¡£,0,1,35 -36=È«²¿¸ü¸Ä¹éÊô...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄ²ÎÕ½·½µÄËùÓжÔÏó¸ü¸Ä¹éÊôµ½Ìض¨²ÎÕ½·½¡£,0,1,36 -37=½áÃË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½½áÃË£¬Õâ¸ö½áÃËÊÇË«ÏòµÄ¡£,0,1,37 -38=³ÉΪµÐÈË...,0,2,0,0,0,0,0,0,0,ʹ´Ë´¥·¢µÄ²ÎÕ½·½ÓëÌØ¶¨²ÎÕ½·½²»½áÃË(ÐûÕ½)£¬Õâ¸öÐûÕ½ÊÇË«ÏòµÄ¡£±»ÐûÕ½µÄ²ÎÕ½·½ÈôÊǵçÄÔ£¬Æä»áÅж¨Îª´æÔÚµÐÈË£¬½ø¹¥ÓÃAI´¥·¢»á±»¼¤»î¡£,0,1,38 -39=¸ü¸ÄÊÓÒ°µÈ¼¶£¨ÎÞÓã©...,0,6,0,0,0,0,0,0,0,¸ü¸ÄÓÎÏ·ÕßÀ×´ïͼµÄÊÓÒ°µÈ¼¶¡£Ê¹Óà 1 Ϊ³¬³£ÊÓÒ°%1 2 ΪËõСÊÓÒ°¡£,0,0,39 -40=µ÷ÕûÍæ¼ÒÊÓÒ°...,0,0,21,22,23,24,0,0,0,µ÷ÕûÍæ¼ÒµÄµØÍ¼¿Éµ½´ï·¶Î§¡£²ÎÊý£º×ó%1ÉÏ%1¿í%1¸ß£¬ÔÚÕâÀï×ó%1ÉÏÏÞÖÆ×óÉϽÇλÖ㬠¿í%1¸ßÏÞÖÆÓÒϽǡ£,0,1,40 -41=²¥·Å¶¯»­ÔÚ...,0,25,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄµ¥Ôª²¥·ÅÌØ¶¨µÄ¶¯»­¡£ÕâÀïÌîµÄ¶¯»­ID²¢²»Ò»¶¨ÊÇRulesÀïÖ¸¶¨µÄ£¬¶øÊÇʵ¼Ê¼ÓÔØ½øÓÎÏ·ÄÚ´æµÄ˳Ðò¡£Èç¹ûÓÐÌøºÅ»òÕß²»ÊÇ´Ó0¿ªÊ¼µÄ£¬ÇëʹÓõÚÈý·½¹¤¾ß»ñµÃÕýÈ·ÐòºÅ»òÕßÈ·±£´ÓRules¶ÁÈ¡µÄÐòºÅÊÇÐÞÕý¹ýµÄ¡£´ËÍ⣬ÕâÀïµÄÊýÖµ1±íʾÈç¹ûÔ­µØ´æÔÚÒ»¸öÀàÐÍÏàͬµÄ¶¯»­ÔòÌø¹ý´´½¨£»Îª2±íʾɾ³ýǰһ¸ö´æÔÚµÄͬÀàÐͶ¯»­¡£Îª6±íÊ¾ÖØ½¨¶¯»­¡£,0,1,41 -42=±¬Õ¨ÔÚ...,0,41,0,0,0,0,1,0,0,ʹÓÃÌØ¶¨µÄÎäÆ÷£¬ÔÚÌØ¶¨µÄµ¥Ôª%1 ²úÉúÒ»¸ö±¬Õ¨¡£ÓÃÊý×ÖÖ¸¶¨Ìض¨µÄÎäÆ÷£¬ÔÚAresÖÐ×ñÑ­[WeaponTypes]ÁбíµÄ×¢²á˳Ðò£¬²»ÔÚÁбíÄÚµÄÎäÆ÷ÎÞ·¨Ö±½ÓÖªµÀ×¢²á˳Ðò¡£,0,1,42 -43=ÔÚÖ¸¶¨Â·¾¶µã´´½¨Ò»¸öVoxelË鯬,0,29,0,0,0,0,1,0,0,ÔÚÖ¸¶¨µØµã´´ÔìÒ»¸öVoxelË鯬£¬IDºÅÔÚrulesµÄ[VoxelAnims]ÏÂÓж¨Òå¡£ÆäÖÐ8ÊÇÔÉʯ¡£,0,1,43 -44=Àë×ӷ籩¿ªÊ¼£¨ÎÞÓã©,0,6,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬Æô¶¯Àë×ӷ籩£¬°´Ìض¨µÄÓÎÏ·Ö¡¡£,0,0,44 -45=Àë×ӷ籩½áÊø£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬½áÊøÀë×ӷ籩½ø³Ì¡£,0,0,45 -46=½ûÖ¹Óû§ÊäÈë,0,0,0,0,0,0,0,0,0,½ûÖ¹Óû§ÊäÈ룬ʧȥÊó±êÎÞ·¨¿ØÖÆ¡£,0,1,46 -47=ÔÊÐíÓû§ÊäÈë,0,0,0,0,0,0,0,0,0,ÔÊÐíÓû§ÊäÈ룬ȡÏû¶¯×÷46µÄЧ¹û¡£,0,1,47 -48=ÒÆ¶¯²¢¾ÓÖÐÊÓÒ°...,0,28,0,0,0,0,1,0,0,½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã£¬ËÙ¶ÈΪ1-4µÄÒ»¸öÖµ£¬Ì«´ó»áÔì³É¿¨ÆÁ£¬ÎÞ·¨Òƶ¯ÊÓÒ°¡£,0,1,48 -49=·Å´óÊÓÒ°,0,0,0,0,0,0,0,0,0,·Å´óÕ½ÊõÊÓÒ°£¬¼õÉÙ·Ö±æÂÊ£¬Í¬Ê±²»ÄÜÊäÈë¡£,0,1,49 -50=ËõСÊÓÒ°,0,0,0,0,0,0,0,0,0,È¡Ïû49·Å´óÊÓÒ°µÄ×÷Óã¬ËõСսÊõÊÓÒ°£¬Ôö¼Ó·Ö±æÂÊ£¬»Ø¸´ÊäÈë¡£,0,1,50 -51=ÖØÖÃÈ«²¿µØÍ¼µÄºÚÄ»(δ̽²âÇø),0,0,0,0,0,0,0,0,0,ÕÚ±ÎÈ«²¿µØÍ¼,0,1,51 -52=¸ü¸ÄÕÕÃ÷״̬£¨ÎÞÓã©,0,42,0,0,0,0,0,0,0,¸ü¸Äij½¨ÖþµÄ¾Ö²¿ÕÕÃ÷·½Ê½¡£´Ë´¥·¢Óëijһ¿ÉÉú²ú¾Ö²¿ÕÕÃ÷µÄ½¨ÖþÏà¹ØÁª¡£,0,0,52 -53=ÔÊÐíʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,ÔÊÐí±»¹´Ñ¡Îª½ûÖ¹»ò´¥·¢-54ÉèΪ½ûÖ¹µÄ´¥·¢ÔËÐС£,0,1,53 -54=½ûֹʼþ´¥·¢,-2,14,0,0,0,0,0,0,0,½ûÖ¹¿ÉÒÔÕý³£»ò±»´¥·¢-53ÉèΪ¿ÉÒÔÔËÐеĴ¥·¢Í£Ö¹ÔËÐС£,0,1,54 -55=½¨Á¢À×´ïʼþ,0,51,2,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢À×´ïʼþ¡£0¡¢3¡¢4ºìȦ¡¡1¡¢2»ÆÈ¦¡¡5ÀºÈ¦¡£,0,1,55 -56=¿ªÆô¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¿ªÆô¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,56 -57=¹Ø±Õ¾Ö²¿±äÁ¿...,0,3,0,0,0,0,0,0,0,¹Ø±Õ¾Ö²¿±äÁ¿¡£¾Ö²¿±äÁ¿¿ÉÒÔÊÇ ¹Ø±Õ[0] »ò ¿ªÆô[1]¡£,0,1,57 -58=Á÷ÐÇÓêÔÚ...,0,44,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢ÏÔʾһ¸öÁ÷ÐÇÓêʼþ¡£,0,0,58 -59=ÔÚÌØ¶¨Â·¾¶µã¼õÉÙ¿óʯ,0,30,0,0,0,0,0,0,0,¼õÉÙÌØ¶¨Â·¾¶µãÖÜΧµÄ¿óʯ¡£,0,1,59 -60=±äÂô¹ØÁª½¨Öþ,0,0,0,0,0,0,0,0,0,ÂôµôÓë´Ë´¥·¢¹ØÁªµÄ½¨Öþ¡£,0,1,60 -61=¹Ø±Õ¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,¹Ø±ÕÓë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬½¨Öþ½«Ç¿ÖÆÊ§È¥µçÁ¦¹©Ó¦¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=0Ïàͬ¡£,0,1,61 -62=Æô¶¯¹ØÁªµÄ½¨Öþ,0,0,0,0,0,0,0,0,0,Æô¶¯Óë´Ë´¥·¢¹ØÁªµÄ½¨ÖþµÄ¹©ÄÜ£¬È¡ÏûÐÐΪ 61¹Ø±Õ¹ØÁªµÄ½¨Öþ µÄЧ¹û¡£Ð§¹ûÓ뽨ÖþÖкÄÄÜ=1Ïàͬ¡£,0,1,62 -63=¸øÓè100ËðÉËÔÚ...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨µÄλÖøøÓè 100 µã±¬Õ¨É˺¦£¬²»»á²¥·ÅÈκζ¯»­¡£,0,1,63 -64=ÉÁ¹â(½ÏС)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½ÏСµÄÉÁ¹â¡£,0,0,64 -65=ÉÁ¹â(ÖеÈ)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸öÖеȵÄÉÁ¹â¡£,0,0,65 -66=ÉÁ¹â(½Ï´ó)£¨ÎÞÓã©...,0,30,0,0,0,0,0,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾһ¸ö½Ï´óµÄÉÁ¹â¡£,0,0,66 -67=Ðû¸æÊ¤Àû,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·ÕßʤÀû£¬µ«²»»áÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,67 -68=Ðû¸æÊ§°Ü,0,0,0,0,0,0,0,0,0,Ðû¸æÓÎÏ·Õßʧ°Ü£¬µ«²»»áÏÔʾ¡°ÈÎÎñʧ°Ü¡±µÄͼʾ¡£,0,1,68 -69=ÓÎÏ·ÈÎÎñÇ¿ÖÆÊ¤Àû,0,0,0,0,0,0,0,0,0,Ç¿ÖÆ½áÊøÓÎÏ·ÈÎÎñ£¬ÏÔʾ¡°ÈÎÎñÍê³É¡±µÄͼʾ¡£,0,1,69 -70=Ïú»Ù±êÇ©¼°Ïà¹Ø´¥·¢...,-3,38,0,0,0,0,0,0,0,Ïú»ÙÖ¸¶¨±êÇ©ËùÓÐʵÀýºÍËùÓйØÁªµÄ´¥·¢¡£,0,1,70 -71=ÉèÖû·¾³²½·ù...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­Èë²½·ùÖµ£¬Ò»°ãʹÓÃ1020000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,71 -72=ÉèÖû·¾³ËÙÂÊ...,0,45,0,0,0,0,0,0,0,ÉèÖû·¾³ÁÁ¶Èµ­ÈëËÙÂÊ£¬Ò»°ãʹÓÃ1036000000¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,72 -73=ÉèÖû·¾³ÁÁ¶È...,0,6,0,0,0,0,0,0,0,ÓÃÐµĻ·¾³ÁÁ¶ÈµÈ¼¶µ­ÈëÌæ´úÔ­ÁÁ¶È£¬Ê¹ÓÃÒ»¸öÕûÊý(0-100)´ú±í¹âÕÕÉèÖÃÀïµÄ(0.01-1)ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,73 -74=AI ´¥·¢¿ªÊ¼...,0,2,0,0,0,0,0,0,0,Æô¶¯Ìض¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,74 -75=AI ´¥·¢Í£Ö¹...,0,2,0,0,0,0,0,0,0,Í£Ö¹ÌØ¶¨²ÎÕ½·½µÄ AI ´¥·¢¡£,0,1,75 -76=AI ´¥·¢Ð¡¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐ AI ´¥·¢Ð¡¶Ó½¨ÔìµÄ±ÈÀý£¬ÊýÖµÔ½´óÔ½ÇãÏòÓÚʹÓþֲ¿µÄAI´¥·¢(ÔÚµØÍ¼ÄÚ)£¬Ô½Ð¡Ô½ÇãÏòÓÚʹÓÃÈ«¾ÖµÄAI´¥·¢(ÔÚai(md).iniÖÐ)¡£100 = È«²¿ ¾Ö²¿AI´¥·¢Ð¡¶Ó%1 0 = È«²¿ È«¾ÖAI´¥·¢Ð¡¶Ó¡£,0,1,76 -77=·ÉÐÐ×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐзÉÐÐС¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,77 -78=²½±ø×÷սС¶Ó±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐв½±øÐ¡¶Ó½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,78 -79=×÷սС¶Óµ¥Î»±ÈÀý...,0,6,0,0,0,0,0,0,0,AI ½øÐÐС¶Óµ¥Î»½¨ÔìµÄ±ÈÀý(100 = È«²¿Ð¡¶Ó%1 0 = È«²¿Ëæ»ú)¡£,0,1,79 -80=Ô®¾ü(С¶Ó)[ÔÚ·¾¶µã]...,-1,7,6,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãÇøÓò½¨ÔìÔ®¾ü×÷սС¶Ó¡£Ð§¹ûΪֱ½ÓË¢³öÀ´£¬Ë¢±øÂ·¾¶µãΪÐÐΪÉèÖÃÖеÄ·¾¶µã¡£,0,1,80 -81=×ÔÎÒ»½ÐÑ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©»òÎÞÖ¸Áharmless£©µ¥Î»½øÐзÀÎÀģʽ¡£,0,1,81 -82=»½ÐÑËùÓÐÐÝÏ¢µ¥Î»,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÐÝÏ¢£¨sleep£©µÄµ¥Î»Ä£Ê½¡£,0,1,82 -83=»½ÐÑËùÓÐÎÞÖ¸Áλ,0,0,0,0,0,0,0,0,0,»½ÐÑËùÓÐÎÞÖ¸Áharmless£©µÄµ¥Î»Ä£Ê½¡£,0,1,83 -84=»½ÐÑijС×鵥λ...,0,6,0,0,0,0,0,0,0,»½ÐÑÓиÃС×é±àºÅµÄÎÞÖ¸Áharmless£©µ¥Î»¡£,0,1,84 -85=¿óÂöÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óÂöÊÇ·ñÉú³¤¡£,0,1,85 -86=¿óʯÉú³¤...,0,37,0,0,0,0,0,0,0,¿ØÖÆ¿óʯÊÇ·ñÉú³¤¡£,0,1,86 -87=±ù²ãÑÓÉ죨ÎÞÓã©...,0,37,0,0,0,0,0,0,0,¿ØÖƽá±ùÃæ»ýÊÇ·ñÔö³¤¡£,0,0,87 -88=Á£×Ó¶¯»­...,0,26,0,0,0,0,1,0,0,ÔÚÌØ¶¨ÇøÓòÏÔʾÁ£×Ó¶¯»­¡£,0,1,88 -89=ɾ³ýÁ£×Ó¶¯»­...,0,0,0,0,0,0,1,0,0,ɾ³ýÌØ¶¨ÇøÓòµÄÁ£×Ó¶¯»­¡£,0,1,89 -90=ÉÁµç´ò»÷...,0,0,0,0,0,0,1,0,0,µ¥¸öµÄÀë×ӷ籩ÉÁµç´ò»÷¡£Ä¿Ç°Ö»ÓÐÔÚ°®Â×˹£¨Alliance£©±à¼­Æ÷ÉϲſÉÒÔÕý³£Ê¹ÓÃÕâ¸ö¹¦ÄÜ¡£,0,1,90 -91=Go Berzerk£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 -92=Æô¶¯ÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,Æô¶¯Ä³Ò»×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,92 -93=¹Ø±ÕÁÒ»ð·ç±©·ÀÓùϵͳ£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,¹Ø±Õijһ×÷Õ½·½µÄÁÒ»ð·ç±©·ÀÓùϵͳ¡£,0,0,93 -94=Àë×ÓÅÚ´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩÀë×ÓÅÚ´ò»÷¡£,0,0,94 -95=ºËµ¯´ò»÷...,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã±ßԵʵʩºËµ¯´ò»÷¡£,0,1,95 -96=»¯Ñ§µ¼µ¯´ò»÷£¨ÎÞÓã©,0,0,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µãʵʩ»¯Ñ§µ¼µ¯´ò»÷¡£,0,0,96 -97=Toggle Train Cargo£¨ÎÞÓã©,0,0,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÁгµÐ¶»õ£¬Çл»×´Ì¬,0,0,97 -98=²¥ÈëÒôЧ(Ëæ»ú)...,-7,16,0,0,0,0,0,0,0,ÔÚËæ»úµÄ·¾¶µã²¥·ÅÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚËæ»ú·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,98 -99=²¥·ÅÒôЧ...,-7,16,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã²¥·ÅÌØ¶¨µÄÒôЧ¡£Õâ¸ö¶¯×÷²»ÐèÒªÉèÖÃÖØ¸´´¥·¢£¬Æô¶¯ÒÔºó¼´ÔÚÌØ¶¨Â·¾¶µã²»Í£²¥·ÅÕâ¸öÒôЧ£¬¼ä¸ôʱ¼äËæ»ú¡£,0,1,99 -100=ÔÚÀ×´ï´°¿Ú²¥·ÅӰƬ...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄ¿ª³¡Ó°Æ¬(ÔÚСÆÁÄ»)¡£ÓÎÏ·ÕßÈÔÄܶԲ½±øºÍµ¥Î»½øÐпØÖÆ¡£,0,1,100 -101=ÖØÖÃÌØ¶¨Â·¾¶µãµÄºÚÄ»(δ̽²âÇø)...,0,30,0,0,0,0,0,0,0,ÓúÚÄ»¸²¸ÇÌØ¶¨µÄ·¾¶µã¡£,0,1,101 -102=ÉÁµç·ç±©´ò»÷...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÔÚÌØ¶¨µÄ·¾¶µãʵʩÉÁµç·ç±©´ò»÷¡£,0,1,102 -103=¼ÆÊ±Æ÷Îı¾...,-4,13,6,0,0,0,0,0,0,¼ÆÊ±Æ÷ÏÔʾʲôÎı¾±êÇ©(ÈçÎı¾ÊÇÔÚcsfÎļþÖÐ)¡£Òª¿ªÆôÒ»¸öÕý³£µÄ¼ÆÊ±Æ÷£¬ÐèÒªÔÚÒ»¸ö´¥·¢ÄÚÒÀ´ÎÉèÖà 27 ¼ÆÊ±ÉèÖá¢23 ¼ÆÊ±¿ªÊ¼¡¢103 ¼ÆÊ±Æ÷Îı¾ Èý¸öÐÐΪ¡£,0,1,103 -104=ÉÁÁÁС¶Ó...,-5,7,0,0,0,0,1,0,0,ÓÃÌØ¶¨µÄÖ¡ÊýÉÁÁÁÌØ¶¨µÄС¶Ó£¬Ìî600ÒÔÉÏЧ¹û½ÏºÃ¡£,0,1,104 -105=ÏÔʾ¶Ô»°×¢ÊÍ¿ò...£¨ÎÞÓã©,-1,7,0,0,0,0,0,0,0,TS²ÐÁô¹¦ÄÜ£¬ÔÚÌØ¶¨Ð¡¶ÓµÄÉÏÃæÏÔʾ¶Ô»°×¢ÊÍ¿ò¡£,0,0,105 -106=ÉèÖÿƼ¼µÈ¼¶(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,ÉèÖÃÌØ¶¨µÄµ¥Î»»ò½¨Öþµ½Ìض¨µÄ¿Æ¼¼µÈ¼¶¡£,0,1,106 -107=³¬Ê±¿Õ´«ËÍÔ®¾ü(С¶Ó)[ÔÚ·¾¶µã]... ,-1,7,0,0,0,0,1,0,0,´«ËÍÔ®¾üС¶Óµ½Ìض¨µÄ·¾¶µãÇøÓò£¬²¢ÖÆÔìÒ»¸ö³¬Ê±¿Õ´©Ë͵ÄЧ¹û£¬¶ø³¬Ê±¿Õ´«ËÍÏÔʾµÄ¶¯»­ÐèÒªÓëʼþ41Á¬Óá£,0,1,107 -108=½¨Á¢Ð¡Ä¾Ïä...,0,31,0,0,0,0,1,0,0,ÔÚÌØ¶¨µÄ·¾¶µã½¨Á¢Ò»¸öÌØ¶¨ÄÚÈݵŤ¾ßľÏä¡£0½ðÇ®£¨´óµÄ£©%1 1»ñµÃËæ»úµ¥Î»%1 2Ò½ÁÆ%1 3»ñµÃÒþÐÎÄÜÁ¦%1 4±¬Õ¨%1 5±¬Õ¨£¨´óµÄ£©%1 6½ðÇ®%1 7ºÚĻ֨ÖÃ%1 8Çå³ýºÚÄ»%1 9»¤¼×¼ÓÇ¿%1 10ËٶȼÓÇ¿%1 11¹¥»÷¼ÓÇ¿%1 12»ñµÃºËµ¯Ò»Ã¶%1 13¿ÕÏä×Ó%1 14Éý¼¶%1 15¿ÕÏä×Ó%1 16ÍßË¹ÆøÌå%1 17һƬ¿ó¡£,0,1,108 -109=ÌúÄ»×°ÖÃ×÷ÓÃÓÚ...,0,4,0,0,0,0,1,0,0,½«ÌúÄ»×°ÖÃ×÷ÓÃÓÚÌØ¶¨µÄ·¾¶µã¡£,0,1,109 -110=ÓÎÏ·ÔÝÍ£(Ãë)...,0,6,0,0,0,0,0,0,0,ʹÓÎÏ·ÔÝÍ£ÌØ¶¨µÄÃëÊý¡£,0,1,110 -111=ÇýÖðÕ¼¾ÝÕß,0,0,0,0,0,0,0,0,0,±¾ÐÐΪ½«»á´Ó³ÇÊйØÁªµÄ½¨ÖþÖÐÇýÖðÕ¼¾ÝµÄ×÷Õ½µ¥Î»¡£ÒªÊ¹Óñ¾ÐÐΪ£¬±ØÐëÔÚÿһ¸ö½¨ÖþÉϹØÁªÒ»¸öµ¥¶ÀµÄ±êÇ©£¬Öظ´µÄ±êÇ©ÎÞÓá£Ä¬ÈÏÿһ¸ö´¥·¢¶ÔÓ¦Ò»¸ö±êÇ©£¬Äã¿ÉÒÔʹÓà ±à¼­¡ú±êÇ©±à¼­ À´Ôö¼ÓÕâ¸ö´¥·¢µÄ±êÇ©¡£,0,1,111 -112=Á¢¼´¾ÓÖе±Ç°ÊÓÒ°µ½Ìض¨Â·¾¶µã...,0,0,0,0,0,0,1,0,0,Á¢¼´½«Õ½ÊõÊÓÒ°ÒÆ¶¯µ½Ìض¨µÄ·¾¶µã¡£,0,1,112 -113=»¶ºô,0,2,0,0,0,0,0,0,0,ʹËùÓв½±øµ¥Î»½øÐл¶ºô¶¯×÷¡£,0,1,113 -114=ÉèÖý¨ÔìÀ¸µ½(0-3)...,0,6,0,0,0,0,0,0,0,Ç¿ÖÆÊ¹½¨ÔìÀ¸Ìø×ªµ½Ìض¨µÄ½çÃæ¡£0½¨Öþ½çÃæ%1 1·ÀÓù½çÃæ%1 2²½±ø½çÃæ%1 3³µÁ¾½çÃæ¡£,0,1,114 -115=ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»,-9,46,0,0,0,0,1,0,0,ÉÁ¶¯½¨ÔìÀ¸Öеĵ¥Î»£¬ÊýֵΪÉÁ˸ʱ¼ä£¬Ò»°ãΪ120±È½ÏºÏÊÊ¡£,0,1,115 -116=Í£Ö¹ÌØ¶¨Â·¾¶µãµÄÒôЧ...,0,30,0,0,0,0,1,0,0,Õâ¸ö´¥·¢¿ÉÒÔÍ£Ö¹ÔÚij¸ö·¾¶µã²¥·ÅµÄÒôЧ¡£,0,1,116 -117=²¥·Å¿ª³¡Ó°Æ¬(ÓÎÏ·ÔÝÍ£)...,0,50,0,0,0,0,0,0,0,ÏÔÊ¾ÌØ¶¨µÄÓÎÏ·¿ª³¡Ó°Æ¬¡£Ó°Æ¬²¥·Åʱ£¬ÓÎÏ·ÔÝÍ£¡£²¥·ÅӰƬÆÚ¼äÓÎÏ·Õß²»¿É½øÐвÙ×÷¡£,0,1,117 -118=Çå³ýÈ«²¿ÎÛȾ,0,0,0,0,0,0,0,0,0,½«´ÓµØÍ¼ÉÏɾ³ýËùÓÐÎÛȾ¶ÔÏó¡£,0,1,118 -119=½«Ìض¨×÷Õ½·½È«²¿´Ý»Ù...,0,2,6,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡¢µ¥Î»µÈ¡£ÊýֵΪ1ʱ±íʾֱ½ÓÒÆ³ýµ¥Î»²»²úÉúÈÎºÎÆÆ»µÐ§¹û¡£,0,1,119 -120=½«Ìض¨·½½¨ÖþÈ«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,´Ý»ÙÌØ¶¨×÷Õ½·½µÄËùÓн¨Öþ¡£,0,1,120 -121=½«Ìض¨·½Â½¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓн¾üµ¥Î»¡£,0,1,121 -122=½«Ìض¨·½º£¾üµ¥Î»È«²¿´Ý»Ù...,0,2,0,0,0,0,0,0,0,ÏûÃðÌØ¶¨×÷Õ½·½µÄËùÓк£¾üµ¥Î»¡£,0,1,122 -123=ÐÄÁé¿ØÖÆ»ùµØ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«»áͨ¹ýÐÄÁé¿ØÖÆµÐ·½ËùÓн¨Öþ¡£,0,1,123 -124=½â³ý»ùµØµÄÐÄÁé¿ØÖÆ...,0,2,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÖØÐÂÈ¡µÃ±»µÐ·½ÐÄÁé¿ØÖÆµÄËùÓн¨ÖþµÄ×÷Õ½¿ØÖÆÈ¨¡£,0,1,124 -125=½«½¨Öþ½¨ÓÚ...,-10,47,6,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÔÚ±¾Â·¾¶µã»ñµÃ¸ÃÀàÐ͵Ľ¨Öþ£¬Èç¹ûÄ¿±ê·¾¶µãÓн¨ÖþÔò²»»á½¨Ô죬Èç¹ûÄ¿±ê·¾¶µãÓе¥Î»Ôò»áÇ¿Ðе¯¿ªµ¥Î»¡£´Ë¶¯×÷µÄÊýÖµ²ÎÊýÓÃÓÚ¿ØÖÆÊÇ·ñ½ûÖ¹½¨Ô춯»­£¬Îª1Ôò²»²¥·Å¡£,0,1,125 -126=»Ö¸´ÖÁÓÎÏ·³õʼ½¨Öþµ¥Î»×´Ì¬...,0,2,0,0,0,0,0,0,0,´Ë×÷Õ½·½ÓÎÏ·³õʼµÄËùÓн¨ÖþºÍµ¥Î»½«»áÖØ½¨¡£»áÒýÆðµ¥Î»³å»÷ºÍ¸²¸Çͼ±»Çå³ý¡£,0,1,126 -127=³¬Ê±¿ÕʼþЧ¹û ...,0,6,0,0,0,0,0,0,0,½«»áÓöàÖ¡»­ÃæÈ«ÆÁĻƽÆÌÏÔʾ³¬Ê±¿Õ´©ËóʼþЧ¹û£¬ÊýÖµÒ»°ãΪ60£¬ÌîÌ«´ó»áÓÎÏ·¿¨ËÀ¡£,0,1,127 -128=È«²¿³¬Ê±¿Õ´«Ë͵½...,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄ×÷Õ½·½ËùÓе¥Î»½«±»´«Ë͵½Ìض¨µÄ·¾¶µã¡£,0,1,128 -129=ÉèÖó¬Îä³äÄÜÍê³É¶È,-11,20,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕßÈç¹ûÓг¬¼¶ÎäÆ÷£¬ÄÇô´Ë³¬¼¶ÎäÆ÷µÄ³äÄÜ״̬»á±»ÉèÖÃΪ¡°Íê³ÉÁË¡±°Ù·ÖÖ®¼¸ ¡£Ê¹ÓÃÒ»¸öÕûÊý(0-100)¡£,0,1,129 - -; YR -130=»Ö¸´³õʼ½¨Öþ...,0,2,0,0,0,0,0,0,0,¸Ã²ÎÕ½·½ÓÎÏ·³õʼµÄËùÓн¨Öþ½«»á±»ÐÞ¸´»òÖØ½¨¡£ »áÒýÆðµ¥Î»³å»÷ºÍ¸²¸ÇͼÇå³ý¡£,0,1,130,1 -131=ÉÁÁÁÌØ¶¨ÀàÐ͵Ľ¨Öþ...,-9,47,0,0,0,0,1,0,0,¸Ã´¥·¢ËùÊôµÄËùÓÐÌØ¶¨ÀàÐ͵Ľ¨Öþ½«ÉÁÁÁÌØ¶¨µÄʱ¼ä¡£,0,1,131,1 -132=ÉèÖó¬Îä³äÄÜʱ¼ä,-11,20,0,0,0,0,1,0,0,ÉèÖÃÈκÎÊýÖµ£¬ÉèÖô¥·¢ËùÊô·½³¬ÎäÖÁ³äÄÜÍê±ÏµÄÊ£Óàʱ¼ä£¬Ê¹Óû­ÃæÖ¡Êý(1ÓÎÏ·Ãë=15Ö¡)£¬½«»á¸²¸ÇiniÉèÖõÄRechargeTime,0,1,132,1 -133=¸´Î»³¬¼¶ÎäÆ÷³äÄÜʱ¼ä,0,20,0,0,0,0,0,0,0,ÖØÖô¥·¢ËùÊô·½³¬¼¶ÎäÆ÷³äÄÜʱ¼ä£¬Ê¹ÓÃiniÉèÖõÄRechargeTime¡£,0,1,133,1 -134=³¬¼¶ÎäÆ÷¸´Î»,0,36,0,0,0,0,0,0,0,¾ÍÓë¼äµý½øÈ볬¼¶ÎäÆ÷Ò»Ñù£¬³¬¼¶ÎäÆ÷½«»á¸´Î»(ÖØÐ¿ªÊ¼µ¹¼ÆÊ±)¡£,0,1,134,1 -135=³¬ÎäÊ×ѡĿ±ê·¾¶µã...,0,0,0,0,0,0,1,0,0,¸Ã´¥·¢µÄËùÓÐÕ߻Ὣ³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±êÖ¸Ïò´Ë·¾¶µã¡£,0,1,135,1 -136=³¬ÎäÊ×ѡĿ±ê·¾¶µãÇå³ý,0,0,0,0,0,0,0,0,0,¸Ã´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬Õý³£È·¶¨Æä³¬¼¶ÎäÆ÷µÄ¹¥»÷Ä¿±ê¡£,0,1,136,1 -137=»ùµØÖÐÐĵ¥ÔªÉèÖÃ,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«ÈÏΪ´Ë·¾¶µãΪÆä»ùµØµÄÖÐÐĵ¥Ôª£¬½Å±¾Àï¡°¼¯ºÏÔÚ»ùµØ¸½½ü¡±½«»á¼¯ºÏÔÚÕâ¸ö·¾¶µã¸½½ü¡£,0,1,137,1 -138=»ùµØÖÐÐĵ¥ÔªÇå³ý,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Ø£¬²¢È¥¼ÆËãÆäÖÐÐÄλÖá£,0,1,138,1 -139=À×´ïÐÅÏ¢ÖжÏ,0,6,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕßµÄÀ״ォÖжÏÒ»¶Îʱ¼ä£¬Ìî̫С»áûÓÐЧ¹û¡£,0,1,139,1 -140=ÉèÖ÷ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,1,0,0,´Ë´¥·¢µÄËùÓÐÕß½«×Ô¶¯¶ÔÌØ¶¨µÄ·¾¶µãÇøÓò½øÐзÀÓùÐж¯¡£,0,1,140,1 -141=Çå³ý·ÀÓùÄ¿±êµ¥Ôª,0,0,0,0,0,0,0,0,0,´Ë´¥·¢µÄËùÓÐÕß½«·µ»Øµ½Õý³£Çé¿öϵķÀÓùÄ¿±êÇøÓò¡£,0,1,141,1 -142=ÖØ»æºìÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄºìÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,142,1 -143=ÖØ»æÂÌÉ«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÂÌÉ«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,143,1 -144=ÖØ»æÀ¶É«,0,6,0,0,0,0,0,0,0,ÖØ»æÆÁÄ»µÄÀ¶É«²¿·Ö¡£²ÉÓðٷֱȣ¬ÕâÀïµÄ50´ú±í¹âÕÕÀïµÄ0.5¡£ÐÐΪ71~73Á¬ÓÃ+ÐÐΪ142~144Á¬ÓÿÉÒÔ×ö³ö±ä¸ü¹âÕÕЧ¹û¡£,0,1,144,1 -145=Õ½ÊõÊÓÒ°Ìø×ªÖÁ»ùµØ,0,0,0,0,0,0,0,0,0,ºÍ°´Ï¡°H¡±¼üЧ¹ûÏàͬ¡£,0,1,145,1 -;bellow only added in hares -146=ʹ²½±øµ¥Î»½øÈ뾪¿Ö״̬,0,2,0,0,0,0,0,0,0,ʹָ¶¨×÷Õ½·½ËùÓеIJ½±øµ¥Î»½øÈ뾪¿Ö¶¯×÷״̬£¨Èç¹ûÖ§³Ö£©,0,1,146,1 -147=ÔÚÕ½³¡ÇøÓòÈ«ÆÁÆÌÕ¹»æÖƶ¯»­,0,25,6,0,0,0,0,0,0,ÔÚÆÁÄ»¹Ì¶¨Î»ÖÃÆ½ÆÌ»æÖƶà֡ͼÏñ,0,1,147,1 -148=ÔÊÐí/½ûÖ¹ËùÊô·½¹²ÏíÊÓÒ°,0,2,15,0,0,0,0,0,0,ÔÊÐí/½ûÖ¹Ö¸¶¨ËùÊô·½¹²ÏíÊÓÒ°¸øÓÑ·½,0,1,148,1 -149=ÉèÖô¥·¢Ëæ»ú·ÖÁ¿,-2,14,6,0,0,0,0,0,0,ÉèÖÃÖ¸¶¨´¥·¢µÄËæ»ú·ÖÁ¿£¬ÓëÐÐΪ150ÅäºÏʹÓ㻸ºÊý²»»á¸ü¸Ä´¥·¢µÄ·ÖÁ¿£¬¿ÉÓÃÓÚÐÐΪ150ÂÞÁÐʼþʹÓá£,0,1,149,1 -150=Ëæ»úÔÊÐíÏÂÁд¥·¢,0,0,0,0,0,0,0,0,0,½«¸ÃÐÐΪ£¨´ÓÊôÓÚµ±Ç°´¥·¢Ê¼þ£©ÒÔϵĶà¸öÐÐΪËùÖ¸¶¨µÄ´¥·¢°´ÕÕ·ÖÁ¿Ëæ»ú³éÈ¡£¬²¢½«Æä½ûֹ״̬¸ÄΪÔÊÐí£¬ÓëÐÐΪ149ÅäºÏʹÓá£,0,1,150,1 -151=½¨ÖþÅÚËþת¶¯,0,6,15,0,0,0,0,0,0,½«´¥·¢°ó¶¨µÄ½¨Öþת¶¯ÆäÅÚËþÌØ¶¨·½Ïò£¬Èç¹û²¼¶ûÖµÎªÕæ£¬Ôò±íʾÕâ¸öת¶¯Á¿ÊÇ0-255Ö®¼äµÄ¾ø¶Ô·½ÏòÊý,0,1,151,1 -152=È«²¿¹éÈëС¶Ó...,-1,7,2,0,0,0,0,0,0,×÷Õ½·½%1È«²¿µ¥Î»±»Ç¿ÖÆÕÐļ½øÖ¸¶¨Ð¡¶ÓÀàÐÍ¡£ÕâЩµ¥Î»½«±»Õâͬһ¸öС¶ÓʵÀý¹ÜÀí¡£,0,1,152 -153=¿ØÖÆ´æµµ°´Å¥¿ÉÓÃÐÔ,0,15,0,0,0,0,0,0,0,¿ØÖÆ´æµµ°´Å¥ÊÇ·ñΪÔÊÐí/½ûֹ״̬,0,1,153,1 -154=ÉèÖòÎÕ½·½µØÍ¼±ß½ç,0,6,0,0,0,0,0,0,0,ÉèÖòÎÕ½·½µÄµØÍ¼±ß½ç£¬½öÄÜΪ0-4Ö®¼äµÄÒ»¸öö¾ÙÖµ,0,1,154,1 - [BridgesTS] [BridgesRA2] @@ -1450,4 +1914,4 @@ ExtraValueType=0 [SpecialOverlayRA2] -[IgnoreTerrainRA2] \ No newline at end of file + diff --git a/Supplementary/RevengeNow/README.md b/Supplementary/RevengeNow/README.md index 49bed0d2..3f0b7351 100644 --- a/Supplementary/RevengeNow/README.md +++ b/Supplementary/RevengeNow/README.md @@ -7,21 +7,11 @@ ## 包å�«æ–‡ä»¶æ¸…å�• 1. **`FAData.ini`**: - - 直接移æ¤�自 `YR_RN_Mission_Editor/MissionEditor/data/FinalAlert2/FAData.ini`(ä¿�留了原作者 Zero Fanker 的全套 RN 专属定制)。 - - 包å�« RN 专属å°�节与模æ�¿ï¼š - - `[Sides]`(安塔列星等 12 个阵è�¥åˆ†ç±»å®šä¹‰ï¼‰ - - `[GameModes]`(标准作战ã€�混战ã€�淘金热ã€�攻城拔寨等 RN 模å¼�) - - `[ForceUnitPalettePrefix]` - - `[ScriptTemplates]`(巡逻ã€�å�¸è½½æ”»å‡»ç­‰è„šæœ¬æ¨¡æ�¿ï¼‰ - - `[TeamTemplates]`(空é™�部队ã€�AI 生产å°�队ã€�çª�击å°�队等队ä¼�模æ�¿ï¼‰ - - `[Customizations]` 与 `[Debug]`(å�•å�‘éš§é�“支æŒ�ã€�轨é�“逻辑开å�¯ç­‰ï¼‰ - - 仅增加了与目标编辑器ä¿�存对é½�所需的 3 项ä¿�åº�é…�置: + - 基于 FA2sp 原生默认的 `Supplementary/FAData.ini` 构建,完整ä¿�留了所有现代组件ã€�包å�«å¼•用(`[Include]`)与物件æµ�览器é…�置(`[ExtConfigs]`)。 + - 默认å�¯ç”¨äº†é�¢å�‘ RN 对é½�ä¿�存所需的 3 项ä¿�åº�é…�置: - `SaveMap.PreserveINISorting=true`:ä¿�存地图时ä¿�æŒ�所有 INI å°�节原有的出现顺åº�。 - `SaveMap.PreserveINIKeySorting=true`:ä¿�存地图时ä¿�æŒ�å°�节内部键值对(Key=Value)原有的出现顺åº�(ä¸�å†�按字典/字符串长度排åº�)。 - `SaveMap.KeepComments=true`:ä¿�存地图时ä¿�留注释。 - - **ä¸�包å�«ä»»ä½• Phobos 扩展特性**。 -2. **`TileGroups.ini`**: - - ç§»æ¤�自 `YR_RN_Mission_Editor/dist/FinalRevenge/TileGroups.ini`(注:FA2sp 原生未接入该地形分组é…�置,仅供å�‚考ä¿�留)。 --- diff --git a/Supplementary/RevengeNow/TileGroups.ini b/Supplementary/RevengeNow/TileGroups.ini deleted file mode 100644 index d2f3d01a..00000000 --- a/Supplementary/RevengeNow/TileGroups.ini +++ /dev/null @@ -1,113 +0,0 @@ -;===Terrain Sorts=== -;Set Enable=yes to allow -;The Combobox's count is determined by Counts -;X=GroupName, MemberCounts(n), Member_1 Name, Member_1 ID, Member_2 Name, Member_2 ID..., Member_n Name, Member_n ID - -;By prry -[TerrainTemperate] -Enable=yes -Counts=13 -1=地表(野地),10,è�‰åœ°,0000,暗色è�‰åœ°,0013,暗色è�‰åœ°äº¤ç•Œ,0014,碎石è�‰åœ°,0033,碎石è�‰åœ°äº¤ç•Œ,0034,沙地,0041,沙地交界,0042,水泥路é�¢,0046,水泥交界A,0039,水泥交界B,0094 -2=地表(城市),2,城市水泥路é�¢,0093,水泥地表,0038 -3=地表(地表装饰),1,农田,0035 -4=æ–œå�¡,2,è�‰åœ°æ–œå�¡,0009,è�‰åœ°æ–œå�¡è¡¥å……,0043 -5=æ°´é�¢(海岸线,沙滩),6,æ°´é�¢,0021,沙滩水岸,0012,浅水碎石路,0076,水泥海岸线A,0082,水泥海岸线B,0083,亚利桑那å�·æ²‰èˆ¹,0081 -6=城市高å�°,0 -7=自然山脉,10,山脉,0010,山脉斜å�¡è¾¹ç¼˜,0025,å�¯æ‘§æ¯�悬崖,0103,水上山脉,0015,山脉瀑布(左下),0030,山脉瀑布(å�³ä¸‹),0049,山脉瀑布(å�³ä¸Š),0050,山脉瀑布(左上),0051,溶洞(左下),0057,溶洞(å�³ä¸‹),0095 -8=山脉边缘,2,山脉斜å�¡è¾¹ç¼˜,0025,å�¯æ‘§æ¯�悬崖,0103 -9=é�“路一览,9,高速公路,0020,高速公路护æ �,0097,高速公路分界+斑马线,0040,高速公路尽头,0036,高速公路斜å�¡,0047,土路弯é�“,0016,土路分支,0017,土路直é�“,0018,土路斜å�¡,0023 -10=éš§é�“,6,高速公路隧é�“,0053,è�‰åœ°éš§é�“,0073,水上隧é�“,0092,é“�路隧é�“,0087,éš§é�“护墙,0054,水上隧é�“护墙,0099 -11=é“�è·¯,5,é“�路斜å�¡,0086,é“�è·¯/公路交汇,0088,é“�路分支,0089,é“�路交汇,0090,桥下é“�路修正,0184 -12=桥头,3,城市高速公路桥头,0019,高架木桥头,0080,高架é“�路桥头,0104 -13=ç›´å�‡æœºå�ª,1,ç›´å�‡æœºå�ª,0102 - -;By Nepgear(WF) -[TerrainSnow] -Enable=yes -Counts=14 -1=城市高å�°,22,城市高å�°èƒŒé�¢A,0106,城市高å�°A,0107,城市高å�°B,0108,城市高å�°C,0109,城市高å�°D,0110,城市高å�°èƒŒé�¢B,0111,城市高å�°æ–œå�¡è¾¹ç¼˜A,0112,城市河堤A,0113,城市河堤B,0114,城市河堤C,0115,城市河堤D,0116,城市河堤E,0117,城市水闸A,0140,城市水闸B,0141,城市瀑布A,0163,城市瀑布B(背é�¢),0164,城市瀑布C,165,城市河堤F,0149,城市高å�°E,0150,城市瀑布A,0163,城市瀑布B(背é�¢),0164,城市瀑布C,0165 -2=自然山脉,13,山脉,0010,水上山脉,0015,山脉瀑布(左下),0030,山脉瀑布(å�³ä¸‹),0035,山脉瀑布(å�³ä¸Š),0036,山脉瀑布(左上),0037,溶洞(左下),0083,冰å·�溶洞(左下),0085,溶洞(å�³ä¸‹),0137,冰å·�溶洞(å�³ä¸‹),0139,冰å·�山脉,0075,水上冰å·�山脉,0079,冰å·�山脉补角,0082 -3=地表(野地),11,雪地,0000,è�‰åœ°,0013,è�‰åœ°äº¤ç•Œ,0014,污浊雪地,0062,污浊雪地交界,0063,冰é�¢,0064,冰é�¢äº¤ç•Œ,0065,水泥路é�¢,0068,水泥路é�¢äº¤ç•Œ,0070,水泥路é�¢äº¤ç•ŒC,0130,雪地/è�‰åœ°äº¤ç•Œ,0131 -4=地表(城市交界),8,水泥地表,0069,城市水泥路é�¢,0097,城市è�‰åœ°,0127,水泥路é�¢äº¤ç•ŒA,0120,水泥路é�¢äº¤ç•ŒB,0121,红色人行é�“,0135,人行é�“/水泥交界A,0136,人行é�“/水泥交界B,0172 -5=地表(城市地表装饰),5,农田,0040,å�œè½¦åœº+城市广场A,0134,å�œè½¦åœº+城市广场B,0148,城市æ¤�æ ‘å�‘,0162,å�œè½¦åœº+城市广场C,0171 -6=æ°´é�¢(海岸线,沙滩),10,结冰水岸,0012,æ°´é�¢,0021,浅水结冰路,0072,水泥海岸线A,0087,水泥海岸线,0088,水上废墟A,0145,水上废墟B,0146,水泥海岸线C,0151,水泥海岸线D,0152,æ��浅的油轮,0159 -7=é�“è·¯,16,土路(弯é�“),0016,土路(分支),0017,土路(ç›´é�“),0018,高速公路,0020,高速公路尽头,0038,高速公路分界+人行é�“,0071,土路斜å�¡,0023,高速公路斜å�¡,0044,è¡—é�“(弯é�“),0103,è¡—é�“(分支),0104,è¡—é�“(ç›´é�“),0105,è¡—é�“æ–œå�¡,0128,高速公路/è¡—é�“分支,0129,高速公路弯é�“,0132,高速公路尽头B(城市),0133,高速公路护æ �,0142 -8=éš§é�“,8,高速公路隧é�“A,0047,éš§é�“护墙,0048,é“�路隧é�“,0093,éš§é�“,0100,高速公路隧é�“B,0101,水泥隧é�“护墙,0102,水上隧é�“,0118,水上隧é�“护墙,0119 -9=é“�è·¯,6,é“�路斜å�¡,0092,é“�路隧é�“,0093,é“�è·¯/公路交汇处,0094,é“�路分支,0095,é“�路交汇处,0096,桥下é“�路修正,0143 -10=å�œè½¦åœº,5,å�œè½¦åœº+城市广场C,0171,å�œè½¦åœºè¾¹ç•ŒB,0170,å�œè½¦åœºè¾¹ç•ŒA,0169,å�œè½¦åœº+城市广场B,0148,å�œè½¦åœº+城市广场A,0134 -11=山脉/高å�°è¾¹ç¼˜,5,山脉斜å�¡è¾¹ç¼˜,0025,冰å·�æ–œå�¡è¾¹ç¼˜,0077,城市高å�°æ–œå�¡è¾¹ç¼˜A,0112,城市高å�°æ–œå�¡è¾¹ç¼˜B,0124,å�¯æ‘§æ¯�悬崖,0173 -12=桥头,3,高架公路桥头,0019,高架木桥头,0073,高架é“�路桥头,0174 -13=æ–œå�¡,6,雪地斜å�¡,0009,土路斜å�¡,0023,é“�路斜å�¡,0092,水泥斜å�¡,0098,è¡—é�“æ–œå�¡,0128,高速公路斜å�¡,0044 -14=æ�‚项,3,飞机残骸,0074,冰å·�裂ç¼�,0081,ç›´å�‡æœºå�ª,0147 - -;By prry -[TerrainUrban] -Enable=yes -Counts=14 -1=地表(野地),0 -2=地表(城市,交界),14,水泥路é�¢,0000,水泥地表,0038,碎石水泥路é�¢,0033,红色人行é�“,0046,泥地,0013,城市è�‰åœ°,0041,æ°´æ³¥/红砖交界A,0104,æ°´æ³¥/红砖交界B,0102,城市è�‰åœ°/红砖交界A,0109,城市è�‰åœ°/红砖交界B,0103,æ°´æ³¥/城市è�‰åœ°äº¤ç•ŒA,0080,æ°´æ³¥/城市è�‰åœ°äº¤ç•ŒB,0087,泥地交界A(水泥,红砖),0111,泥地交界B(与街é�“边缘),0143 -3=地表(地表装饰),9,城市广场A(å�œè½¦åœº+è¶³ç�ƒåœº+泳池),0035,城市广场B(å�œè½¦åœº+泳池),0142,城市广场C,0150,废墟,0082,体育馆废墟,0105,å�Žç››é¡¿å€’影池,0081,棒ç�ƒåœº,0088,自由女神åƒ�底座,0089,城市æ¤�æ ‘å�‘,0139 -4=æ–œå�¡,3,水泥斜å�¡,0009,水泥斜å�¡è¡¥å……,0043,泥地斜å�¡,0140 -5=æ°´é�¢(海岸线),7,æ°´é�¢,0021,水泥海岸线A,0106,水泥海岸线B,0110,河堤海岸线交界,0107,æµ…æ°´è�‰åœ°è·¯,0090,水上废墟A(左上),0108,水上废墟B(å�³ä¸‹),0135 -6=城市高å�°,20,城市高å�°A,0010,城市高å�°B,0076,城市高å�°C,0120,城市高å�°æ–œå�¡è¾¹ç¼˜,0025,城市河堤A,0015,城市河堤B,0078,城市河堤C,0122,城市高å�°ä¿®æ­£,0085,河堤海岸线交界,0107,河堤è�‰åœ°äº¤ç•ŒA,0083,河堤è�‰åœ°äº¤ç•ŒB,0148,城市水闸A,0124,城市水闸B,0126,城市瀑布(左下),0030,城市瀑布(å�³ä¸‹),0049,城市瀑布(å�³ä¸Š),0050,城市瀑布(左上),0051,城市瀑布A,0144,城市瀑布B(背é�¢),0146,城市瀑布C,0148 -7=自然山脉,0 -8=高å�°è¾¹ç¼˜,1,城市高å�°æ–œå�¡è¾¹ç¼˜,0025 -9=é�“路一览,11,高速公路,0020,高速公路护æ �,0128,高速公路分界+斑马线,0040,高速公路尽头,0036,高速公路弯é�“,0136,高速公路/è¡—é�“交界,0137,高速公路斜å�¡,0047,è¡—é�“弯é�“,0016,è¡—é�“分支,0017,è¡—é�“ç›´é�“,0018,è¡—é�“æ–œå�¡,0023 -10=éš§é�“,4,高速公路隧é�“,0053,水上隧é�“,0130,é“�路隧é�“,0116,水上隧é�“护墙,0131 -11=é“�è·¯,6,é“�路斜å�¡(城市),0115,é“�路斜å�¡(泥地),0141,é“�è·¯/公路交汇,0117,é“�路分支,0118,é“�路交汇,0119,桥下é“�路修正,0129 -12=å�œè½¦åœº,7,å�œè½¦åœº,0142,å�œè½¦åœºè¾¹ç•Œ,0151,ç›´å�‡æœºå�ª,0138,高速公路,0020,高速公路分界+斑马线,0040,高速公路护æ �,0128,桥下é“�路修正,0129 -13=桥头,3,高速公路桥头,0019,高架木桥头,0101,高架é“�路桥头,0152 -14=ç›´å�‡æœºå�ª,1,ç›´å�‡æœºå�ª,0138 - -;By Nanhua -[TerrainNewurban] -Enable=yes -Counts=14 -1=地表(野地),9,è�‰åœ°,0000,暗色è�‰åœ°,0013,暗色è�‰åœ°äº¤ç•Œ,0014,碎石è�‰åœ°,0033,碎石è�‰åœ°äº¤ç•Œ,0034,沙地,0041,沙地交界,0042,水泥交界A,0122,水泥交界B,0178 -2=地表(城市,交界),17,城市水泥路é�¢,0114,水泥地表,0038,红色人行é�“,0046,è�‰åœ°/水泥交界A,0080,è�‰åœ°/水泥交界B,0087,è�‰åœ°/红砖交界A,0109,è�‰åœ°/红砖交界B,0103,æ°´æ³¥/红砖交界A,0104,æ°´æ³¥/红砖交界B,0102,泥地,0123,城市è�‰åœ°,0124,城市è�‰åœ°/红砖交界A,0139,城市è�‰åœ°/红砖交界B,0132,城市è�‰åœ°/水泥交界A,0138,城市è�‰åœ°/水泥交界B,0133,泥地交界A(水泥,红砖),0156,泥地交界B(与街é�“边缘),0196 -3=地表(地表装饰),10,城市广场A(+å�œè½¦åœºï¼Œè¶³ç�ƒåœºï¼Œæ³³æ± ),0035,农田(è¶³ç�ƒåœº+å�œè½¦åœº),0142,å�œè½¦åœº,0195,å�Žç››é¡¿å€’影池A(è�‰åœ°),0081,å�Žç››é¡¿å€’影池B(城市),0144,棒ç�ƒåœºA(è�‰åœ°),0088,棒ç�ƒåœºB(城市),0131,自由女神åƒ�底座A(è�‰åœ°),0089,自由女神åƒ�底座B(城市),0134,城市æ¤�æ ‘å�‘,0192 -4=æ–œå�¡,3,è�‰åœ°æ–œå�¡,0009,泥地斜å�¡,0193,水泥斜å�¡,0117 -5=æ°´é�¢(海岸线,沙滩),10,æ°´é�¢,0021,沙滩水岸,0012,浅水碎石路,0090,水泥海岸线A,0106,水泥海岸线B,0120,河堤海岸线交界,0107,è�‰åœ°æ°´å²¸,0129,æµ…æ°´è�‰åœ°è·¯,0145,水上废墟A(左上),0108,水上废墟B(å�³ä¸‹),0189 -6=城市高å�°,16,城市高å�°A,0010,城市高å�°B,0076,城市高å�°C,0172,城市高å�°æ–œå�¡è¾¹ç¼˜,0025,城市河堤A,0015,城市河堤B,0078,城市河堤C,0174,城市高å�°ä¿®æ­£,0085,河堤沙滩交界,0083,河堤海岸线交界,0107,河堤è�‰åœ°äº¤ç•ŒA,0146,河堤è�‰åœ°äº¤ç•ŒB,0148,城市水闸,0181,城市瀑布A,0197,城市瀑布B(背é�¢),0199,城市瀑布C,0201 -7=自然山脉,11,山脉,0110,山脉斜å�¡è¾¹ç¼˜,0115,滑å�¡æ‚¬å´–,0056,å�¯æ‘§æ¯�悬崖,0206,水上山脉,0112,山脉瀑布(左下),0030,山脉瀑布(å�³ä¸‹),0049,山脉瀑布(å�³ä¸Š),0204,山脉瀑布(左上),0205,溶洞(左下),0153,溶洞(å�³ä¸‹),0179 -8=山脉边缘,4,城市高å�°æ–œå�¡è¾¹ç¼˜,0025,滑å�¡æ‚¬å´–,0056,山脉斜å�¡è¾¹ç¼˜,0115,å�¯æ‘§æ¯�悬崖,0206 -9=é�“路一览,17,高速公路,0020,高速公路护æ �,0183,高速公路分界+斑马线,0040,高速公路尽头A(自然),0036,高速公路尽头B(城市),0137,高速公路弯é�“,0140,高速公路/土地交界,0141,高速公路/è¡—é�“交界,0190,高速公路斜å�¡,0047,è¡—é�“弯é�“,0016,è¡—é�“分支,0017,è¡—é�“ç›´é�“,0018,è¡—é�“æ–œå�¡,0023,土路弯é�“,0125,土路分支,0126,土路直é�“,0127,土路斜å�¡,0128 -10=éš§é�“,8,高速公路隧é�“(毫无å�µç”¨),0053,高速公路隧é�“,0177,è�‰åœ°éš§é�“,0176,水上隧é�“,0168,é“�路隧é�“,0163,éš§é�“护墙(è�‰åœ°),0054,éš§é�“护墙(城市),0152,水上隧é�“护墙,0186 -11=é“�è·¯,10,é“�路斜å�¡(è�‰åœ°),0162,é“�路斜å�¡(城市),0167,é“�路斜å�¡(泥地),0194,é“�è·¯/公路交汇A,0164,é“�路分支A,0165,é“�路交汇A,0166,é“�è·¯/公路交汇B,0169,é“�路分支B,0170,é“�路交汇B,0171,桥下é“�路修正,0184 -12=å�œè½¦åœº,7,å�œè½¦åœº,0195,å�œè½¦åœºè¾¹ç•Œ,0203,ç›´å�‡æœºå�ª,0191,高速公路,0020,高速公路分界+斑马线,0040,高速公路护æ �,0183,桥下é“�路修正,0184 -13=桥头,5,城市高速公路桥头,0019,高架公路桥头,0158,金门大桥桥头(左上),0121,金门大桥桥头(å�³ä¸Š),0155,高架é“�路桥头,0207 -14=é“�ä¸�网直å�‡æœºå�ª,3,é“�ä¸�网(è�‰åœ°+城市),0119,é“�ä¸�网(城市è�‰åœ°),0130,ç›´å�‡æœºå�ª,0191 - -;By prry -[TerrainLunar] -Enable=yes -Counts=13 -1=地表(野地),11,月é�¢,0000,暗色月é�¢,0013,暗色月é�¢äº¤ç•Œ,0014,月ç�ƒç¢ŽçŸ³,0033,月ç�ƒç¢ŽçŸ³äº¤ç•Œ,0034,碎石月é�¢,0041,碎石月é�¢äº¤ç•Œ,0042,细沙地é�¢,0091,细沙地é�¢ä¿®æ­£,0092,水泥路é�¢,0046,水泥路é�¢äº¤ç•Œ,0039 -2=地表(城市),0 -3=地表(地表装饰),3,陨石å�‘,0082,登月舱,0083,月表裂ç¼�,0084 -4=æ–œå�¡,1,月ç�ƒæ–œå�¡,0009 -5=æ°´é�¢(海岸线,沙滩),2,冰é�¢,0118,结冰水岸,0119 -6=城市高å�°,0 -7=自然山脉,3,山脉,0085,山脉斜å�¡è¾¹ç¼˜,0085,å�¯æ‘§æ¯�悬崖,0113 -8=山脉边缘,2,山脉斜å�¡è¾¹ç¼˜,0085,å�¯æ‘§æ¯�悬崖,0113 -9=é�“路一览,7,高速公路,0105,高速公路尽头,0106,高速公路斜å�¡,0107,月ç�ƒç—•迹弯é�“,0086,月ç�ƒç—•迹分支,0087,月ç�ƒç—•迹直é�“,0088,月ç�ƒç—•迹斜å�¡,0089 -10=éš§é�“,4,星际跑é�“éš§é�“,0102,月ç�ƒéš§é�“,0176,月ç�ƒéš§é�“ä¾§å£�,0101,星际轨é�“éš§é�“,0108 -11=é“�è·¯,3,星际轨é�“æ–œå�¡,0109,星际轨é�“交汇,0164,桥下星际轨é�“修正,0110 -12=桥头,0 -13=太空,4,太空,0115,太空元素,0116,浮空山脉,0117,浮空洞穴,0124 - -;By Nepgear(WF) -[TerrainDesert] -Enable=yes -Counts=11 -1=地表,11,内容1,0000,内容2,0009,内容3,0012,内容4,0013,内容5,0033,内容6,0038,内容7,0041,内容8,0046,内容9,0076,内容10,0107,内容11,0108 -2=æ°´,4,内容1,0012,内容2,0021,内容3,0076,内容4,0081 -3=山脉,5,内容1,0010,内容2,0025,内容3,0054,内容4,0056,内容5,0119 -4=山脉(水é�¢,8,内容1,0082,内容2,0083,内容3,0084,内容4,0085,内容5,0086,内容6,0087,内容7,0109,内容8,0114 -5=公路å�Šå‘¨è¾¹,10,内容1,0019,内容2,0020,内容3,0036,内容4,0040,内容5,0047,内容6,0080,内容7,0104,内容8,0111,内容9,0112,内容10,0123 -6=é“�è·¯,7,内容1,0102,内容2,0103,内容3,0104,内容4,0105,内容5,0106,内容6,0112,内容7,0120 -7=å�„ç§�æ–œå�¡,4,内容1,0009,内容2,0023,内容3,0025,内容4,0047 -8=桥头ã€�尽头ã€�éš§é�“,8,内容1,0019,内容2,0036,内容3,0053,内容4,0073,内容5,0080,内容6,0103,内容7,0113,内容8,0120 -9=弯é�“,3,内容1,0016,内容2,0017,内容3,0018 -10=海岸线,2,内容1,0097,内容2,0098 -11=其它ã€�建筑,2,内容1,0035,内容2,0118 From 2f5681d7e64701635a150bbaab711631b47fefbd Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 19:51:04 -0400 Subject: [PATCH 13/24] fix(rn): integrate full RN triggers/actions/scripts and set SaveMap.KeepComments=false --- Supplementary/RevengeNow/FAData.ini | 2008 ++++++++++++++++++++++----- Supplementary/RevengeNow/README.md | 11 +- 2 files changed, 1680 insertions(+), 339 deletions(-) diff --git a/Supplementary/RevengeNow/FAData.ini b/Supplementary/RevengeNow/FAData.ini index 28d62b9f..dd43d9cc 100644 --- a/Supplementary/RevengeNow/FAData.ini +++ b/Supplementary/RevengeNow/FAData.ini @@ -1,7 +1,6 @@ -; FAData.ini - Data file for FinalAlert 2: Yuri's Revenge (tm) -; This file offers data for FinalAlert 2 +; FAData.ini - Revenge Now (RN) Configured for FA2sp +; Includes RN custom sides, game modes, palettes, trigger actions, events, scripts, and templates -; Debug section: use carefully! [Debug] ;DisplayAllOverlay=true ; Doesn't cripple the overlay list in any way EnableTrackLogic=true ; Enables Track Logic @@ -9,11 +8,11 @@ EnableTrackLogic=true ; Enables Track Logic AllowTunnels=true ; Enables tunnel editing ; Recursive inclusion is not supported + [Include] 0=FAData_RandomPlacement.ini 1=FAData_ObjectBrowser.ini -2=FAData_TriggerAndScript.ini -3=FAData_Customized.ini +2=FAData_Customized.ini [ExtConfigs] ; BOOLEAN ; Enables the redesigned ObjectBrowserView @@ -246,15 +245,15 @@ SaveMap.FileEncodingComment=true ; BOOLEAN ; Keep existing comments when saving maps, ini editor can also save and display comments ; BOOLEAN ; ä¿�存地图时ä¿�留注释, ini编辑器也å�¯ä»¥ä¿�存并显示注释 -SaveMap.KeepComments=true +SaveMap.KeepComments=false ; BOOLEAN ; Preserve existing INI section order when saving maps ; BOOLEAN ; ä¿�存地图时维æŒ�已有的 ini å°�节顺åº� -SaveMap.PreserveINISorting=true +SaveMap.PreserveINISorting=true ; BOOLEAN ; Preserve existing INI key order within sections when saving maps ; BOOLEAN ; ä¿�存地图时维æŒ�å°�节内已有的 ini 键值顺åº� -SaveMap.PreserveINIKeySorting=true +SaveMap.PreserveINIKeySorting=true ; Number of recent maps to remember; range 4-9 ; 记录多少个最近打开地图, å�–值范围为4-9 @@ -874,6 +873,1536 @@ PasteShowOutline=true ; The second item separated by commas ; represents the name saved in the map file ; under [Map] -> Theater=. + +[Customizations] +AnimationListID=OrderedAnimations +DefaultGameMode=standard +DefaultMinPlayers=2 +SaveMapExtensionOverride=no +SaveMapExtensionDefault=.map + + +[Sides] +0=Allied +1=Soviet +2=Yuri +3=安塔列星 +4=科技功能建筑,1 +5=地标建筑类,1 +6=大城市建筑,1 +7=中å°�城市建筑,1 +8=æ�‘庄建筑,1 +9=工业建筑,1 +10=å°�型装饰摆件,1 +11=中立特殊建筑,1 + + +[GameModes] +standard=标准作战 +teamgame=å°�队è�”盟 +freeall=混战 +cooperative=å�ˆä½œä»»åŠ¡ +duel=抢地盘 +navalwar=海战 +meatgrind=生死斗 +megawealth=巨富 +manymoney=淘金热 +fortresswar=攻城拔寨 +testside=å¼€å�‘者ä¹�å›­ +airwar=(无效)空战 +nukewar=(无效)核战 + + +[ForceUnitPalettePrefix] +0=TIBTRE + + +[ForceIsoPalettePrefix] + +;===ScriptTemplates=== +;X=UIName, Name, Count, Key 1 ,Value 1 , Key 2 ,Value 2 , ..., Key Count ,Value Count +;EMPTY will be considered as a CONST, with it FA2Copy will ignore the value + +;By prry + +[VehicleVoxelTurretsRA2Disabled] +;DISKX=-10 +;DISKY=-10 +;YTNKY=-30 +SREFX=4 +SREFY=3 + + +[IgnoreArtImage] +BFRT=1 +CAML=1 + +CAML=yes + +; hacks for shore pieces +; shore id_pos=iswater +; pos: count from left top to right, then next "row" + +; RA2 only needs one fix (for URBAN specifically) + +[IgnoreSuperAnim1] + + + +[IgnoreSuperAnim2] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + + +[IgnoreSuperAnim3] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + + +[IgnoreSuperAnim4] +NAMISL=1 +NAMISL2=1 +NAMISL3=1 +NAIRON=1 +GACSPH=1 +YAGNTC=1 +YAPPET=1 + +; fix for building list: + +[GTGCAN] +AIBasePlanningSide=0 + + +[YACOMD] +AIBasePlanningSide=2 + + +[YADEPT] +AIBasePlanningSide=0 + + +[NASPYB] +AIBasePlanningSide=2 + +; rename list for objects. ObjectID=StringID + +[Rename] + + +[IgnoreRA2] +0=GAARMORY +1=APACHE +2=DeathDummy +3=WEEDGUY +4=GADUMY +5=NAWAST +6=GARADR +7=CAIRSFGL +8=CALIT01E +9=CALIT01N +10=CALIT01S +11=CALIT01W +12=CALIT03E +13=CALIT03N +14=CALIT03S +15=CALIT03W +16=CALIT02L +17=CALIT02R +18=NAHPAD +19=CAEURO01 +20=CACITY01 +21=CACITY02 +22=CACITY03 +23=CACITY04 +24=CITY06 +25=CITY05 +26=CITY04 +27=CITY03 +28=CITY02 +29=CITY01 +30=CAARMR +31=TREE29 +32=TREE30 +33=CANEWY05 +34=REDLAMP +35=GRENLAMP +36=BLUELAMP +37=YELWLAMP +38=PURPLAMP +39=INORANLAMP +;40=NEGLAMP ; NEGLAMP added again, invisible in game +41=NEGRED +42=TSTLAMP +43=CAPOL01E +44=CAPOL01N +45=CAPOL01S +46=CAPOL01W +47=CASIN01E +48=CASIN01N +49=CASIN01W +50=CASIN01S +51=GAGREEN +52=GALITE +53=CARGOPLANE +; 54=CAHOSP +55=XCOMET +56=CAKRMW +57=CAFNCB +58=CAFNCW +59=CAFNCP +60=CR1 +61=CR2 +62=CR3 +63=CR4 +64=CR5 +65=CR6 +66=BURN01 +67=BURN02 +68=BURN03 +69=BURN04 +70=BURN05 +71=BURN06 +72=BURN07 +73=BURN08 +74=BURN09 +75=BURN10 +76=BURN11 +77=BURN12 +78=BURN13 +79=BURN14 +80=BURN15 +Another one :) =BURN16 +82=CASYDN01 +83=CATIME +84=CALOND02;? +;85=CAMORR01 +;86=CAMORR02 +;87=CAMORR03 +;88=CAEGYP06 +;89=CAMORR04 +;90=CAEGYP04 +;91=CAEGYP05 +;92=CALA06 + +97=DNOB;? +98=GAWRONG +99=CALA02;? +100=CAMOON01 +;101=CAEGYP01 +102=UTNK +103=YDUM +104=WWLF +105=YADOG +106=YDOG +107=SMON +108=CMON +109=YADEPT +110=CALOND06;? +;111=TREE32 + +; Yes means Image= in art ini will be ignored + +[IgnoreTerrainRA2] + +[ScriptTemplates] +DefaultName=默认 +Counts=5 +1=两点间巡逻,New patrol 2 script,5,16,0,5,3,16,0,5,3,6,1 +2=三点间巡逻,New patrol 3 script,7,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +3=四点间巡逻,New patrol 4 script,9,16,0,5,3,16,0,5,3,16,0,5,3,16,0,5,3,6,1 +4=装载部队å�¸è½½æ”»å‡»,New unload script,6,3,0,8,2,39,0,20,0,50,120,0,0 +5=装载入载具并攻击,New load script,3,21,EMPTY,14,EMPTY,0,0 + +;===TeamTemplates=== +;X=UIName, Name, Experience Level, Priority, Max, Group, TechLevel, Mind-control Result, Checkbox1, Checkbox2, ..., Checkbox19 +;Checkbox order matrix: +; |1 6 11 | +; |2 7 12 16| +; |3 8 13 17| +; |4 9 14 18| +; |5 10 15 19| + +;By Sandman + +[TeamTemplates] +DefaultName=默认 +Counts=3 +1=空é™�部队,New Paratroop Team,1,5,5,-1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 +2=AI生产å°�队,New AI Production Team,1,5,10,-1,5,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0 +3=çª�击å°�队,New Offense Team,1,5,5,-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0 + +; not NOSURFACES: +;[BuildingVoxelTurretsRA2] +;GTGCANX=-1 +;GTGCANY=0;-6 +;NASAMY=0;2 +;NALASRX=0 +;NALASRY=0;-3 +;NAFLAKY=10;10 + + +[ParamTypes] +-1=未使用,0,1;not listed in FA2 +0=未使用,0 +1=未知,0 +2=所属方,1 +3=局部å�˜é‡�,20 +4=æ—¶é—´,0 +5=积分,0 +6=数值,0 +7=å°�队类型,2 +8=建筑,6 +9=飞行器,5 +10=步兵,4 +11=å�•ä½�,3 +12=电影,7 +13=文本,8 +14=触å�‘,9 +15=å…�许,10 +16=声音,11 +17=ä¹�曲,12 +18=语音,13 +19=步骤,0 +20=超级武器,14 +21=å·¦,0 +22=上,0 +23=宽,0 +24=高,0 +25=动画,15 +26=ç²’å­�,16 +27=æŒ�ç»­æ—¶é—´,0 +28=速度,0 +29=Voxel碎片IDå�·,29 +30=路径点,17 +31=木箱类型,PT_CrateTypes +32=语音æ��示框,19 +33=字符,21 +34=行为,9 +35=全局å�˜é‡�,27 +36=特定武器,14 +37=已激活,10 +38=触å�‘标签,22 +39=科技类型,0 +40=æ�¥æº�,0 +41=武器,24 +42=å�‘光行为,25 +43=事件,9 +44=阵雨,26 +45=浮点值,0 +46=科技类型,29,2 +47=建筑,28 +48=æ•°é‡�,0 +49=åƒ�素动画,23 +50=影片,7 +51=雷达事件,PT_RadarEventTypes + +; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C +; Origianl definitinos are as follows: +; "Money" +; "Unit" +; "HealBase" +; "Cloak" +; "Explosion" +; "Napalm" +; "Squad" +; "Darkness" +; "Reveal" +; "Armor" +; "Speed" +; "Firepower" +; "ICBM" +; "Invulnerability" +; "Veteran" +; "IonStorm" +; "Gas" +; "Tiberium" +; "Pod" + +[Chinese-ParamTypes] +-1=未使用,0,1;not listed in FA2 +0=未使用,0 +1=未知,0 +2=所属方,1 +3=局部å�˜é‡�,20 +4=æ—¶é—´,0 +5=积分,0 +6=数值,0 +7=å°�队类型,2 +8=建筑,6 +9=飞行器,5 +10=步兵,4 +11=å�•ä½�,3 +12=电影,7 +13=文本,8 +14=触å�‘,9 +15=å…�许,10 +16=声音,11 +17=ä¹�曲,12 +18=语音,13 +19=步骤,0 +20=超级武器,14 +21=å·¦,0 +22=上,0 +23=宽,0 +24=高,0 +25=动画,15 +26=ç²’å­�,16 +27=æŒ�ç»­æ—¶é—´,0 +28=速度,0 +29=Voxel碎片IDå�·,29 +30=路径点,17 +31=木箱类型,PT_CrateTypes +32=语音æ��示框,19 +33=字符,21 +34=行为,9 +35=全局å�˜é‡�,27 +36=特定武器,14 +37=已激活,10 +38=触å�‘标签,22 +39=科技类型,0 +40=æ�¥æº�,0 +41=武器,24 +42=å�‘光行为,25 +43=事件,9 +44=阵雨,26 +45=浮点值,0 +46=科技类型,29,2 +47=建筑,28 +48=æ•°é‡�,0 +49=åƒ�素动画,23 +50=影片,7 +51=雷达事件,PT_RadarEventTypes + +; These value sequence are hardcoded, check dissasmbly at YR 0x7E523C +; Origianl definitinos are as follows: +; "Money" +; "Unit" +; "HealBase" +; "Cloak" +; "Explosion" +; "Napalm" +; "Squad" +; "Darkness" +; "Reveal" +; "Armor" +; "Speed" +; "Firepower" +; "ICBM" +; "Invulnerability" +; "Veteran" +; "IonStorm" +; "Gas" +; "Tiberium" +; "Pod" + +[PT_CrateTypes] +FixedValueCount=19 +0=0 - 钱箱 +1=1 - éš�机载具å�•ä½� +2=2 - 全体医疗/ä¿®å¤� +3=3 - 永久éš�å½¢ +4=4 - C4弹头伤害 +5=5 - ç�«ç„°çˆ†ç‚¸ä¼¤å®³ +6=6 - éš�机步兵å°�队 +7=7 - 全图黑幕 +8=8 - 显示全地图 +9=9 - 护甲强化 +10=10 - 速度æ��å�‡ +11=11 - ç�«åŠ›æ��å�‡ +12=12 - 核弹超武å�•次 +13=13 - é“�幕无敌(功能残缺) +14=14 - ç»�验å�‡æ˜Ÿ +15=15 - 离å­�风暴(无效) +16=16 - 毒气粒å­� +17=17 - å°�片矿石 +18=18 - 空é™�仓(无效) + +; Controls for radar events +; The events, in order, are: +; (1) Generic Combat Event, +; (2) Generic Noncombat Event, +; (3) Dropzone Event, +; (4) Base Under Attack Event, +; (5) Harvester Under Attack Event, +; (6) Enemy Object Sensed Event + +[PT_RadarEventTypes] +FixedValueCount=6 +0=0 - (红)通用战斗事件 +1=1 - (黄)通用é�žæˆ˜æ–—事件 +2=2 - (黄)空é™�区事件 +3=3 - (红)基地é�­å�—攻击 +4=4 - (红)矿车é�­å�—攻击 +5=5 - (è“�)探测到敌方å�•ä½� + + +[ScriptParams] +0=å� ä½�,0 +1=目标,1 +2=路径点,2 +3=跳转至行#,3 +4=分离å°�队,4 +5=全局å�˜é‡�,5 +6=脚本,6 +7=å°�队,7 +8=所属方,8 +9=语音,9 +10=音效,10 +11=影片,11 +12=音ä¹�,12 +13=国家,13 +14=局部å�˜é‡�,14 +15=æœ�å�‘,15 +16=建筑,16 +17=动画,17 +18=对è¯�气泡,18 +19=进入状æ€�,19 +20=æ•´æ•°,0 +21=布尔,20 +22=目标列表,SP_TargetList + + +[Chinese-ScriptParams] +0=å� ä½�,0 +1=目标,1 +2=路径点,2 +3=跳转至行#,3 +4=分离å°�队,4 +5=全局å�˜é‡�,5 +6=脚本,6 +7=å°�队,7 +8=所属方,8 +9=语音,9 +10=音效,10 +11=影片,11 +12=音ä¹�,12 +13=国家,13 +14=局部å�˜é‡�,14 +15=æœ�å�‘,15 +16=建筑,16 +17=动画,17 +18=对è¯�气泡,18 +19=进入状æ€�,19 +20=æ•´æ•°,0 +21=布尔,20 +22=目标列表,SP_TargetList + + +[SP_TargetList] +ParseFromSection=TeamTargetTechnoTypes +ExtraValueType=0 + + +[ScriptExtras] +0=SE_TargetScanStrategy + + +[SE_TargetScanStrategy] +0=0 - 最å°�å¨�èƒ� +1=1 - 最大å¨�èƒ� +2=2 - 最近è·�离 +3=3 - 最远è·�离 + +;Index=Name,ParamType,Obsolete,YROnly,Description + +[ScriptsRA2] +0=0 - 攻击,1,0,1,攻击æŸ�类目标。 +1=1 - 攻击路径点,2,0,1,攻击指定路径点(上的物体)。 +2=2 - 暴走(无效),0,1,0,å°�队的å�Šæœºæ¢°äººæˆ�员会暴走(无效脚本)。 +3=3 - 移动到路径点,2,0,1,移动到指定路径点。 +4=4 - 移动到å��æ ‡,20,0,1,移动到å��标点 (int x+y*128)。 +5=5 - 警戒(时间计数),20,0,1,区域警戒 X 秒。(填5与计时器æµ�é€�5秒时间相å�Œï¼‰ +6=6 - 脚本转到行å�· #,3,0,1,跳转到脚本的第#行,用æ�¥å¾ªçŽ¯ã€‚ +7=7 - 玩家胜利,0,0,0,使玩家胜利。 +8=8 - å�¸è½½,4,0,1,所有有载员的è¿�è½½å�•ä½�å�¸å®¢ã€‚命令å�‚æ•°å�¯ä»¥åˆ†åˆ«æŒ‡å®šä¸¤ä¸ªéƒ¨åˆ†æ˜¯å�¦ä¾�然是å°�队æˆ�员或者è¦�离开å°�队。 +9=9 - 部署,0,0,0,所有å�¯éƒ¨ç½²å�•ä½�进行部署。 +10=10 - è·Ÿéš�å�‹å†›å�•ä½�,0,0,0,令å°�队跟éš�最近的å�‹å†›å�•ä½�。 +11=11 - 进入...状æ€�,19,0,1,å°�队所有æˆ�员执行指定任务。 +12=12 - 设置全局å�˜é‡�,5,0,1,设置一个全局å�˜é‡�。 +13=13 - 进入空闲动画,0,0,0,让å°�队中的步兵å�•ä½�闲置(播放闲置动画) +14=14 - 装载入è¿�输载具,0,0,0,让所有å�•ä½�进入è¿�输载具(如果å�¯èƒ½çš„è¯�) +15=15 - é—´è°�进入路径点的建筑物,0,1,0,(废弃脚本) +16=16 - 巡逻至路径点,2,0,1,å°�队æˆ�员移动攻击到指定路径点。 +17=17 - 更改应用脚本,6,0,1,让å°�队使用新的脚本(å�‚数为动作脚本ID) +18=18 - 更改å°�队,7,0,1,让å°�队更改å°�队类型(å�‚数为作战å°�队ID) +19=19 - 惊慌,0,0,0,让å°�队所有å�•ä½�惊慌。 +20=20 - 更改所属方,13,0,1,å°�队æˆ�员全部更改为所属方(å�‚数为所属方编å�·ï¼‰ +21=21 - 分散,0,0,0,让所有å�•ä½�分散。 +22=22 - 进入周围的黑幕,0,0,0,让所有å�•ä½�逃到有黑幕的地方。 +23=23 - 玩家失败,0,0,0,使玩家失败。 +24=24 - 播放语音,9,0,1,播放特定的语音文件。 +25=25 - 播放音效,10,0,1,播放特定的音效文件。 +26=26 - 播放电影,11,0,1,播放特定的电影文件。 +27=27 - 播放音ä¹�,12,0,1,播放特定的音ä¹�文件。 +28=28 - å‡�少矿石,0,0,0,å‡�å°‘å°�队æˆ�员周围的矿石数é‡�。 +29=29 - 开始生产,0,0,0,让所属方开始生产。 +30=30 - å�˜å�–乌拉,0,0,0,让AI所属方å�˜å�–所有建筑并进行最å�Žæ€»æ”»ã€‚ +31=31 - å°�队自æ¯�,0,0,0,让该å°�队所有æˆ�员自æ¯�。 +32=32 - 闪电风暴开始(延时),20,0,1,ç»�过指定的时间å�Žå¼€å§‹é—ªç”µé£Žæš´ã€‚ +33=33 - 闪电风暴结æ�Ÿ,0,0,0,使闪电风暴结æ�Ÿã€‚ +34=34 - 镜头è�šç„¦å°�队,20,0,1,镜头è�šç„¦å°�队(å�‚数为速度) +35=35 - é‡�置地图黑幕,0,0,0,é‡�置地图黑幕。 +36=36 - 显示全地图,0,0,0,显示全地图。 +37=37 - 删除å°�队æˆ�员,0,0,0,删除该å°�队所有æˆ�员。 +38=38 - 清除全局å�˜é‡�,5,0,1,清除指定全局å�˜é‡�。 +39=39 - 设置局部å�˜é‡�,14,0,1,设置指定局部å�˜é‡�。 +40=40 - 清除局部å�˜é‡�,14,0,1,清除指定局部å�˜é‡�。 +41=41 - 镇定,0,0,0,使所有å°�队æˆ�员å�œæ­¢æƒŠæ…Œã€‚ +42=42 - 强制é�¢å�‘,15,0,1,强制å°�队æˆ�员é�¢å�‘一个特定的方å�‘。 +43=43 - 等待到满载,0,0,0,等到所有è¿�输器满载。 +44=44 - å�¡è½¦å�¸è½½,0,0,0,让所有å�¡è½¦å�¸è½½ç®±å­�(å�³æ”¹å�˜ç±»åž‹ä¸ºæœªè£…è½½å�•ä½�) +45=45 - å�¡è½¦è£…è½½,0,0,0,让所有å�¡è½¦è£…载箱å­�(å�³æ”¹å�˜ç±»åž‹ä¸ºè£…载的å�•ä½�) +46=46 - 攻击敌方建筑物,16,0,1,攻击指定类型的建筑,å�‚数为建筑åº�å�·ï¼Œé¢�外å�‚æ•°å�¯ä»¥ç”¨äºŽæŒ‡å®šæ�œç´¢ç›®æ ‡æ—¶çš„策略。 +47=47 - 移动到敌方建筑物,16,0,1,移动到指定类型的建筑,å�‚数为建筑åº�å�·+系数(+0:攻击å¨�èƒ�值最å°�的,+65536 :攻击å¨�èƒ�值最大的,+131072:攻击è·�离最近的,+262144:攻击è·�离最远的)。 +48=48 - 侦察,0,0,0,å°�队会侦察玩家未探索的区域。 +49=49 - æˆ�功,0,0,0,记录å°�队完æˆ�了任务。用于AI触å�‘分é‡�(æ�ƒé‡�)。在æ¯�一个AI触å�‘å�Žæ·»åŠ æ­¤è¡Œä¸ºã€‚ +50=50 - é—ªçƒ�,20,0,1,é—ªçƒ�å°�队一段时间(å�‚数为闪çƒ�的帧数) +51=51 - 播放动画,17,0,1,在æ¯�个å°�队å�•ä½�上播放动画。 +52=52 - 对è¯�气泡,18,0,1,在å°�队第一个å�•ä½�上显示对è¯�气泡。 +53=53 - 敌方基地外集å�ˆ,20,0,1,在敌方基地安全è·�离外集å�ˆã€‚Ares2.0起,数值å�‚数的正负将影å“�Rulesmd全局中安全è·�离 (AISafeDistance=) 的伸长或缩短。 +54=54 - 己方基地外集å�ˆ,20,0,1,在己方基地一定è·�离外集å�ˆã€‚Ares2.0起,数值å�‚数的正负将影å“�Rulesmd全局中「å�‹å†›åŸºåœ°ã€�安全è·�离 (AIFriendlyDistance=,ä¸�存在这æ�¡åˆ™ç”¨AISafeDistance=) 的伸长或缩短。 +55=55 - 请求超武...,20,0,1,请求å°�队所属方对当å‰�å°�队使用超级武器,默认为é“�幕。Ares2.0起,数值å�‚数决定AI使用哪一组超武(对应SW.Group=,默认为0)。 +56=56 - 超时空传é€�至建筑,16,0,1,若所属方超时空传é€�就绪,将该å°�队超时空传é€�至特定建筑。但是此å�Žéœ€è¦�é¢�外使用攻击命令。 +57=57 - 超时空传é€�至目标,1,0,1,若所属方超时空传é€�就绪,将该å°�队超时空传é€�至目标。但是此å�Žéœ€è¦�é¢�外使用攻击命令。 +;YR Only +58=58 - 移动到己方建筑,16,0,1,移动到å�‹æ–¹çš„特定建筑,é¢�外å�‚æ•°å�¯ä»¥ç”¨äºŽæŒ‡å®šæ�œç´¢ç›®æ ‡æ—¶çš„ç­–ç•¥ +59=59 - æ”»å� è·¯å¾„点上的建筑,2,0,1,攻击å� æ�®è¯¥è·¯å¾„点的建筑物。AIå�•ä½�通常会优先å°�试驻扎(若能)。 +60=60 - 进入回收厂,0,0,0,让å°�队进入该所属方就近的部队回收厂。 +61=61 - 进入å�¦å…‹ç¢‰å ¡,0,0,0,让å°�队的æ¯�个å�•ä½�进入空的å�¦å…‹ç¢‰å ¡ã€‚ +62=62 - 进入生化å��应炉,0,0,0,让å°�队进入生化å��应炉。 +63=63 - 进入战斗碉堡,0,0,0,让å°�队进入战斗碉堡。 +64=64 - 进入å�¯é©»å†›å»ºç­‘,0,0,0,让å°�队进驻中立建筑物。 +;Hares Only +65=65 - 攻击特定类型的å�•ä½�,22,0,1,攻击特定类型的科技å�•ä½�,数值为全局TeamTargetTechnoTypes列表中的åº�å�·ï¼Œä»Ž0开始 +66=66 - 驻扎路径点ä½�置的建筑,2,0,1,æ´¾é�£æ­¥å…µå�•ä½�驻扎路径点ä½�置的建筑(如果有),ä¸�区分å°�队所属是人类或AI玩家。 +67=67 - æ‘„åƒ�机视角跟éš�,20,0,1,激活/å�–消摄åƒ�机追é€�视角设置为该å°�队æˆ�员(所有æˆ�员都会标记为跟éš�,多æˆ�员å°�队慎用)。 +68=68 - å°�队æˆ�员被玩家选中,20,0,1,激活/å�–消设置该å°�队æˆ�员为选中状æ€�(所有æˆ�员都会标记为选中)。 +69=69 - 上一脚本执行æˆ�功,20,0,1,上一次脚本执行结果为æˆ�功 +70=70 - 上一脚本执行失败,20,0,1,上一次脚本执行结果为失败 +71=71 - 等待N游æˆ�ç§’,20,0,1,等待N游æˆ�秒,以ä¿�è¯�上一æ�¡è„šæœ¬æ‰§è¡Œå®Œæ¯• + +[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? +0=5 +1=9 +;2=10 +3=11 + +; events format: +; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] +; negative number for type currently not supported (only Actions do support yet)! +; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. +; NOTE: ID must be the same like # + +[Chinese-ScriptsRA2] +0=0 - 攻击,1,0,1,攻击æŸ�类目标。 +1=1 - 攻击路径点,2,0,1,攻击指定路径点(上的物体)。 +2=2 - 暴走(无效),0,1,0,å°�队的å�Šæœºæ¢°äººæˆ�员会暴走(无效脚本)。 +3=3 - 移动到路径点,2,0,1,移动到指定路径点。 +4=4 - 移动到å��æ ‡,20,0,1,移动到å��标点 (int x+y*128)。 +5=5 - 警戒(时间计数),20,0,1,区域警戒 X 秒。(填5与计时器æµ�é€�5秒时间相å�Œï¼‰ +6=6 - 脚本转到行å�· #,3,0,1,跳转到脚本的第#行,用æ�¥å¾ªçŽ¯ã€‚ +7=7 - 玩家胜利,0,0,0,使玩家胜利。 +8=8 - å�¸è½½,4,0,1,所有有载员的è¿�è½½å�•ä½�å�¸å®¢ã€‚命令å�‚æ•°å�¯ä»¥åˆ†åˆ«æŒ‡å®šä¸¤ä¸ªéƒ¨åˆ†æ˜¯å�¦ä¾�然是å°�队æˆ�员或者è¦�离开å°�队。 +9=9 - 部署,0,0,0,所有å�¯éƒ¨ç½²å�•ä½�进行部署。 +10=10 - è·Ÿéš�å�‹å†›å�•ä½�,0,0,0,令å°�队跟éš�最近的å�‹å†›å�•ä½�。 +11=11 - 进入...状æ€�,19,0,1,å°�队所有æˆ�员执行指定任务。 +12=12 - 设置全局å�˜é‡�,5,0,1,设置一个全局å�˜é‡�。 +13=13 - 进入空闲动画,0,0,0,让å°�队中的步兵å�•ä½�闲置(播放闲置动画) +14=14 - 装载入è¿�输载具,0,0,0,让所有å�•ä½�进入è¿�输载具(如果å�¯èƒ½çš„è¯�) +15=15 - é—´è°�进入路径点的建筑物,0,1,0,(废弃脚本) +16=16 - 巡逻至路径点,2,0,1,å°�队æˆ�员移动攻击到指定路径点。 +17=17 - 更改应用脚本,6,0,1,让å°�队使用新的脚本(å�‚数为动作脚本ID) +18=18 - 更改å°�队,7,0,1,让å°�队更改å°�队类型(å�‚数为作战å°�队ID) +19=19 - 惊慌,0,0,0,让å°�队所有å�•ä½�惊慌。 +20=20 - 更改所属方,13,0,1,å°�队æˆ�员全部更改为所属方(å�‚数为所属方编å�·ï¼‰ +21=21 - 分散,0,0,0,让所有å�•ä½�分散。 +22=22 - 进入周围的黑幕,0,0,0,让所有å�•ä½�逃到有黑幕的地方。 +23=23 - 玩家失败,0,0,0,使玩家失败。 +24=24 - 播放语音,9,0,1,播放特定的语音文件。 +25=25 - 播放音效,10,0,1,播放特定的音效文件。 +26=26 - 播放电影,11,0,1,播放特定的电影文件。 +27=27 - 播放音ä¹�,12,0,1,播放特定的音ä¹�文件。 +28=28 - å‡�少矿石,0,0,0,å‡�å°‘å°�队æˆ�员周围的矿石数é‡�。 +29=29 - 开始生产,0,0,0,让所属方开始生产。 +30=30 - å�˜å�–乌拉,0,0,0,让AI所属方å�˜å�–所有建筑并进行最å�Žæ€»æ”»ã€‚ +31=31 - å°�队自æ¯�,0,0,0,让该å°�队所有æˆ�员自æ¯�。 +32=32 - 闪电风暴开始(延时),20,0,1,ç»�过指定的时间å�Žå¼€å§‹é—ªç”µé£Žæš´ã€‚ +33=33 - 闪电风暴结æ�Ÿ,0,0,0,使闪电风暴结æ�Ÿã€‚ +34=34 - 镜头è�šç„¦å°�队,20,0,1,镜头è�šç„¦å°�队(å�‚数为速度) +35=35 - é‡�置地图黑幕,0,0,0,é‡�置地图黑幕。 +36=36 - 显示全地图,0,0,0,显示全地图。 +37=37 - 删除å°�队æˆ�员,0,0,0,删除该å°�队所有æˆ�员。 +38=38 - 清除全局å�˜é‡�,5,0,1,清除指定全局å�˜é‡�。 +39=39 - 设置局部å�˜é‡�,14,0,1,设置指定局部å�˜é‡�。 +40=40 - 清除局部å�˜é‡�,14,0,1,清除指定局部å�˜é‡�。 +41=41 - 镇定,0,0,0,使所有å°�队æˆ�员å�œæ­¢æƒŠæ…Œã€‚ +42=42 - 强制é�¢å�‘,15,0,1,强制å°�队æˆ�员é�¢å�‘一个特定的方å�‘。 +43=43 - 等待到满载,0,0,0,等到所有è¿�输器满载。 +44=44 - å�¡è½¦å�¸è½½,0,0,0,让所有å�¡è½¦å�¸è½½ç®±å­�(å�³æ”¹å�˜ç±»åž‹ä¸ºæœªè£…è½½å�•ä½�) +45=45 - å�¡è½¦è£…è½½,0,0,0,让所有å�¡è½¦è£…载箱å­�(å�³æ”¹å�˜ç±»åž‹ä¸ºè£…载的å�•ä½�) +46=46 - 攻击敌方建筑物,16,0,1,攻击指定类型的建筑,å�‚数为建筑åº�å�·ï¼Œé¢�外å�‚æ•°å�¯ä»¥ç”¨äºŽæŒ‡å®šæ�œç´¢ç›®æ ‡æ—¶çš„策略。 +47=47 - 移动到敌方建筑物,16,0,1,移动到指定类型的建筑,å�‚数为建筑åº�å�·+系数(+0:攻击å¨�èƒ�值最å°�的,+65536 :攻击å¨�èƒ�值最大的,+131072:攻击è·�离最近的,+262144:攻击è·�离最远的)。 +48=48 - 侦察,0,0,0,å°�队会侦察玩家未探索的区域。 +49=49 - æˆ�功,0,0,0,记录å°�队完æˆ�了任务。用于AI触å�‘分é‡�(æ�ƒé‡�)。在æ¯�一个AI触å�‘å�Žæ·»åŠ æ­¤è¡Œä¸ºã€‚ +50=50 - é—ªçƒ�,20,0,1,é—ªçƒ�å°�队一段时间(å�‚数为闪çƒ�的帧数) +51=51 - 播放动画,17,0,1,在æ¯�个å°�队å�•ä½�上播放动画。 +52=52 - 对è¯�气泡,18,0,1,在å°�队第一个å�•ä½�上显示对è¯�气泡。 +53=53 - 敌方基地外集å�ˆ,20,0,1,在敌方基地安全è·�离外集å�ˆã€‚Ares2.0起,数值å�‚数的正负将影å“�Rulesmd全局中安全è·�离 (AISafeDistance=) 的伸长或缩短。 +54=54 - 己方基地外集å�ˆ,20,0,1,在己方基地一定è·�离外集å�ˆã€‚Ares2.0起,数值å�‚数的正负将影å“�Rulesmd全局中「å�‹å†›åŸºåœ°ã€�安全è·�离 (AIFriendlyDistance=,ä¸�存在这æ�¡åˆ™ç”¨AISafeDistance=) 的伸长或缩短。 +55=55 - 请求超武...,20,0,1,请求å°�队所属方对当å‰�å°�队使用超级武器,默认为é“�幕。Ares2.0起,数值å�‚数决定AI使用哪一组超武(对应SW.Group=,默认为0)。 +56=56 - 超时空传é€�至建筑,16,0,1,若所属方超时空传é€�就绪,将该å°�队超时空传é€�至特定建筑。但是此å�Žéœ€è¦�é¢�外使用攻击命令。 +57=57 - 超时空传é€�至目标,1,0,1,若所属方超时空传é€�就绪,将该å°�队超时空传é€�至目标。但是此å�Žéœ€è¦�é¢�外使用攻击命令。 +;YR Only +58=58 - 移动到己方建筑,16,0,1,移动到å�‹æ–¹çš„特定建筑,é¢�外å�‚æ•°å�¯ä»¥ç”¨äºŽæŒ‡å®šæ�œç´¢ç›®æ ‡æ—¶çš„ç­–ç•¥ +59=59 - æ”»å� è·¯å¾„点上的建筑,2,0,1,攻击å� æ�®è¯¥è·¯å¾„点的建筑物。AIå�•ä½�通常会优先å°�试驻扎(若能)。 +60=60 - 进入回收厂,0,0,0,让å°�队进入该所属方就近的部队回收厂。 +61=61 - 进入å�¦å…‹ç¢‰å ¡,0,0,0,让å°�队的æ¯�个å�•ä½�进入空的å�¦å…‹ç¢‰å ¡ã€‚ +62=62 - 进入生化å��应炉,0,0,0,让å°�队进入生化å��应炉。 +63=63 - 进入战斗碉堡,0,0,0,让å°�队进入战斗碉堡。 +64=64 - 进入å�¯é©»å†›å»ºç­‘,0,0,0,让å°�队进驻中立建筑物。 +;Hares Only +65=65 - 攻击特定类型的å�•ä½�,22,0,1,攻击特定类型的科技å�•ä½�,数值为全局TeamTargetTechnoTypes列表中的åº�å�·ï¼Œä»Ž0开始 +66=66 - 驻扎路径点ä½�置的建筑,2,0,1,æ´¾é�£æ­¥å…µå�•ä½�驻扎路径点ä½�置的建筑(如果有),ä¸�区分å°�队所属是人类或AI玩家。 +67=67 - æ‘„åƒ�机视角跟éš�,20,0,1,激活/å�–消摄åƒ�机追é€�视角设置为该å°�队æˆ�员(所有æˆ�员都会标记为跟éš�,多æˆ�员å°�队慎用)。 +68=68 - å°�队æˆ�员被玩家选中,20,0,1,激活/å�–消设置该å°�队æˆ�员为选中状æ€�(所有æˆ�员都会标记为选中)。 +69=69 - 上一脚本执行æˆ�功,20,0,1,上一次脚本执行结果为æˆ�功 +70=70 - 上一脚本执行失败,20,0,1,上一次脚本执行结果为失败 +71=71 - 等待N游æˆ�ç§’,20,0,1,等待N游æˆ�秒,以ä¿�è¯�上一æ�¡è„šæœ¬æ‰§è¡Œå®Œæ¯• + +[DontSaveAsWP] ; which code values indicate that the waypoint param must be saved as normal integer? +0=5 +1=9 +;2=10 +3=11 + +; events format: +; #=Description, P2 type, P1 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] +; negative number for type currently not supported (only Actions do support yet)! +; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. +; NOTE: ID must be the same like # + +[EventsRA2] +0=-无事件-,0,0,0,0,这是一个空的事件,无æ„�义。请选择需è¦�的事件。,0,1,0 +1=进入事件...,0,2,0,0,当步兵或车辆进入关è�”的对象时,事件被触å�‘。此触å�‘å�¯å…³è�”到一所建筑或一个å�•元(使用“放置于地图上â€�按钮)。å�¯ç”¨äºŽå·¥ç¨‹å¸ˆã€�é—´è°�进入建筑,但空中å�•ä½�ä¸�会触å�‘æ­¤æ�¡ä»¶ã€‚,0,1,1 +2=侦察开始(无用),0,0,0,0,当间è°�进入关è�”的建筑,开始侦察。,0,0,2 +3=å�·çªƒè¡ŒåŠ¨ï¼ˆæ— ç”¨ï¼‰,0,2,0,0,当一å��å°�å�·ä»Žç‰¹å®šçš„建筑中å�·çªƒé‡‘钱时此事件被触å�‘。,0,0,3 +4=被游æˆ�者å�‘现,0,0,0,0,当关è�”的对è±¡è¢«æ¸¸æˆ�者å�‘现时触å�‘此事件,被å�‘现æ„�味ç�€è¦�显示附近的地图区域。,0,1,4 +5=作战方被å�‘现...,0,2,0,0,当特定的æŸ�一作战方的任一å�•ä½�或建筑被游æˆ�者å�‘现时触å�‘此事件。,0,1,5 +6=å�—到任一作战方攻击,0,0,0,0,当å�•ä½�å�—到一些方å¼�的攻击时,触å�‘此事件。间接æ�Ÿä¼¤æˆ–å�‹å†›å¼€ç�«ä¸�包括在内。,0,1,6 +7=被任一作战方摧æ¯�,0,0,0,0,当关è�”的对象被摧æ¯�时触å�‘些事件。间接或å�‹å†›å¼€ç�«é€ æˆ�被æ¯�ä¸�包括在内。,0,1,7 +8=任何事件,0,0,0,0,当å�•独%1使用时,立å�³å¼ºåˆ¶è§¦å�‘此事件。此动作跟æµ�é€�æ—¶é—´ 数值1 相似。,0,1,8 +9=被摧æ¯�%1 å�•ä½�%1 全部...,0,2,0,0,当特定作战方的所有å�•ä½�被摧æ¯�时触å�‘此事件。典型使用在游æˆ�的结æ�Ÿæ�¡ä»¶ä¸­ã€‚,0,1,9 +10=被摧æ¯�%1 建筑%1 全部...,0,2,0,0,当特定作战方的所有建筑被摧æ¯�时触å�‘此事件。典型使用在游æˆ�的结æ�Ÿæ�¡ä»¶ä¸­ã€‚,0,1,10 +11=被摧æ¯�%1 全部...,0,2,0,0,当特定作战方的所有对象被摧æ¯�时触å�‘此事件。这是常规的游æˆ�结æ�Ÿè§¦å�‘事件(全部摧æ¯�)。,0,1,11 +12=金钱超过...,0,6,0,0,当与事件关è�”的作战方的金钱超过特定值触å�‘此事件。,0,1,12 +13=æµ�é€�æ—¶é—´...,0,6,0,0,当æµ�é€�的时间达到特定值触å�‘此事件。当触å�‘器建立时该时间åˆ�始化,当触å�‘器æŒ�ç»­ä¸�å�˜æˆ–被触å�‘时,计时器å¤�ä½�。,0,1,13 +14=任务时间已到,0,0,0,0,当全局的任务时间(显示在å±�幕å�³ä¸‹è§’)倒计时为零时触å�‘此事件。,0,1,14 +15=被摧æ¯�%1 建筑%1 (æ•°é‡�为#)...,0,6,0,0,当特定数é‡�çš„%1建筑(由此触å�‘事件特定作战方%1所有)被摧æ¯�。,0,1,15 +16=被摧æ¯�%1 å�•ä½�%1 (æ•°é‡�为#)...,0,6,0,0,当特定数é‡�çš„%1å�•ä½�(由此触å�‘事件特定作战方%1所有)被摧æ¯�。,0,1,16 +17=ä¸�å†�有工厂,0,0,0,0,当此触å�‘事件特定的的作战方ä¸�会å†�有带有Factory=的工厂(建造场,车间,空指部,兵è�¥ç­‰ï¼‰æ—¶è§¦å�‘此事件。一般作为 9å�–掉全部建筑 çš„æ�¡ä»¶ã€‚,0,1,17 +18=平民撤离(无用),0,0,0,0,当平民撤离时(离开地图)触å�‘此事件。,0,0,18 +19=建造特定类型的建筑...,0,8,0,0,当触å�‘事件的作战方建造特定的%1类型的建筑时触å�‘此事件。,0,1,19 +20=生产特定类型的车辆...,0,11,0,0,当触å�‘事件的作战方生产特定的科技类型的车辆时触å�‘此事件。,0,1,20 +21=生产特定类型的步兵...,0,10,0,0,当触å�‘事件的作战方生产特定的步兵类å�•ä½�时触å�‘此事件。,0,1,21 +22=生产特定类型的飞机...,0,9,0,0,当触å�‘事件的作战方生产特定的%1飞行类å�•ä½�时此事件被触å�‘。,0,1,22 +23=离开地图(å°�队)...,-1,7,0,0,当特定的å°�队离开地图时事件触å�‘。如果å°�队被摧æ¯�则ä¸�会触å�‘事件。如果å°�队除一个æˆ�员å��其他已被全部摧æ¯�,而这一æˆ�员离开了地图,那么事件将被触å�‘。,0,1,23 +24=进入æŸ�区域...,0,2,0,0,当特定作战方的一å�•ä½�进入上述这一触å�‘事件定ä½�区域,事件被触å�‘。此触å�‘事件必须被定ä½�于一个å�•元中,å�ªèƒ½æ˜¯ä¸€ä¸ªå�•元。,0,1,24 +25=越过水平线...,0,2,0,0,当特定作战方的一å�•ä½�越过此触å�‘事件特定的区域水平线时,事件触å�‘。此触å�‘事件必须放置于一个å�•元内。,0,1,25 +26=越过垂直线...,0,2,0,0,当特定作战方的一å�•ä½�越过此触å�‘事件特定的区域垂直线时,事件触å�‘。此触å�‘事件必须放置于一个å�•元内。,0,1,26 +27=全局开å�¯...,0,35,0,0,当特定的全局å�˜é‡�å¼€å�¯[1]时,事件触å�‘。,0,1,27 +28=全局关闭...,0,35,0,0,当特定的全局å�˜é‡�关闭[0]时,事件触å�‘。,0,1,28 +29=被任何事物摧æ¯�(ä¸�包括间è°�渗é€�),0,0,0,0,当关è�”对象被摧æ¯�%1时,事件触å�‘。ä¸�包括渗é€�入建筑或å�•ä½�。,0,1,29 +30=电力ä¸�è¶³...,0,2,0,0,当特定作战方å�œç”µæ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,30 +31=æ¡¥æ¢�被摧æ¯�,0,0,0,0,当特定的桥æ¢�当出现缺å�£ä¸�能通行时,事件触å�‘。此触å�‘必须被用å�•元标记放置在目标桥æ¢�的下方(å�ªèƒ½æ”¾ç½®ä¸€ä¸ªå�•元标记)。,0,1,31 +32=建筑存在...,0,8,0,0,当此触å�‘事件作战方有特定建筑存在于地图上时,事件触å�‘。此建筑å�¯ä»¥æ˜¯ä»¥å‰�就有的或由基地建造的。,0,1,32 +33=被游æˆ�者选定,0,2,0,0,当å�•ä½�被游æˆ�者选定时,事件触å�‘。仅使用于å�•ä½�任务中。,0,1,33 +34=到达路径点附近...,48,30,0,0,当对象到达特定的路径点附近时,事件触å�‘。å�‚数表示è·�离路径点的范围å�Šå¾„,0,1,34 +35=敌人进入局部照明区...,0,0,0,0,当一个敌人å�•ä½�进入关è�”建筑物投射的局部照明区时,事件触å�‘。,0,1,35 +36=局部开å�¯...,0,3,0,0,当特定的局部å�˜é‡�å¼€å�¯(1)时,事件触å�‘。,0,1,36 +37=局部关闭...,0,3,0,0,当特定的局部å�˜é‡�关闭(0)时,事件触å�‘。,0,1,37 +38=首次å�—æ�Ÿ(仅指战斗),0,0,0,0,仅指作战时åˆ�次å�—到æ�Ÿä¼¤æ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,38 +39=一å�Šç”Ÿå‘½å€¼(仅指战斗),0,0,0,0,仅指作战时å�—到æ�Ÿä¼¤è€Œå�ªæœ‰ä¸€å�Šç”Ÿå‘½å€¼æ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,39 +40=四分之一生命值(仅指战斗),0,0,0,0,仅指作战时å�—到æ�Ÿä¼¤è€Œå�ªæœ‰å››åˆ†ä¹‹ä¸€ç”Ÿå‘½å€¼æ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,40 +41=首次å�—æ�Ÿ(任何æ�¥æº�),0,0,0,0,当å�—到任何æ�¥æº�的攻击而åˆ�次å�—æ�Ÿæ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,41 +42=一å�Šç”Ÿå‘½å€¼(任何æ�¥æº�),0,0,0,0,当å�—到任何æ�¥æº�的攻击而å�ªæœ‰ä¸€å�Šç”Ÿå‘½å€¼æ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,42 +43=四分之一生命值(任何æ�¥æº�),0,0,0,0,当å�—到任何æ�¥æº�的攻击而å�ªæœ‰å››åˆ†ä¹‹ä¸€ç”Ÿå‘½å€¼æ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,43 +44=å�—到攻击(作战方)...,0,2,0,0,当é�­åˆ°ç‰¹å®šä½œæˆ˜æ–¹çš„æŸ�些å�•ä½�的攻击时,事件触å�‘。,0,1,44 +45=环境照明 <=(å°�于)...,0,6,0,0,当环境照明亮度低于或等于æŸ�一确定值时,事件触å�‘。å�¯ç”¨å€¼ä»‹äºŽ 0 到 100之间。,0,1,45 +46=环境照明 >=(大于)...,0,6,0,0,当环境照明亮度超过或等于æŸ�一确定值时,事件触å�‘。å�¯ç”¨å€¼ä»‹äºŽ 0 到 100之间。,0,1,46 +47=æµ�é€�的情节时间...,0,6,0,0,从剧情开始计算游æˆ�çš„æµ�é€�时间。,0,1,47 +48=被任何事物摧æ¯�,0,0,0,0,当被任何事物摧æ¯�时,事件触å�‘。此触å�‘ä¸�能关è�”到航æ¯�上,å�¦åˆ™å…¶å­�机被摧æ¯�å�Žå†�æ‘§æ¯�航æ¯�,事件ä¸�会触å�‘。但先摧æ¯�航æ¯�,事件å�¯ä»¥è§¦å�‘。,0,1,48 +49=å…³è�”对象拾得木箱,0,0,0,0,当此事件关è�”对象拾得木箱时,事件触å�‘。,0,1,49 +50=任何å�•ä½�拾得木箱,0,0,0,0,当任何å�•ä½�拾得木箱时,事件触å�‘。,0,1,50 +51=éš�机延时...,0,6,0,0,进行éš�机延时,时间值介于特定值的 50% 到 150%。è�”机地图使用该æ�¡ä»¶å®¹æ˜“因为å�„玩家时间ä¸�对应造æˆ�“é‡�新连线错误â€�。。,0,1,51 +52=金钱低于...,0,6,0,0,当此事件作战方金钱值低于特定值时,事件触å�‘。,0,1,52 +53=é—´è°�伪装进入(无用)...,0,2,0,0,当间è°�伪装为特定作战方å�•ä½�进入时,事件触å�‘。,0,0,53 +54=é—´è°�伪装步兵进入(无用)...,0,10,0,0,当间è°�伪装为特定步兵类å�•ä½�进入时,事件触å�‘。,0,0,54 +55=被摧æ¯�%1 å�•ä½�%1 海军...,0,2,0,0,当特定作战方的所有海军å�•ä½�被摧æ¯�时,事件触å�‘。典型应用于游æˆ�结æ�Ÿæ�¡ä»¶ä¸­ã€‚,0,1,55 +56=被摧æ¯�%1 å�•ä½�%1 陆军...,0,2,0,0,当特定作战方的所有陆军å�•ä½�被摧æ¯�时,事件触å�‘。典型应用于游æˆ�结æ�Ÿæ�¡ä»¶ä¸­ã€‚,0,1,56 +57=建筑ä¸�å†�存在,0,8,0,0,当特定的建筑(归属于此事件作战方)ä¸�å†�存在于地图上时,事件触å�‘。,0,1,57 + +; YR +58=充足能é‡�供应...,0,2,0,0,当特定å�‚战方的电力充足时,事件触å�‘。,0,1,58,1 +59=进入或飞越...,0,2,0,0,当å�•ä½�%1 步兵%1 或飞行器移动进入或飞越此å�•元时,事件触å�‘。属于进入事件的拓展版,但ä¸�能关è�”建筑。,0,1,59,1 + +; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters +60=科技类型存在,46,48,0,0,地图上该科技存在的(无论所属方)数é‡�大于等于设定值,则触å�‘。此触å�‘计算“正在建造中的物体â€�。,0,1,60,1 +61=科技类型ä¸�存在,46,48,0,0,如果地图上(包括进入载具和建筑的)此类科技的数é‡�å°�于设定值,则触å�‘,数值设为0没有æ„�义。此触å�‘计算“正在建造中的物体â€�。,0,1,61,1 +86=任务倒计时少于...,0,6,0,0,当任务计时器时间秒数å°�于等于特定值触å�‘此事件。当计时器é‡�设时该事件将会é‡�新评估。,0,1,13 + + +; action format: +; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] +; if using negative number for type, param will be set to the absolute value of this number +; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. +; NOTE: ID must be the same like # + +[Chinese-EventsRA2] +0=-无事件-,0,0,0,0,这是一个空的事件,无æ„�义。请选择需è¦�的事件。,0,1,0 +1=进入事件...,0,2,0,0,当步兵或车辆进入关è�”的对象时,事件被触å�‘。此触å�‘å�¯å…³è�”到一所建筑或一个å�•元(使用“放置于地图上â€�按钮)。å�¯ç”¨äºŽå·¥ç¨‹å¸ˆã€�é—´è°�进入建筑,但空中å�•ä½�ä¸�会触å�‘æ­¤æ�¡ä»¶ã€‚,0,1,1 +2=侦察开始(无用),0,0,0,0,当间è°�进入关è�”的建筑,开始侦察。,0,0,2 +3=å�·çªƒè¡ŒåŠ¨ï¼ˆæ— ç”¨ï¼‰,0,2,0,0,当一å��å°�å�·ä»Žç‰¹å®šçš„建筑中å�·çªƒé‡‘钱时此事件被触å�‘。,0,0,3 +4=被游æˆ�者å�‘现,0,0,0,0,当关è�”的对象被游æˆ�者å�‘现时触å�‘此事件,被å�‘现æ„�味ç�€è¦�显示附近的地图区域。,0,1,4 +5=作战方被å�‘现...,0,2,0,0,当特定的æŸ�一作战方的任一å�•ä½�或建筑被游æˆ�者å�‘现时触å�‘此事件。,0,1,5 +6=å�—到任一作战方攻击,0,0,0,0,当å�•ä½�å�—到一些方å¼�的攻击时,触å�‘此事件。间接æ�Ÿä¼¤æˆ–å�‹å†›å¼€ç�«ä¸�包括在内。,0,1,6 +7=被任一作战方摧æ¯�,0,0,0,0,当关è�”的对象被摧æ¯�时触å�‘些事件。间接或å�‹å†›å¼€ç�«é€ æˆ�被æ¯�ä¸�包括在内。,0,1,7 +8=任何事件,0,0,0,0,当å�•独%1使用时,立å�³å¼ºåˆ¶è§¦å�‘此事件。此动作跟æµ�é€�æ—¶é—´ 数值1 相似。,0,1,8 +9=被摧æ¯�%1 å�•ä½�%1 全部...,0,2,0,0,当特定作战方的所有å�•ä½�被摧æ¯�时触å�‘此事件。典型使用在游æˆ�的结æ�Ÿæ�¡ä»¶ä¸­ã€‚,0,1,9 +10=被摧æ¯�%1 建筑%1 全部...,0,2,0,0,当特定作战方的所有建筑被摧æ¯�时触å�‘此事件。典型使用在游æˆ�的结æ�Ÿæ�¡ä»¶ä¸­ã€‚,0,1,10 +11=被摧æ¯�%1 全部...,0,2,0,0,当特定作战方的所有对象被摧æ¯�时触å�‘此事件。这是常规的游æˆ�结æ�Ÿè§¦å�‘事件(全部摧æ¯�)。,0,1,11 +12=金钱超过...,0,6,0,0,当与事件关è�”的作战方的金钱超过特定值触å�‘此事件。,0,1,12 +13=æµ�é€�æ—¶é—´...,0,6,0,0,当æµ�é€�的时间达到特定值触å�‘此事件。当触å�‘器建立时该时间åˆ�始化,当触å�‘器æŒ�ç»­ä¸�å�˜æˆ–被触å�‘时,计时器å¤�ä½�。,0,1,13 +14=任务时间已到,0,0,0,0,当全局的任务时间(显示在å±�幕å�³ä¸‹è§’)倒计时为零时触å�‘此事件。,0,1,14 +15=被摧æ¯�%1 建筑%1 (æ•°é‡�为#)...,0,6,0,0,当特定数é‡�çš„%1建筑(由此触å�‘事件特定作战方%1所有)被摧æ¯�。,0,1,15 +16=被摧æ¯�%1 å�•ä½�%1 (æ•°é‡�为#)...,0,6,0,0,当特定数é‡�çš„%1å�•ä½�(由此触å�‘事件特定作战方%1所有)被摧æ¯�。,0,1,16 +17=ä¸�å†�有工厂,0,0,0,0,当此触å�‘事件特定的的作战方ä¸�会å†�有带有Factory=的工厂(建造场,车间,空指部,兵è�¥ç­‰ï¼‰æ—¶è§¦å�‘此事件。一般作为 9å�–掉全部建筑 çš„æ�¡ä»¶ã€‚,0,1,17 +18=平民撤离(无用),0,0,0,0,当平民撤离时(离开地图)触å�‘此事件。,0,0,18 +19=建造特定类型的建筑...,0,8,0,0,当触å�‘事件的作战方建造特定的%1类型的建筑时触å�‘此事件。,0,1,19 +20=生产特定类型的车辆...,0,11,0,0,当触å�‘事件的作战方生产特定的科技类型的车辆时触å�‘此事件。,0,1,20 +21=生产特定类型的步兵...,0,10,0,0,当触å�‘事件的作战方生产特定的步兵类å�•ä½�时触å�‘此事件。,0,1,21 +22=生产特定类型的飞机...,0,9,0,0,当触å�‘事件的作战方生产特定的%1飞行类å�•ä½�时此事件被触å�‘。,0,1,22 +23=离开地图(å°�队)...,-1,7,0,0,当特定的å°�队离开地图时事件触å�‘。如果å°�队被摧æ¯�则ä¸�会触å�‘事件。如果å°�队除一个æˆ�员å��其他已被全部摧æ¯�,而这一æˆ�员离开了地图,那么事件将被触å�‘。,0,1,23 +24=进入æŸ�区域...,0,2,0,0,当特定作战方的一å�•ä½�进入上述这一触å�‘事件定ä½�区域,事件被触å�‘。此触å�‘事件必须被定ä½�于一个å�•元中,å�ªèƒ½æ˜¯ä¸€ä¸ªå�•元。,0,1,24 +25=越过水平线...,0,2,0,0,当特定作战方的一å�•ä½�越过此触å�‘事件特定的区域水平线时,事件触å�‘。此触å�‘事件必须放置于一个å�•元内。,0,1,25 +26=越过垂直线...,0,2,0,0,当特定作战方的一å�•ä½�越过此触å�‘事件特定的区域垂直线时,事件触å�‘。此触å�‘事件必须放置于一个å�•元内。,0,1,26 +27=全局开å�¯...,0,35,0,0,当特定的全局å�˜é‡�å¼€å�¯[1]时,事件触å�‘。,0,1,27 +28=全局关闭...,0,35,0,0,当特定的全局å�˜é‡�关闭[0]时,事件触å�‘。,0,1,28 +29=被任何事物摧æ¯�(ä¸�包括间è°�渗é€�),0,0,0,0,当关è�”对象被摧æ¯�%1时,事件触å�‘。ä¸�包括渗é€�入建筑或å�•ä½�。,0,1,29 +30=电力ä¸�è¶³...,0,2,0,0,当特定作战方å�œç”µæ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,30 +31=æ¡¥æ¢�被摧æ¯�,0,0,0,0,当特定的桥æ¢�当出现缺å�£ä¸�能通行时,事件触å�‘。此触å�‘必须被用å�•元标记放置在目标桥æ¢�的下方(å�ªèƒ½æ”¾ç½®ä¸€ä¸ªå�•元标记)。,0,1,31 +32=建筑存在...,0,8,0,0,当此触å�‘事件作战方有特定建筑存在于地图上时,事件触å�‘。此建筑å�¯ä»¥æ˜¯ä»¥å‰�就有的或由基地建造的。,0,1,32 +33=被游æˆ�者选定,0,2,0,0,当å�•ä½�被游æˆ�者选定时,事件触å�‘。仅使用于å�•ä½�任务中。,0,1,33 +34=到达路径点附近...,48,30,0,0,当对象到达特定的路径点附近时,事件触å�‘。å�‚数表示è·�离路径点的范围å�Šå¾„,0,1,34 +35=敌人进入局部照明区...,0,0,0,0,当一个敌人å�•ä½�进入关è�”建筑物投射的局部照明区时,事件触å�‘。,0,1,35 +36=局部开å�¯...,0,3,0,0,当特定的局部å�˜é‡�å¼€å�¯(1)时,事件触å�‘。,0,1,36 +37=局部关闭...,0,3,0,0,当特定的局部å�˜é‡�关闭(0)时,事件触å�‘。,0,1,37 +38=首次å�—æ�Ÿ(仅指战斗),0,0,0,0,仅指作战时åˆ�次å�—到æ�Ÿä¼¤æ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,38 +39=一å�Šç”Ÿå‘½å€¼(仅指战斗),0,0,0,0,仅指作战时å�—到æ�Ÿä¼¤è€Œå�ªæœ‰ä¸€å�Šç”Ÿå‘½å€¼æ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,39 +40=四分之一生命值(仅指战斗),0,0,0,0,仅指作战时å�—到æ�Ÿä¼¤è€Œå�ªæœ‰å››åˆ†ä¹‹ä¸€ç”Ÿå‘½å€¼æ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,40 +41=首次å�—æ�Ÿ(任何æ�¥æº�),0,0,0,0,当å�—到任何æ�¥æº�的攻击而åˆ�次å�—æ�Ÿæ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,41 +42=一å�Šç”Ÿå‘½å€¼(任何æ�¥æº�),0,0,0,0,当å�—到任何æ�¥æº�的攻击而å�ªæœ‰ä¸€å�Šç”Ÿå‘½å€¼æ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,42 +43=四分之一生命值(任何æ�¥æº�),0,0,0,0,当å�—到任何æ�¥æº�的攻击而å�ªæœ‰å››åˆ†ä¹‹ä¸€ç”Ÿå‘½å€¼æ—¶ï¼Œäº‹ä»¶è§¦å�‘。,0,1,43 +44=å�—到攻击(作战方)...,0,2,0,0,当é�­åˆ°ç‰¹å®šä½œæˆ˜æ–¹çš„æŸ�些å�•ä½�的攻击时,事件触å�‘。,0,1,44 +45=环境照明 <=(å°�于)...,0,6,0,0,当环境照明亮度低于或等于æŸ�一确定值时,事件触å�‘。å�¯ç”¨å€¼ä»‹äºŽ 0 到 100之间。,0,1,45 +46=环境照明 >=(大于)...,0,6,0,0,当环境照明亮度超过或等于æŸ�一确定值时,事件触å�‘。å�¯ç”¨å€¼ä»‹äºŽ 0 到 100之间。,0,1,46 +47=æµ�é€�的情节时间...,0,6,0,0,从剧情开始计算游æˆ�çš„æµ�é€�时间。,0,1,47 +48=被任何事物摧æ¯�,0,0,0,0,当被任何事物摧æ¯�时,事件触å�‘。此触å�‘ä¸�能关è�”到航æ¯�上,å�¦åˆ™å…¶å­�机被摧æ¯�å�Žå†�æ‘§æ¯�航æ¯�,事件ä¸�会触å�‘。但先摧æ¯�航æ¯�,事件å�¯ä»¥è§¦å�‘。,0,1,48 +49=å…³è�”对象拾得木箱,0,0,0,0,当此事件关è�”对象拾得木箱时,事件触å�‘。,0,1,49 +50=任何å�•ä½�拾得木箱,0,0,0,0,当任何å�•ä½�拾得木箱时,事件触å�‘。,0,1,50 +51=éš�机延时...,0,6,0,0,进行éš�机延时,时间值介于特定值的 50% 到 150%。è�”机地图使用该æ�¡ä»¶å®¹æ˜“因为å�„玩家时间ä¸�对应造æˆ�“é‡�新连线错误â€�。。,0,1,51 +52=金钱低于...,0,6,0,0,当此事件作战方金钱值低于特定值时,事件触å�‘。,0,1,52 +53=é—´è°�伪装进入(无用)...,0,2,0,0,当间è°�伪装为特定作战方å�•ä½�进入时,事件触å�‘。,0,0,53 +54=é—´è°�伪装步兵进入(无用)...,0,10,0,0,当间è°�伪装为特定步兵类å�•ä½�进入时,事件触å�‘。,0,0,54 +55=被摧æ¯�%1 å�•ä½�%1 海军...,0,2,0,0,当特定作战方的所有海军å�•ä½�被摧æ¯�时,事件触å�‘。典型应用于游æˆ�结æ�Ÿæ�¡ä»¶ä¸­ã€‚,0,1,55 +56=被摧æ¯�%1 å�•ä½�%1 陆军...,0,2,0,0,当特定作战方的所有陆军å�•ä½�被摧æ¯�时,事件触å�‘。典型应用于游æˆ�结æ�Ÿæ�¡ä»¶ä¸­ã€‚,0,1,56 +57=建筑ä¸�å†�存在,0,8,0,0,当特定的建筑(归属于此事件作战方)ä¸�å†�存在于地图上时,事件触å�‘。,0,1,57 + +; YR +58=充足能é‡�供应...,0,2,0,0,当特定å�‚战方的电力充足时,事件触å�‘。,0,1,58,1 +59=进入或飞越...,0,2,0,0,当å�•ä½�%1 步兵%1 或飞行器移动进入或飞越此å�•元时,事件触å�‘。属于进入事件的拓展版,但ä¸�能关è�”建筑。,0,1,59,1 + +; 60 and 61 are tricky! They use code + 2 params... param type 46 includes the code 2, which is put in front of the 2 parameters +60=科技类型存在,46,48,0,0,地图上该科技存在的(无论所属方)数é‡�大于等于设定值,则触å�‘。此触å�‘计算“正在建造中的物体â€�。,0,1,60,1 +61=科技类型ä¸�存在,46,48,0,0,如果地图上(包括进入载具和建筑的)此类科技的数é‡�å°�于设定值,则触å�‘,数值设为0没有æ„�义。此触å�‘计算“正在建造中的物体â€�。,0,1,61,1 +86=任务倒计时少于...,0,6,0,0,当任务计时器时间秒数å°�于等于特定值触å�‘此事件。当计时器é‡�设时该事件将会é‡�新评估。,0,1,13 + + +; action format: +; #=Briefing, Control Code, P1 type, P2 type, P3 type, P4Type, P5Type, uses waypoint, uses tag, Obsolete, Description, used in TS, used in RA2, ID, [YR only - optional] +; if using negative number for type, param will be set to the absolute value of this number +; NOTE: Actions not listed in [Actions] but in [ActionsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS actions with RA2 special ones, add the new action to the [ActionsRA2] section. +; NOTE: ID must be the same like # + +[ActionsRA2] +0=-无行为-,0,0,0,0,0,0,0,0,0,这是一个空的行为。就是什么也ä¸�å�šï¼Œç›¸å½“于没有行为。为什么è¦�用?赶紧æ�¢æˆ�一个有用的行为啦╮(╯▽╰)â•­,0,1,0 +1=胜利者是...,0,2,0,0,0,0,0,0,0,胜利者必须是特定的æŸ�一方,那么游æˆ�就会立å�³ç»“æ�Ÿã€‚例如%1 游æˆ�者这一方是特定的。多人任务时,此行为会导致所有玩家失败。,0,1,1 +2=失败者是...,0,2,0,0,0,0,0,0,0,失败者必须是特定的æŸ�一方,那么游æˆ�就会立å�³ç»“æ�Ÿã€‚失败者指定的æŸ�一方,游æˆ�ç«‹å�³ç»“æ�Ÿã€‚例如%1 游æˆ�者这一方是特定的。如果设为é�žçŽ©å®¶çš„å›½å®¶ï¼Œä¼šé€ æˆ�任务胜利,典型例å­�是改动过国家顺åº�çš„MOD。多人任务时,此行为会导致所有玩家失败。,0,1,2 +3=生产开始...,0,2,0,0,0,0,0,0,0,特定作战方将开始生产å�•ä½�和建筑,å�ªå¯¹ç”µè„‘方有效。,0,1,3 +4=建立å°�队...,-1,7,6,0,0,0,0,0,0,本触å�‘事件的作战方(归属于作战å°�队设置的作战方)将会建立一个作战å°�队实例,但å°�队æˆ�员ä¸�会自动生æˆ�。å°�队属性ä¸�å�Œæ•ˆæžœä¸�å�Œï¼šå°�队有自动建造则使用工厂建造å°�队(对人类玩家无效)。å°�队有补充新兵则å�¬é›†åœ°å›¾ä¸Šå…�许é‡�组的å�•ä½�,或将有å�¯ä¸ºå°�队é‡�组æˆ�员的å°�队拆散å†�组建(对人类玩家有效)。å°�队实例的创建é�µå¾ªå°�队类型的最大值设置。,0,1,4 +5=解散å°�队...,-1,7,0,0,0,0,0,0,0,将特定å°�队类型的全部实例销æ¯�。å°�队的æˆ�员将被解散,å�œæ­¢æ‰§è¡Œè„šæœ¬ï¼Œå�¯å�šä¸ºæ–°å…µåР入其他å°�队中。,0,1,5 +6=全部æ�œç´¢...,0,2,0,0,0,0,0,0,0,军队全部å�•ä½�%1(归属于特定的%1作战方)进入æ�œç´¢æ¨¡å¼�(Hunt)。他们将æ�œç´¢å¹¶æ¶ˆç�­æ•Œäººã€‚设定在rules里的[Hunt]段,默认为ä¸�å��击。,0,1,6 +7=æ�´å†›(å°�队)...,-1,7,6,0,0,0,0,0,0,建立一个特定的æ�´å†›å°�队。效果为直接刷出æ�¥ï¼Œåˆ·å…µè·¯å¾„点为å°�队设置中的路径点。,0,1,7 +8=é™�è�½åŒºé—ªåЍ(路径点)...,0,0,0,0,0,0,1,0,0,TS残留功能,在特定的路径点出现一个空é™�舱é™�è�½åŒºåŸŸåŠ¨ç”»ï¼Œè¯¥åŠ¨ç”»ä¸ºå¾ªçŽ¯æ’­æ”¾ã€‚æ­¤åŒºåŸŸé™„è¿‘çš„åœ°å›¾ä¹Ÿå°†ä¼šæ˜¾ç¤ºã€‚,0,1,8 +9=å�–掉全部建筑...,0,2,0,0,0,0,0,0,0,å�–掉所有的特定建筑(为兑å�–现金)。典型应用在游æˆ�中电脑玩家å�‘动的最å�Žæ”»å‡»ä¸­ã€‚,0,1,9 +10=播放影片...,0,50,0,0,0,0,0,0,0,显示特定的影片(å…¨å±�幕)。游æˆ�在此期间将会暂å�œï¼Œåœ¨æ’­æ”¾å®Œæˆ�å�Žè‡ªåЍæ�¢å¤�正常。,0,1,10 +11=文本触å�‘事件...,-4,13,2,6,0,0,0,0,0,显示字符文件的文本标志<标签>。文本在csf文件中,需è¦�用csf编辑器编辑。以NOSTR:开头å�¯ä»¥ç›´æŽ¥æ˜¾ç¤ºå†…容,但空格会丢失,且对多语言支æŒ�ä¸�佳;å�¦å¤–所属方å�‚数仅在多人模å¼�有æ„�义。,0,1,11 +12=æ‘§æ¯�触å�‘事件...,-2,14,0,0,0,0,0,0,0,æ‘§æ¯�所有特定触å�‘事件类型的当å‰�实例。ä¸�会影å“�未æ�¥çš„触å�‘实例(包括正在建立中的)。,0,1,12 +13=(无效)自动创建开始...,0,2,0,0,0,0,0,0,0,特定作战方开始自动创建å°�队,如当建筑被攻击时自动调用空闲å�•ä½�去ç�­æŽ‰ä¾µç•¥è€…。本事件适å�ˆç”µè„‘方开始自动建造。,0,1,13 +14=更改所属...,0,2,0,0,0,0,0,0,0,更改å�•ä½�或建筑归属到特定作战方。,0,1,14 +15=å…�许胜利,0,0,0,0,0,0,0,0,0,清除一个“障ç¢�â€�å�Žå…�许游æˆ�者胜利。障ç¢�的数é‡�等于已建立而拥有此行为的触å�‘数。如果这个行为效果ä¸�好,请使用触å�‘链和 行为1 胜利者是...。,0,1,15 +16=显示全部地图,0,0,0,0,0,0,0,0,0,为游æˆ�者显示全部地图(清除黑幕)。è�”机地图使用该行为会造æˆ�“é‡�新连线错误â€�。,0,1,16 +17=显示路径点周围区域...,0,30,2,0,0,0,0,0,0,为游æˆ�者显示特定路径定一定范围内的地图区域。,0,1,17 +18=显示路径点的å�•元区域...,0,30,0,0,0,0,0,0,0,显示全部与特定路径点共享相å�ŒåŒºåŸŸçš„å�•元。该行为会产生一些附带效应,使用时è¦�谨慎ï¼�,0,1,18 +19=播放声音...,-7,16,2,0,0,0,0,0,0,播放特定的音效,定义在sound(md).ini。,0,1,19 +20=播放音ä¹�...,-8,17,0,0,0,0,0,0,0,播放特定的音ä¹�曲目,定义在theme(md).ini中。,0,1,20 +21=播放语音...,-6,18,2,0,0,0,0,0,0,播放特定的语音,定义在eva(md).ini中。,0,1,21 +22=强制触å�‘事件...,-2,14,0,0,0,0,0,0,0,ä¸�管特定触å�‘çš„æ�¡ä»¶ï¼Œå¼ºåˆ¶æ‰§è¡Œç‰¹å®šè§¦å�‘的行为。此行为有BUG,特定触å�‘会连续触å�‘6次,需è¦�在特定触å�‘中使用 行为12 æ‘§æ¯�触å�‘事件 æ‘§æ¯�其本身æ�¥é˜»æ­¢å…¶è§¦å�‘多次。,0,1,22 +23=计时开始,0,0,0,0,0,0,0,0,0,å�¯åŠ¨å…¨å±€ä»»åŠ¡è®¡æ—¶å™¨ï¼Œå­˜åœ¨äºŽæ¸¸æˆ�界é�¢å�³ä¸‹è§’。è¦�å¼€å�¯ä¸€ä¸ªæ­£å¸¸çš„计时器,需è¦�在一个触å�‘内ä¾�次设置 27 计时设置ã€�23 计时开始ã€�103 计时器文本 三个行为。,0,1,23 +24=计时å�œæ­¢,0,0,0,0,0,0,0,0,0,å�œæ­¢å…¨å±€ä»»åŠ¡è®¡æ—¶å™¨ï¼Œæ­¤æ—¶æ–‡æœ¬ä¼šæ¶ˆå¤±ã€‚,0,1,24 +25=计时增加...,0,6,0,0,0,0,0,0,0,按特定的时间增加全局任务计时器。,0,1,25 +26=计时缩短...,0,6,0,0,0,0,0,0,0,按特定的时间缩短全局任务计时器。但特定的时间值ä¸�能å°�于零。,0,1,26 +27=计时设置...,0,6,0,0,0,0,0,0,0,将全局任务计时器设置为特定的时间值。è¦�å¼€å�¯ä¸€ä¸ªæ­£å¸¸çš„计时器,需è¦�在一个触å�‘内ä¾�次设置 27 计时设置ã€�23 计时开始ã€�103 计时器文本 三个行为。,0,1,27 +28=全局开å�¯...,0,35,0,0,0,0,0,0,0,å¼€å�¯å…¨å±€å�˜é‡�。全局å�˜é‡�被命å��于 rules 文件的[VariableNames]段。全局å�˜é‡�å�¯ä»¥æ˜¯å…³é—­[0]或开å�¯[1]。,0,1,28 +29=全局关闭...,0,35,0,0,0,0,0,0,0,关闭全局å�˜é‡�。全局å�˜é‡�被命å��于 rules 文件的[VariableNames]段。全局å�˜é‡�å�¯ä»¥æ˜¯å…³é—­[0]或开å�¯[1]。,0,1,29 +30=自动建设基地...,0,37,0,0,0,0,0,0,0,åˆ�始化计算机é�­é�‡æˆ˜æ¨¡å¼�的建设控制,å�¯ä»¥æ˜¯[ON]或[OFF]状æ€�。当设为[ON]%1时,在å�•人任务中模å¼�/é�­é�‡æˆ˜æ¨¡å¼�计算机将接管控制(è¦�ç¡®ä¿�有建造厂)。,0,1,30 +31=é€�å�•元延伸黑幕,0,0,0,0,0,0,0,0,0,一步一步(按å�•å…ƒ)增大地图的黑幕(ä¸�å�¯è§�)区域,需è¦�相应的延伸黑幕INI设置æ‰�能使用。,0,1,31 +32=æ‘§æ¯�å…³è�”物体,0,0,0,0,0,0,0,0,0,æ‘§æ¯�该触å�‘å…³è�”的所有建筑%1 æ¡¥æ¢�%1 或å�•ä½�。如果是桥æ¢�,那么此触å�‘必须被用å�•元标记放置在目标桥æ¢�的下方(å�ªèƒ½æ”¾ç½®ä¸€ä¸ªå�•元标记)。,0,1,32 +33=添加一次特定的超级武器...,0,36,0,0,0,0,0,0,0,为拥有此触å�‘çš„å�‚战方添加一次(å�ªä¸€æ¬¡)特定的超级武器。,0,1,33 +34=永久添加特定的超级武器...,0,36,0,0,0,0,0,0,0,为拥有此触å�‘çš„å�‚战方添加永久的超级武器。,0,1,34 +35=超武首选目标为特定建筑...,0,8,0,0,0,0,0,0,0,指定拥有此触å�‘çš„å�‚战方超级武器攻击时的首选目标,其å�‚数为[BuildingTypes]里的ID。,0,1,35 +36=全部更改归属...,0,2,0,0,0,0,0,0,0,此触å�‘çš„å�‚战方的所有对象更改归属到特定å�‚战方。,0,1,36 +37=结盟...,0,2,0,0,0,0,0,0,0,使此触å�‘çš„å�‚战方与特定å�‚战方结盟,这个结盟是å�Œå�‘的。,0,1,37 +38=æˆ�为敌人...,0,2,0,0,0,0,0,0,0,使此触å�‘çš„å�‚战方与特定å�‚战方ä¸�结盟(宣战),这个宣战是å�Œå�‘的。被宣战的å�‚战方若是电脑,其会判定为存在敌人,进攻用AI触å�‘会被激活。,0,1,38 +39=更改视野等级(无用)...,0,6,0,0,0,0,0,0,0,更改游æˆ�者雷达图的视野等级。使用 1 为超常视野%1 2 为缩å°�视野。,0,0,39 +40=调整玩家视野...,0,0,21,22,23,24,0,0,0,调整玩家的地图å�¯åˆ°è¾¾èŒƒå›´ã€‚å�‚数:左%1上%1宽%1高,在这里左%1上é™�制左上角ä½�置, 宽%1高é™�制å�³ä¸‹è§’。,0,1,40 +41=播放动画在...,0,25,6,0,0,0,1,0,0,在特定的å�•元播放特定的动画。这里填的动画IDå¹¶ä¸�一定是Rules里指定的,而是实际加载进游æˆ�内存的顺åº�。如果有跳å�·æˆ–者ä¸�是从0开始的,请使用第三方工具获得正确åº�å�·æˆ–者确ä¿�从Rules读å�–çš„åº�å�·æ˜¯ä¿®æ­£è¿‡çš„。此外,这里的数值1表示如果原地存在一个类型相å�Œçš„动画则跳过创建;为2表示删除å‰�一个存在的å�Œç±»åž‹åŠ¨ç”»ã€‚ä¸º6表示é‡�建动画。,0,1,41 +42=爆炸在...,0,41,0,0,0,0,1,0,0,使用特定的武器,在特定的å�•å…ƒ%1 产生一个爆炸。用数字指定特定的武器,在Ares中é�µå¾ª[WeaponTypes]列表的注册顺åº�,ä¸�在列表内的武器无法直接知é�“注册顺åº�。,0,1,42 +43=在指定路径点创建一个Voxel碎片,0,29,0,0,0,0,1,0,0,在指定地点创造一个Voxel碎片,IDå�·åœ¨rulesçš„[VoxelAnims]下有定义。其中8是陨石。,0,1,43 +44=离å­�风暴开始(无用),0,6,0,0,0,0,0,0,0,TS残留功能,å�¯åŠ¨ç¦»å­�风暴,按特定的游æˆ�帧。,0,0,44 +45=离å­�风暴结æ�Ÿï¼ˆæ— ç”¨ï¼‰,0,0,0,0,0,0,0,0,0,TS残留功能,结æ�Ÿç¦»å­�风暴进程。,0,0,45 +46=ç¦�止用户输入,0,0,0,0,0,0,0,0,0,ç¦�止用户输入,失去鼠标无法控制。,0,1,46 +47=å…�许用户输入,0,0,0,0,0,0,0,0,0,å…�许用户输入,å�–消动作46的效果。,0,1,47 +48=移动并居中视野...,0,28,0,0,0,0,1,0,0,将战术视野移动到特定的路径点,速度为1-4的一个值,太大会造æˆ�å�¡å±�,无法移动视野。,0,1,48 +49=放大视野,0,0,0,0,0,0,0,0,0,放大战术视野,å‡�少分辨率,å�Œæ—¶ä¸�能输入。,0,1,49 +50=缩å°�视野,0,0,0,0,0,0,0,0,0,å�–消49放大视野的作用,缩å°�战术视野,增加分辨率,回å¤�输入。,0,1,50 +51=é‡�置全部地图的黑幕(未探测区),0,0,0,0,0,0,0,0,0,é�®è”½å…¨éƒ¨åœ°å›¾,0,1,51 +52=更改照明状æ€�(无用),0,42,0,0,0,0,0,0,0,更改æŸ�建筑的局部照明方å¼�。此触å�‘与æŸ�一å�¯ç”Ÿäº§å±€éƒ¨ç…§æ˜Žçš„建筑相关è�”。,0,0,52 +53=å…�许事件触å�‘,-2,14,0,0,0,0,0,0,0,å…�许被勾选为ç¦�止或触å�‘-54设为ç¦�止的触å�‘è¿�行。,0,1,53 +54=ç¦�止事件触å�‘,-2,14,0,0,0,0,0,0,0,ç¦�æ­¢å�¯ä»¥æ­£å¸¸æˆ–被触å�‘-53设为å�¯ä»¥è¿�行的触å�‘å�œæ­¢è¿�行。,0,1,54 +55=建立雷达事件,0,51,2,0,0,0,1,0,0,在特定的路径点建立雷达事件。0ã€�3ã€�4红圈 1ã€�2黄圈 5篮圈。,0,1,55 +56=å¼€å�¯å±€éƒ¨å�˜é‡�...,0,3,0,0,0,0,0,0,0,å¼€å�¯å±€éƒ¨å�˜é‡�。局部å�˜é‡�å�¯ä»¥æ˜¯ 关闭[0] 或 å¼€å�¯[1]。,0,1,56 +57=关闭局部å�˜é‡�...,0,3,0,0,0,0,0,0,0,关闭局部å�˜é‡�。局部å�˜é‡�å�¯ä»¥æ˜¯ 关闭[0] 或 å¼€å�¯[1]。,0,1,57 +58=æµ�星雨在...,0,44,0,0,0,0,1,0,0,在特定的路径点建立显示一个æµ�星雨事件。,0,0,58 +59=在特定路径点å‡�少矿石,0,30,0,0,0,0,0,0,0,å‡�少特定路径点周围的矿石。,0,1,59 +60=å�˜å�–å…³è�”建筑,0,0,0,0,0,0,0,0,0,å�–掉与此触å�‘å…³è�”的建筑。,0,1,60 +61=关闭关è�”的建筑,0,0,0,0,0,0,0,0,0,关闭与此触å�‘å…³è�”的建筑的供能,建筑将强制失去电力供应。效果与建筑中耗能=0相å�Œã€‚,0,1,61 +62=å�¯åЍ关è�”的建筑,0,0,0,0,0,0,0,0,0,å�¯åŠ¨ä¸Žæ­¤è§¦å�‘å…³è�”的建筑的供能,å�–消行为 61关闭关è�”的建筑 的效果。效果与建筑中耗能=1相å�Œã€‚,0,1,62 +63=给予100æ�Ÿä¼¤åœ¨...,0,30,0,0,0,0,0,0,0,在特定的ä½�置给予 100 点爆炸伤害,ä¸�会播放任何动画。,0,1,63 +64=闪光(较å°�)(无用)...,0,30,0,0,0,0,0,0,0,在特定区域显示一个较å°�的闪光。,0,0,64 +65=闪光(中等)(无用)...,0,30,0,0,0,0,0,0,0,在特定区域显示一个中等的闪光。,0,0,65 +66=闪光(较大)(无用)...,0,30,0,0,0,0,0,0,0,在特定区域显示一个较大的闪光。,0,0,66 +67=宣告胜利,0,0,0,0,0,0,0,0,0,宣告游æˆ�者胜利,但ä¸�会显示“任务完æˆ�â€�的图示。,0,1,67 +68=宣告失败,0,0,0,0,0,0,0,0,0,宣告游æˆ�者失败,但ä¸�会显示“任务失败â€�的图示。,0,1,68 +69=游æˆ�任务强制胜利,0,0,0,0,0,0,0,0,0,强制结æ�Ÿæ¸¸æˆ�任务,显示“任务完æˆ�â€�的图示。,0,1,69 +70=销æ¯�标签å�Šç›¸å…³è§¦å�‘...,-3,38,0,0,0,0,0,0,0,销æ¯�指定标签所有实例和所有关è�”的触å�‘。,0,1,70 +71=设置环境步幅...,0,45,0,0,0,0,0,0,0,设置环境亮度淡入步幅值,一般使用1020000000。行为71~73连用+行为142~144连用å�¯ä»¥å�šå‡ºå�˜æ›´å…‰ç…§æ•ˆæžœã€‚,0,1,71 +72=设置环境速率...,0,45,0,0,0,0,0,0,0,设置环境亮度淡入速率,一般使用1036000000。行为71~73连用+行为142~144连用å�¯ä»¥å�šå‡ºå�˜æ›´å…‰ç…§æ•ˆæžœã€‚,0,1,72 +73=设置环境亮度...,0,6,0,0,0,0,0,0,0,用新的环境亮度等级淡入替代原亮度,使用一个整数(0-100)代表光照设置里的(0.01-1)行为71~73连用+行为142~144连用å�¯ä»¥å�šå‡ºå�˜æ›´å…‰ç…§æ•ˆæžœã€‚,0,1,73 +74=AI 触å�‘开始...,0,2,0,0,0,0,0,0,0,å�¯åŠ¨ç‰¹å®šå�‚战方的 AI 触å�‘。,0,1,74 +75=AI 触å�‘å�œæ­¢...,0,2,0,0,0,0,0,0,0,å�œæ­¢ç‰¹å®šå�‚战方的 AI 触å�‘。,0,1,75 +76=AI 触å�‘å°�队比例...,0,6,0,0,0,0,0,0,0,AI 进行 AI 触å�‘å°�队建造的比例,数值越大越倾å�‘于使用局部的AI触å�‘(在地图内),越å°�越倾å�‘于使用全局的AI触å�‘(在ai(md).ini中)。100 = 全部 局部AI触å�‘å°�队%1 0 = 全部 全局AI触å�‘å°�队。,0,1,76 +77=飞行作战å°�队比例...,0,6,0,0,0,0,0,0,0,AI 进行飞行å°�队建造的比例(100 = 全部å°�队%1 0 = 全部éš�机)。,0,1,77 +78=步兵作战å°�队比例...,0,6,0,0,0,0,0,0,0,AI 进行步兵å°�队建造的比例(100 = 全部å°�队%1 0 = 全部éš�机)。,0,1,78 +79=作战å°�队å�•ä½�比例...,0,6,0,0,0,0,0,0,0,AI 进行å°�队å�•ä½�建造的比例(100 = 全部å°�队%1 0 = 全部éš�机)。,0,1,79 +80=æ�´å†›(å°�队)[在路径点]...,-1,7,6,0,0,0,1,0,0,在特定的路径点区域建造æ�´å†›ä½œæˆ˜å°�队。效果为直接刷出æ�¥ï¼Œåˆ·å…µè·¯å¾„点为行为设置中的路径点。,0,1,80 +81=自我唤醒,0,0,0,0,0,0,0,0,0,唤醒所有休æ�¯ï¼ˆsleep)或无指令(harmless)å�•ä½�进行防å�«æ¨¡å¼�。,0,1,81 +82=唤醒所有休æ�¯å�•ä½�,0,0,0,0,0,0,0,0,0,唤醒所有休æ�¯ï¼ˆsleep)的å�•ä½�模å¼�。,0,1,82 +83=唤醒所有无指令å�•ä½�,0,0,0,0,0,0,0,0,0,唤醒所有无指令(harmless)的å�•ä½�模å¼�。,0,1,83 +84=唤醒æŸ�å°�组å�•ä½�...,0,6,0,0,0,0,0,0,0,唤醒有该å°�组编å�·çš„æ— æŒ‡ä»¤ï¼ˆharmless)å�•ä½�。,0,1,84 +85=矿脉生长...,0,37,0,0,0,0,0,0,0,控制矿脉是å�¦ç”Ÿé•¿ã€‚,0,1,85 +86=矿石生长...,0,37,0,0,0,0,0,0,0,控制矿石是å�¦ç”Ÿé•¿ã€‚,0,1,86 +87=冰层延伸(无用)...,0,37,0,0,0,0,0,0,0,控制结冰é�¢ç§¯æ˜¯å�¦å¢žé•¿ã€‚,0,0,87 +88=ç²’å­�动画...,0,26,0,0,0,0,1,0,0,在特定区域显示粒å­�动画。,0,1,88 +89=删除粒å­�动画...,0,0,0,0,0,0,1,0,0,删除特定区域的粒å­�动画。,0,1,89 +90=闪电打击...,0,0,0,0,0,0,1,0,0,å�•个的离å­�风暴闪电打击。目å‰�å�ªæœ‰åœ¨çˆ±ä¼¦æ–¯ï¼ˆAlliance)编辑器上æ‰�å�¯ä»¥æ­£å¸¸ä½¿ç”¨è¿™ä¸ªåŠŸèƒ½ã€‚,0,1,90 +91=Go Berzerk(无用),0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 +92=å�¯åŠ¨çƒˆç�«é£Žæš´é˜²å¾¡ç³»ç»Ÿï¼ˆæ— ç”¨ï¼‰,0,0,0,0,0,0,0,0,0,å�¯åЍæŸ�一作战方的烈ç�«é£Žæš´é˜²å¾¡ç³»ç»Ÿã€‚,0,0,92 +93=关闭烈ç�«é£Žæš´é˜²å¾¡ç³»ç»Ÿï¼ˆæ— ç”¨ï¼‰,0,0,0,0,0,0,0,0,0,关闭æŸ�一作战方的烈ç�«é£Žæš´é˜²å¾¡ç³»ç»Ÿã€‚,0,0,93 +94=离å­�炮打击(无用),0,0,0,0,0,0,1,0,0,在特定的路径点实施离å­�炮打击。,0,0,94 +95=核弹打击...,0,0,0,0,0,0,1,0,0,在特定的路径点边缘实施核弹打击。,0,1,95 +96=化学导弹打击(无用),0,0,0,0,0,0,1,0,0,在特定的路径点实施化学导弹打击。,0,0,96 +97=Toggle Train Cargo(无用),0,0,0,0,0,0,0,0,0,TS残留功能,列车å�¸è´§ï¼Œåˆ‡æ�¢çжæ€�,0,0,97 +98=播入音效(éš�机)...,-7,16,0,0,0,0,0,0,0,在éš�机的路径点播放音效。这个动作ä¸�需è¦�设置é‡�å¤�触å�‘,å�¯åЍ以å�Žå�³åœ¨éš�机路径点ä¸�å�œæ’­æ”¾è¿™ä¸ªéŸ³æ•ˆï¼Œé—´é𔿗¶é—´éš�机。,0,1,98 +99=播放音效...,-7,16,0,0,0,0,1,0,0,在特定的路径点播放特定的音效。这个动作ä¸�需è¦�设置é‡�å¤�触å�‘,å�¯åЍ以å�Žå�³åœ¨ç‰¹å®šè·¯å¾„点ä¸�å�œæ’­æ”¾è¿™ä¸ªéŸ³æ•ˆï¼Œé—´é𔿗¶é—´éš�机。,0,1,99 +100=在雷达窗å�£æ’­æ”¾å½±ç‰‡...,0,50,0,0,0,0,0,0,0,显示特定的开场影片(在å°�å±�幕)。游æˆ�者ä»�能对步兵和å�•ä½�进行控制。,0,1,100 +101=é‡�置特定路径点的黑幕(未探测区)...,0,30,0,0,0,0,0,0,0,用黑幕覆盖特定的路径点。,0,1,101 +102=闪电风暴打击...,0,0,0,0,0,0,1,0,0,此触å�‘的所有者在特定的路径点实施闪电风暴打击。,0,1,102 +103=计时器文本...,-4,13,6,0,0,0,0,0,0,计时器显示什么文本标签(如文本是在csf文件中)。è¦�å¼€å�¯ä¸€ä¸ªæ­£å¸¸çš„计时器,需è¦�在一个触å�‘内ä¾�次设置 27 计时设置ã€�23 计时开始ã€�103 计时器文本 三个行为。,0,1,103 +104=闪亮å°�队...,-5,7,0,0,0,0,1,0,0,用特定的帧数闪亮特定的å°�队,填600以上效果较好。,0,1,104 +105=显示对è¯�注释框...(无用),-1,7,0,0,0,0,0,0,0,TS残留功能,在特定å°�队的上é�¢æ˜¾ç¤ºå¯¹è¯�注释框。,0,0,105 +106=设置科技等级(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,设置特定的å�•ä½�或建筑到特定的科技等级。,0,1,106 +107=超时空传é€�æ�´å†›(å°�队)[在路径点]... ,-1,7,0,0,0,0,1,0,0,ä¼ é€�æ�´å†›å°�队到特定的路径点区域,并制造一个超时空穿é€�的效果,而超时空传é€�显示的动画需è¦�与事件41连用。,0,1,107 +108=建立å°�木箱...,0,31,0,0,0,0,1,0,0,在特定的路径点建立一个特定内容的工具木箱。0金钱(大的)%1 1获得éš�机å�•ä½�%1 2医疗%1 3获得éš�形能力%1 4爆炸%1 5爆炸(大的)%1 6金钱%1 7黑幕é‡�ç½®%1 8清除黑幕%1 9护甲加强%1 10速度加强%1 11攻击加强%1 12获得核弹一枚%1 13空箱å­�%1 14å�‡çº§%1 15空箱å­�%1 16瓦斯气体%1 17一片矿。,0,1,108 +109=é“�幕装置作用于...,0,4,0,0,0,0,1,0,0,å°†é“�幕装置作用于特定的路径点。,0,1,109 +110=游æˆ�æš‚å�œ(ç§’)...,0,6,0,0,0,0,0,0,0,使游æˆ�æš‚å�œç‰¹å®šçš„秒数。,0,1,110 +111=驱é€�å� æ�®è€…,0,0,0,0,0,0,0,0,0,本行为将会从城市关è�”的建筑中驱é€�å� æ�®çš„作战å�•ä½�。è¦�使用本行为,必须在æ¯�一个建筑上关è�”一个å�•独的标签,é‡�å¤�的标签无用。默认æ¯�一个触å�‘对应一个标签,你å�¯ä»¥ä½¿ç”¨ 编辑→标签编辑 æ�¥å¢žåŠ è¿™ä¸ªè§¦å�‘的标签。,0,1,111 +112=ç«‹å�³å±…中当å‰�视野到特定路径点...,0,0,0,0,0,0,1,0,0,ç«‹å�³å°†æˆ˜æœ¯è§†é‡Žç§»åŠ¨åˆ°ç‰¹å®šçš„è·¯å¾„ç‚¹ã€‚,0,1,112 +113=欢呼,0,2,0,0,0,0,0,0,0,使所有步兵å�•ä½�进行欢呼动作。,0,1,113 +114=设置建造æ �到(0-3)...,0,6,0,0,0,0,0,0,0,强制使建造æ �跳转到特定的界é�¢ã€‚0建筑界é�¢%1 1防御界é�¢%1 2步兵界é�¢%1 3车辆界é�¢ã€‚,0,1,114 +115=闪动建造æ �中的å�•ä½�,-9,46,0,0,0,0,1,0,0,闪动建造æ �中的å�•ä½�,数值为闪çƒ�时间,一般为120比较å�ˆé€‚。,0,1,115 +116=å�œæ­¢ç‰¹å®šè·¯å¾„点的音效...,0,30,0,0,0,0,1,0,0,这个触å�‘å�¯ä»¥å�œæ­¢åœ¨æŸ�个路径点播放的音效。,0,1,116 +117=播放开场影片(游æˆ�æš‚å�œ)...,0,50,0,0,0,0,0,0,0,显示特定的游æˆ�开场影片。影片播放时,游æˆ�æš‚å�œã€‚播放影片期间游æˆ�者ä¸�å�¯è¿›è¡Œæ“�作。,0,1,117 +118=清除全部污染,0,0,0,0,0,0,0,0,0,将从地图上删除所有污染对象。,0,1,118 +119=将特定作战方全部摧æ¯�...,0,2,6,0,0,0,0,0,0,消ç�­ç‰¹å®šä½œæˆ˜æ–¹çš„æ‰€æœ‰å»ºç­‘ã€�å�•ä½�等。数值为1时表示直接移除å�•ä½�ä¸�产生任何破å��效果。,0,1,119 +120=将特定方建筑全部摧æ¯�...,0,2,0,0,0,0,0,0,0,æ‘§æ¯�特定作战方的所有建筑。,0,1,120 +121=将特定方陆军å�•ä½�全部摧æ¯�...,0,2,0,0,0,0,0,0,0,消ç�­ç‰¹å®šä½œæˆ˜æ–¹çš„æ‰€æœ‰é™†å†›å�•ä½�。,0,1,121 +122=将特定方海军å�•ä½�全部摧æ¯�...,0,2,0,0,0,0,0,0,0,消ç�­ç‰¹å®šä½œæˆ˜æ–¹çš„æ‰€æœ‰æµ·å†›å�•ä½�。,0,1,122 +123=心ç�µæŽ§åˆ¶åŸºåœ°...,0,2,0,0,0,0,0,0,0,此触å�‘的所有者将会通过心ç�µæŽ§åˆ¶æ•Œæ–¹æ‰€æœ‰å»ºç­‘。,0,1,123 +124=解除基地的心ç�µæŽ§åˆ¶...,0,2,0,0,0,0,0,0,0,此触å�‘的所有者将é‡�æ–°å�–得被敌方心ç�µæŽ§åˆ¶çš„æ‰€æœ‰å»ºç­‘的作战控制æ�ƒã€‚,0,1,124 +125=将建筑建于...,-10,47,6,0,0,0,1,0,0,此触å�‘的所有者将在本路径点获得该类型的建筑,如果目标路径点有建筑则ä¸�会建造,如果目标路径点有å�•ä½�则会强行弹开å�•ä½�。此动作的数值å�‚数用于控制是å�¦ç¦�止建造动画,为1则ä¸�播放。,0,1,125 +126=æ�¢å¤�至游æˆ�åˆ�始建筑å�•ä½�状æ€�...,0,2,0,0,0,0,0,0,0,此作战方游æˆ�åˆ�始的所有建筑和å�•ä½�将会é‡�建。会引起å�•ä½�冲击和覆盖图被清除。,0,1,126 +127=超时空事件效果 ...,0,6,0,0,0,0,0,0,0,将会用多帧画é�¢å…¨å±�幕平铺显示超时空穿梭事件效果,数值一般为60,填太大会游æˆ�å�¡æ­»ã€‚,0,1,127 +128=全部超时空传é€�到...,0,0,0,0,0,0,1,0,0,此触å�‘的作战方所有å�•ä½�将被传é€�到特定的路径点。,0,1,128 +129=设置超武充能完æˆ�度,-11,20,0,0,0,0,1,0,0,此触å�‘的所有者如果有超级武器,那么此超级武器的充能状æ€�会被设置为“完æˆ�了â€�百分之几 。使用一个整数(0-100)。,0,1,129 + +; YR +130=æ�¢å¤�åˆ�始建筑...,0,2,0,0,0,0,0,0,0,该å�‚战方游æˆ�åˆ�始的所有建筑将会被修å¤�或é‡�建。 会引起å�•ä½�冲击和覆盖图清除。,0,1,130,1 +131=闪亮特定类型的建筑...,-9,47,0,0,0,0,1,0,0,该触å�‘所属的所有特定类型的建筑将闪亮特定的时间。,0,1,131,1 +132=设置超武充能时间,-11,20,0,0,0,0,1,0,0,设置任何数值,设置触å�‘所属方超武至充能完毕的剩余时间,使用画é�¢å¸§æ•°(1游æˆ�ç§’=15帧),将会覆盖ini设置的RechargeTime,0,1,132,1 +133=å¤�ä½�超级武器充能时间,0,20,0,0,0,0,0,0,0,é‡�置触å�‘所属方超级武器充能时间,使用ini设置的RechargeTime。,0,1,133,1 +134=超级武器å¤�ä½�,0,36,0,0,0,0,0,0,0,就与间è°�进入超级武器一样,超级武器将会å¤�ä½�(é‡�新开始倒计时)。,0,1,134,1 +135=超武首选目标路径点...,0,0,0,0,0,0,1,0,0,该触å�‘的所有者会将超级武器的攻击目标指å�‘此路径点。,0,1,135,1 +136=超武首选目标路径点清除,0,0,0,0,0,0,0,0,0,该触å�‘的所有者将返回,正常确定其超级武器的攻击目标。,0,1,136,1 +137=基地中心å�•元设置,0,0,0,0,0,0,1,0,0,此触å�‘的所有者将认为此路径点为其基地的中心å�•元,脚本里“集å�ˆåœ¨åŸºåœ°é™„è¿‘â€�将会集å�ˆåœ¨è¿™ä¸ªè·¯å¾„点附近。,0,1,137,1 +138=基地中心å�•元清除,0,0,0,0,0,0,0,0,0,此触å�‘的所有者将返回,并去计算其中心ä½�置。,0,1,138,1 +139=雷达信æ�¯ä¸­æ–­,0,6,0,0,0,0,0,0,0,此触å�‘的所有者的雷达将中断一段时间,填太å°�会没有效果。,0,1,139,1 +140=设置防御目标å�•å…ƒ,0,0,0,0,0,0,1,0,0,此触å�‘的所有者将自动对特定的路径点区域进行防御行动。,0,1,140,1 +141=清除防御目标å�•å…ƒ,0,0,0,0,0,0,0,0,0,此触å�‘的所有者将返回到正常情况下的防御目标区域。,0,1,141,1 +142=é‡�绘红色,0,6,0,0,0,0,0,0,0,é‡�绘å±�幕的红色部分。采用百分比,这里的50代表光照里的0.5。行为71~73连用+行为142~144连用å�¯ä»¥å�šå‡ºå�˜æ›´å…‰ç…§æ•ˆæžœã€‚,0,1,142,1 +143=é‡�绘绿色,0,6,0,0,0,0,0,0,0,é‡�绘å±�幕的绿色部分。采用百分比,这里的50代表光照里的0.5。行为71~73连用+行为142~144连用å�¯ä»¥å�šå‡ºå�˜æ›´å…‰ç…§æ•ˆæžœã€‚,0,1,143,1 +144=é‡�绘è“�色,0,6,0,0,0,0,0,0,0,é‡�绘å±�幕的è“�色部分。采用百分比,这里的50代表光照里的0.5。行为71~73连用+行为142~144连用å�¯ä»¥å�šå‡ºå�˜æ›´å…‰ç…§æ•ˆæžœã€‚,0,1,144,1 +145=战术视野跳转至基地,0,0,0,0,0,0,0,0,0,和按下“Hâ€�键效果相å�Œã€‚,0,1,145,1 +;bellow only added in hares +146=使步兵å�•ä½�进入惊æ��状æ€�,0,2,0,0,0,0,0,0,0,使指定作战方所有的步兵å�•ä½�进入惊æ��动作状æ€�(如果支æŒ�),0,1,146,1 +147=在战场区域全å±�铺展绘制动画,0,25,6,0,0,0,0,0,0,在å±�幕固定ä½�置平铺绘制多帧图åƒ�,0,1,147,1 +148=å…�许/ç¦�止所属方共享视野,0,2,15,0,0,0,0,0,0,å…�许/ç¦�止指定所属方共享视野给å�‹æ–¹,0,1,148,1 +149=设置触å�‘éš�机分é‡�,-2,14,6,0,0,0,0,0,0,设置指定触å�‘çš„éš�机分é‡�,与行为150é…�å�ˆä½¿ç”¨ï¼›è´Ÿæ•°ä¸�会更改触å�‘的分é‡�,å�¯ç”¨äºŽè¡Œä¸º150罗列事件使用。,0,1,149,1 +150=éš�机å…�许下列触å�‘,0,0,0,0,0,0,0,0,0,将该行为(从属于当å‰�触å�‘事件)以下的多个行为所指定的触å�‘按照分é‡�éš�机抽å�–,并将其ç¦�止状æ€�改为å…�许,与行为149é…�å�ˆä½¿ç”¨ã€‚,0,1,150,1 +151=建筑炮塔转动,0,6,15,0,0,0,0,0,0,将触å�‘绑定的建筑转动其炮塔特定方å�‘,如果布尔值为真,则表示这个转动é‡�是0-255之间的ç»�对方å�‘æ•°,0,1,151,1 +152=全部归入å°�队...,-1,7,2,0,0,0,0,0,0,作战方%1全部å�•ä½�被强制招募进指定å°�队类型。这些å�•ä½�将被这å�Œä¸€ä¸ªå°�队实例管ç�†ã€‚,0,1,152 +153=控制存档按钮å�¯ç”¨æ€§,0,15,0,0,0,0,0,0,0,控制存档按钮是å�¦ä¸ºå…�许/ç¦�止状æ€�,0,1,153,1 +154=设置å�‚战方地图边界,0,6,0,0,0,0,0,0,0,设置å�‚战方的地图边界,仅能为0-4之间的一个枚举值,0,1,154,1 + + +[Chinese-ActionsRA2] +0=-无行为-,0,0,0,0,0,0,0,0,0,这是一个空的行为。就是什么也ä¸�å�šï¼Œç›¸å½“于没有行为。为什么è¦�用?赶紧æ�¢æˆ�一个有用的行为啦╮(╯▽╰)â•­,0,1,0 +1=胜利者是...,0,2,0,0,0,0,0,0,0,胜利者必须是特定的æŸ�一方,那么游æˆ�就会立å�³ç»“æ�Ÿã€‚例如%1 游æˆ�者这一方是特定的。多人任务时,此行为会导致所有玩家失败。,0,1,1 +2=失败者是...,0,2,0,0,0,0,0,0,0,失败者必须是特定的æŸ�一方,那么游æˆ�就会立å�³ç»“æ�Ÿã€‚失败者指定的æŸ�一方,游æˆ�ç«‹å�³ç»“æ�Ÿã€‚例如%1 游æˆ�者这一方是特定的。如果设为é�žçŽ©å®¶çš„å›½å®¶ï¼Œä¼šé€ æˆ�任务胜利,典型例å­�是改动过国家顺åº�çš„MOD。多人任务时,此行为会导致所有玩家失败。,0,1,2 +3=生产开始...,0,2,0,0,0,0,0,0,0,特定作战方将开始生产å�•ä½�和建筑,å�ªå¯¹ç”µè„‘方有效。,0,1,3 +4=建立å°�队...,-1,7,6,0,0,0,0,0,0,本触å�‘事件的作战方(归属于作战å°�队设置的作战方)将会建立一个作战å°�队实例,但å°�队æˆ�员ä¸�会自动生æˆ�。å°�队属性ä¸�å�Œæ•ˆæžœä¸�å�Œï¼šå°�队有自动建造则使用工厂建造å°�队(对人类玩家无效)。å°�队有补充新兵则å�¬é›†åœ°å›¾ä¸Šå…�许é‡�组的å�•ä½�,或将有å�¯ä¸ºå°�队é‡�组æˆ�员的å°�队拆散å†�组建(对人类玩家有效)。å°�队实例的创建é�µå¾ªå°�队类型的最大值设置。,0,1,4 +5=解散å°�队...,-1,7,0,0,0,0,0,0,0,将特定å°�队类型的全部实例销æ¯�。å°�队的æˆ�员将被解散,å�œæ­¢æ‰§è¡Œè„šæœ¬ï¼Œå�¯å�šä¸ºæ–°å…µåР入其他å°�队中。,0,1,5 +6=全部æ�œç´¢...,0,2,0,0,0,0,0,0,0,军队全部å�•ä½�%1(归属于特定的%1作战方)进入æ�œç´¢æ¨¡å¼�(Hunt)。他们将æ�œç´¢å¹¶æ¶ˆç�­æ•Œäººã€‚设定在rules里的[Hunt]段,默认为ä¸�å��击。,0,1,6 +7=æ�´å†›(å°�队)...,-1,7,6,0,0,0,0,0,0,建立一个特定的æ�´å†›å°�队。效果为直接刷出æ�¥ï¼Œåˆ·å…µè·¯å¾„点为å°�队设置中的路径点。,0,1,7 +8=é™�è�½åŒºé—ªåЍ(路径点)...,0,0,0,0,0,0,1,0,0,TS残留功能,在特定的路径点出现一个空é™�舱é™�è�½åŒºåŸŸåŠ¨ç”»ï¼Œè¯¥åŠ¨ç”»ä¸ºå¾ªçŽ¯æ’­æ”¾ã€‚æ­¤åŒºåŸŸé™„è¿‘çš„åœ°å›¾ä¹Ÿå°†ä¼šæ˜¾ç¤ºã€‚,0,1,8 +9=å�–掉全部建筑...,0,2,0,0,0,0,0,0,0,å�–掉所有的特定建筑(为兑å�–现金)。典型应用在游æˆ�中电脑玩家å�‘动的最å�Žæ”»å‡»ä¸­ã€‚,0,1,9 +10=播放影片...,0,50,0,0,0,0,0,0,0,显示特定的影片(å…¨å±�幕)。游æˆ�在此期间将会暂å�œï¼Œåœ¨æ’­æ”¾å®Œæˆ�å�Žè‡ªåЍæ�¢å¤�正常。,0,1,10 +11=文本触å�‘事件...,-4,13,2,6,0,0,0,0,0,显示字符文件的文本标志<标签>。文本在csf文件中,需è¦�用csf编辑器编辑。以NOSTR:开头å�¯ä»¥ç›´æŽ¥æ˜¾ç¤ºå†…容,但空格会丢失,且对多语言支æŒ�ä¸�佳;å�¦å¤–所属方å�‚数仅在多人模å¼�有æ„�义。,0,1,11 +12=æ‘§æ¯�触å�‘事件...,-2,14,0,0,0,0,0,0,0,æ‘§æ¯�所有特定触å�‘事件类型的当å‰�实例。ä¸�会影å“�未æ�¥çš„触å�‘实例(包括正在建立中的)。,0,1,12 +13=(无效)自动创建开始...,0,2,0,0,0,0,0,0,0,特定作战方开始自动创建å°�队,如当建筑被攻击时自动调用空闲å�•ä½�去ç�­æŽ‰ä¾µç•¥è€…。本事件适å�ˆç”µè„‘方开始自动建造。,0,1,13 +14=更改所属...,0,2,0,0,0,0,0,0,0,更改å�•ä½�或建筑归属到特定作战方。,0,1,14 +15=å…�许胜利,0,0,0,0,0,0,0,0,0,清除一个“障ç¢�â€�å�Žå…�许游æˆ�者胜利。障ç¢�的数é‡�等于已建立而拥有此行为的触å�‘数。如果这个行为效果ä¸�好,请使用触å�‘链和 行为1 胜利者是...。,0,1,15 +16=显示全部地图,0,0,0,0,0,0,0,0,0,为游æˆ�者显示全部地图(清除黑幕)。è�”机地图使用该行为会造æˆ�“é‡�新连线错误â€�。,0,1,16 +17=显示路径点周围区域...,0,30,2,0,0,0,0,0,0,为游æˆ�者显示特定路径定一定范围内的地图区域。,0,1,17 +18=显示路径点的å�•元区域...,0,30,0,0,0,0,0,0,0,显示全部与特定路径点共享相å�ŒåŒºåŸŸçš„å�•元。该行为会产生一些附带效应,使用时è¦�谨慎ï¼�,0,1,18 +19=播放声音...,-7,16,2,0,0,0,0,0,0,播放特定的音效,定义在sound(md).ini。,0,1,19 +20=播放音ä¹�...,-8,17,0,0,0,0,0,0,0,播放特定的音ä¹�曲目,定义在theme(md).ini中。,0,1,20 +21=播放语音...,-6,18,2,0,0,0,0,0,0,播放特定的语音,定义在eva(md).ini中。,0,1,21 +22=强制触å�‘事件...,-2,14,0,0,0,0,0,0,0,ä¸�管特定触å�‘çš„æ�¡ä»¶ï¼Œå¼ºåˆ¶æ‰§è¡Œç‰¹å®šè§¦å�‘的行为。此行为有BUG,特定触å�‘会连续触å�‘6次,需è¦�在特定触å�‘中使用 行为12 æ‘§æ¯�触å�‘事件 æ‘§æ¯�其本身æ�¥é˜»æ­¢å…¶è§¦å�‘多次。,0,1,22 +23=计时开始,0,0,0,0,0,0,0,0,0,å�¯åŠ¨å…¨å±€ä»»åŠ¡è®¡æ—¶å™¨ï¼Œå­˜åœ¨äºŽæ¸¸æˆ�界é�¢å�³ä¸‹è§’。è¦�å¼€å�¯ä¸€ä¸ªæ­£å¸¸çš„计时器,需è¦�在一个触å�‘内ä¾�次设置 27 计时设置ã€�23 计时开始ã€�103 计时器文本 三个行为。,0,1,23 +24=计时å�œæ­¢,0,0,0,0,0,0,0,0,0,å�œæ­¢å…¨å±€ä»»åŠ¡è®¡æ—¶å™¨ï¼Œæ­¤æ—¶æ–‡æœ¬ä¼šæ¶ˆå¤±ã€‚,0,1,24 +25=计时增加...,0,6,0,0,0,0,0,0,0,按特定的时间增加全局任务计时器。,0,1,25 +26=计时缩短...,0,6,0,0,0,0,0,0,0,按特定的时间缩短全局任务计时器。但特定的时间值ä¸�能å°�于零。,0,1,26 +27=计时设置...,0,6,0,0,0,0,0,0,0,将全局任务计时器设置为特定的时间值。è¦�å¼€å�¯ä¸€ä¸ªæ­£å¸¸çš„计时器,需è¦�在一个触å�‘内ä¾�次设置 27 计时设置ã€�23 计时开始ã€�103 计时器文本 三个行为。,0,1,27 +28=全局开å�¯...,0,35,0,0,0,0,0,0,0,å¼€å�¯å…¨å±€å�˜é‡�。全局å�˜é‡�被命å��于 rules 文件的[VariableNames]段。全局å�˜é‡�å�¯ä»¥æ˜¯å…³é—­[0]或开å�¯[1]。,0,1,28 +29=全局关闭...,0,35,0,0,0,0,0,0,0,关闭全局å�˜é‡�。全局å�˜é‡�被命å��于 rules 文件的[VariableNames]段。全局å�˜é‡�å�¯ä»¥æ˜¯å…³é—­[0]或开å�¯[1]。,0,1,29 +30=自动建设基地...,0,37,0,0,0,0,0,0,0,åˆ�始化计算机é�­é�‡æˆ˜æ¨¡å¼�的建设控制,å�¯ä»¥æ˜¯[ON]或[OFF]状æ€�。当设为[ON]%1时,在å�•人任务中模å¼�/é�­é�‡æˆ˜æ¨¡å¼�计算机将接管控制(è¦�ç¡®ä¿�有建造厂)。,0,1,30 +31=é€�å�•元延伸黑幕,0,0,0,0,0,0,0,0,0,一步一步(按å�•å…ƒ)增大地图的黑幕(ä¸�å�¯è§�)区域,需è¦�相应的延伸黑幕INI设置æ‰�能使用。,0,1,31 +32=æ‘§æ¯�å…³è�”物体,0,0,0,0,0,0,0,0,0,æ‘§æ¯�该触å�‘å…³è�”的所有建筑%1 æ¡¥æ¢�%1 或å�•ä½�。如果是桥æ¢�,那么此触å�‘必须被用å�•元标记放置在目标桥æ¢�的下方(å�ªèƒ½æ”¾ç½®ä¸€ä¸ªå�•元标记)。,0,1,32 +33=添加一次特定的超级武器...,0,36,0,0,0,0,0,0,0,为拥有此触å�‘çš„å�‚战方添加一次(å�ªä¸€æ¬¡)特定的超级武器。,0,1,33 +34=永久添加特定的超级武器...,0,36,0,0,0,0,0,0,0,为拥有此触å�‘çš„å�‚战方添加永久的超级武器。,0,1,34 +35=超武首选目标为特定建筑...,0,8,0,0,0,0,0,0,0,指定拥有此触å�‘çš„å�‚战方超级武器攻击时的首选目标,其å�‚数为[BuildingTypes]里的ID。,0,1,35 +36=全部更改归属...,0,2,0,0,0,0,0,0,0,此触å�‘çš„å�‚战方的所有对象更改归属到特定å�‚战方。,0,1,36 +37=结盟...,0,2,0,0,0,0,0,0,0,使此触å�‘çš„å�‚战方与特定å�‚战方结盟,这个结盟是å�Œå�‘的。,0,1,37 +38=æˆ�为敌人...,0,2,0,0,0,0,0,0,0,使此触å�‘çš„å�‚战方与特定å�‚战方ä¸�结盟(宣战),这个宣战是å�Œå�‘的。被宣战的å�‚战方若是电脑,其会判定为存在敌人,进攻用AI触å�‘会被激活。,0,1,38 +39=更改视野等级(无用)...,0,6,0,0,0,0,0,0,0,更改游æˆ�者雷达图的视野等级。使用 1 为超常视野%1 2 为缩å°�视野。,0,0,39 +40=调整玩家视野...,0,0,21,22,23,24,0,0,0,调整玩家的地图å�¯åˆ°è¾¾èŒƒå›´ã€‚å�‚数:左%1上%1宽%1高,在这里左%1上é™�制左上角ä½�置, 宽%1高é™�制å�³ä¸‹è§’。,0,1,40 +41=播放动画在...,0,25,6,0,0,0,1,0,0,在特定的å�•元播放特定的动画。这里填的动画IDå¹¶ä¸�一定是Rules里指定的,而是实际加载进游æˆ�内存的顺åº�。如果有跳å�·æˆ–者ä¸�是从0开始的,请使用第三方工具获得正确åº�å�·æˆ–者确ä¿�从Rules读å�–çš„åº�å�·æ˜¯ä¿®æ­£è¿‡çš„。此外,这里的数值1表示如果原地存在一个类型相å�Œçš„动画则跳过创建;为2表示删除å‰�一个存在的å�Œç±»åž‹åŠ¨ç”»ã€‚ä¸º6表示é‡�建动画。,0,1,41 +42=爆炸在...,0,41,0,0,0,0,1,0,0,使用特定的武器,在特定的å�•å…ƒ%1 产生一个爆炸。用数字指定特定的武器,在Ares中é�µå¾ª[WeaponTypes]列表的注册顺åº�,ä¸�在列表内的武器无法直接知é�“注册顺åº�。,0,1,42 +43=在指定路径点创建一个Voxel碎片,0,29,0,0,0,0,1,0,0,在指定地点创造一个Voxel碎片,IDå�·åœ¨rulesçš„[VoxelAnims]下有定义。其中8是陨石。,0,1,43 +44=离å­�风暴开始(无用),0,6,0,0,0,0,0,0,0,TS残留功能,å�¯åŠ¨ç¦»å­�风暴,按特定的游æˆ�帧。,0,0,44 +45=离å­�风暴结æ�Ÿï¼ˆæ— ç”¨ï¼‰,0,0,0,0,0,0,0,0,0,TS残留功能,结æ�Ÿç¦»å­�风暴进程。,0,0,45 +46=ç¦�止用户输入,0,0,0,0,0,0,0,0,0,ç¦�止用户输入,失去鼠标无法控制。,0,1,46 +47=å…�许用户输入,0,0,0,0,0,0,0,0,0,å…�许用户输入,å�–消动作46的效果。,0,1,47 +48=移动并居中视野...,0,28,0,0,0,0,1,0,0,将战术视野移动到特定的路径点,速度为1-4的一个值,太大会造æˆ�å�¡å±�,无法移动视野。,0,1,48 +49=放大视野,0,0,0,0,0,0,0,0,0,放大战术视野,å‡�少分辨率,å�Œæ—¶ä¸�能输入。,0,1,49 +50=缩å°�视野,0,0,0,0,0,0,0,0,0,å�–消49放大视野的作用,缩å°�战术视野,增加分辨率,回å¤�输入。,0,1,50 +51=é‡�置全部地图的黑幕(未探测区),0,0,0,0,0,0,0,0,0,é�®è”½å…¨éƒ¨åœ°å›¾,0,1,51 +52=更改照明状æ€�(无用),0,42,0,0,0,0,0,0,0,更改æŸ�建筑的局部照明方å¼�。此触å�‘与æŸ�一å�¯ç”Ÿäº§å±€éƒ¨ç…§æ˜Žçš„建筑相关è�”。,0,0,52 +53=å…�许事件触å�‘,-2,14,0,0,0,0,0,0,0,å…�许被勾选为ç¦�止或触å�‘-54设为ç¦�止的触å�‘è¿�行。,0,1,53 +54=ç¦�止事件触å�‘,-2,14,0,0,0,0,0,0,0,ç¦�æ­¢å�¯ä»¥æ­£å¸¸æˆ–被触å�‘-53设为å�¯ä»¥è¿�行的触å�‘å�œæ­¢è¿�行。,0,1,54 +55=建立雷达事件,0,51,2,0,0,0,1,0,0,在特定的路径点建立雷达事件。0ã€�3ã€�4红圈 1ã€�2黄圈 5篮圈。,0,1,55 +56=å¼€å�¯å±€éƒ¨å�˜é‡�...,0,3,0,0,0,0,0,0,0,å¼€å�¯å±€éƒ¨å�˜é‡�。局部å�˜é‡�å�¯ä»¥æ˜¯ 关闭[0] 或 å¼€å�¯[1]。,0,1,56 +57=关闭局部å�˜é‡�...,0,3,0,0,0,0,0,0,0,关闭局部å�˜é‡�。局部å�˜é‡�å�¯ä»¥æ˜¯ 关闭[0] 或 å¼€å�¯[1]。,0,1,57 +58=æµ�星雨在...,0,44,0,0,0,0,1,0,0,在特定的路径点建立显示一个æµ�星雨事件。,0,0,58 +59=在特定路径点å‡�少矿石,0,30,0,0,0,0,0,0,0,å‡�少特定路径点周围的矿石。,0,1,59 +60=å�˜å�–å…³è�”建筑,0,0,0,0,0,0,0,0,0,å�–掉与此触å�‘å…³è�”的建筑。,0,1,60 +61=关闭关è�”的建筑,0,0,0,0,0,0,0,0,0,关闭与此触å�‘å…³è�”的建筑的供能,建筑将强制失去电力供应。效果与建筑中耗能=0相å�Œã€‚,0,1,61 +62=å�¯åЍ关è�”的建筑,0,0,0,0,0,0,0,0,0,å�¯åŠ¨ä¸Žæ­¤è§¦å�‘å…³è�”的建筑的供能,å�–消行为 61关闭关è�”的建筑 的效果。效果与建筑中耗能=1相å�Œã€‚,0,1,62 +63=给予100æ�Ÿä¼¤åœ¨...,0,30,0,0,0,0,0,0,0,在特定的ä½�置给予 100 点爆炸伤害,ä¸�会播放任何动画。,0,1,63 +64=闪光(较å°�)(无用)...,0,30,0,0,0,0,0,0,0,在特定区域显示一个较å°�的闪光。,0,0,64 +65=闪光(中等)(无用)...,0,30,0,0,0,0,0,0,0,在特定区域显示一个中等的闪光。,0,0,65 +66=闪光(较大)(无用)...,0,30,0,0,0,0,0,0,0,在特定区域显示一个较大的闪光。,0,0,66 +67=宣告胜利,0,0,0,0,0,0,0,0,0,宣告游æˆ�者胜利,但ä¸�会显示“任务完æˆ�â€�的图示。,0,1,67 +68=宣告失败,0,0,0,0,0,0,0,0,0,宣告游æˆ�者失败,但ä¸�会显示“任务失败â€�的图示。,0,1,68 +69=游æˆ�任务强制胜利,0,0,0,0,0,0,0,0,0,强制结æ�Ÿæ¸¸æˆ�任务,显示“任务完æˆ�â€�的图示。,0,1,69 +70=销æ¯�标签å�Šç›¸å…³è§¦å�‘...,-3,38,0,0,0,0,0,0,0,销æ¯�指定标签所有实例和所有关è�”的触å�‘。,0,1,70 +71=设置环境步幅...,0,45,0,0,0,0,0,0,0,设置环境亮度淡入步幅值,一般使用1020000000。行为71~73连用+行为142~144连用å�¯ä»¥å�šå‡ºå�˜æ›´å…‰ç…§æ•ˆæžœã€‚,0,1,71 +72=设置环境速率...,0,45,0,0,0,0,0,0,0,设置环境亮度淡入速率,一般使用1036000000。行为71~73连用+行为142~144连用å�¯ä»¥å�šå‡ºå�˜æ›´å…‰ç…§æ•ˆæžœã€‚,0,1,72 +73=设置环境亮度...,0,6,0,0,0,0,0,0,0,用新的环境亮度等级淡入替代原亮度,使用一个整数(0-100)代表光照设置里的(0.01-1)行为71~73连用+行为142~144连用å�¯ä»¥å�šå‡ºå�˜æ›´å…‰ç…§æ•ˆæžœã€‚,0,1,73 +74=AI 触å�‘开始...,0,2,0,0,0,0,0,0,0,å�¯åŠ¨ç‰¹å®šå�‚战方的 AI 触å�‘。,0,1,74 +75=AI 触å�‘å�œæ­¢...,0,2,0,0,0,0,0,0,0,å�œæ­¢ç‰¹å®šå�‚战方的 AI 触å�‘。,0,1,75 +76=AI 触å�‘å°�队比例...,0,6,0,0,0,0,0,0,0,AI 进行 AI 触å�‘å°�队建造的比例,数值越大越倾å�‘于使用局部的AI触å�‘(在地图内),越å°�越倾å�‘于使用全局的AI触å�‘(在ai(md).ini中)。100 = 全部 局部AI触å�‘å°�队%1 0 = 全部 全局AI触å�‘å°�队。,0,1,76 +77=飞行作战å°�队比例...,0,6,0,0,0,0,0,0,0,AI 进行飞行å°�队建造的比例(100 = 全部å°�队%1 0 = 全部éš�机)。,0,1,77 +78=步兵作战å°�队比例...,0,6,0,0,0,0,0,0,0,AI 进行步兵å°�队建造的比例(100 = 全部å°�队%1 0 = 全部éš�机)。,0,1,78 +79=作战å°�队å�•ä½�比例...,0,6,0,0,0,0,0,0,0,AI 进行å°�队å�•ä½�建造的比例(100 = 全部å°�队%1 0 = 全部éš�机)。,0,1,79 +80=æ�´å†›(å°�队)[在路径点]...,-1,7,6,0,0,0,1,0,0,在特定的路径点区域建造æ�´å†›ä½œæˆ˜å°�队。效果为直接刷出æ�¥ï¼Œåˆ·å…µè·¯å¾„点为行为设置中的路径点。,0,1,80 +81=自我唤醒,0,0,0,0,0,0,0,0,0,唤醒所有休æ�¯ï¼ˆsleep)或无指令(harmless)å�•ä½�进行防å�«æ¨¡å¼�。,0,1,81 +82=唤醒所有休æ�¯å�•ä½�,0,0,0,0,0,0,0,0,0,唤醒所有休æ�¯ï¼ˆsleep)的å�•ä½�模å¼�。,0,1,82 +83=唤醒所有无指令å�•ä½�,0,0,0,0,0,0,0,0,0,唤醒所有无指令(harmless)的å�•ä½�模å¼�。,0,1,83 +84=唤醒æŸ�å°�组å�•ä½�...,0,6,0,0,0,0,0,0,0,唤醒有该å°�组编å�·çš„æ— æŒ‡ä»¤ï¼ˆharmless)å�•ä½�。,0,1,84 +85=矿脉生长...,0,37,0,0,0,0,0,0,0,控制矿脉是å�¦ç”Ÿé•¿ã€‚,0,1,85 +86=矿石生长...,0,37,0,0,0,0,0,0,0,控制矿石是å�¦ç”Ÿé•¿ã€‚,0,1,86 +87=冰层延伸(无用)...,0,37,0,0,0,0,0,0,0,控制结冰é�¢ç§¯æ˜¯å�¦å¢žé•¿ã€‚,0,0,87 +88=ç²’å­�动画...,0,26,0,0,0,0,1,0,0,在特定区域显示粒å­�动画。,0,1,88 +89=删除粒å­�动画...,0,0,0,0,0,0,1,0,0,删除特定区域的粒å­�动画。,0,1,89 +90=闪电打击...,0,0,0,0,0,0,1,0,0,å�•个的离å­�风暴闪电打击。目å‰�å�ªæœ‰åœ¨çˆ±ä¼¦æ–¯ï¼ˆAlliance)编辑器上æ‰�å�¯ä»¥æ­£å¸¸ä½¿ç”¨è¿™ä¸ªåŠŸèƒ½ã€‚,0,1,90 +91=Go Berzerk(无用),0,0,0,0,0,0,0,0,0,Attached object (cyborg) goes berzerk.,0,0,91 +92=å�¯åŠ¨çƒˆç�«é£Žæš´é˜²å¾¡ç³»ç»Ÿï¼ˆæ— ç”¨ï¼‰,0,0,0,0,0,0,0,0,0,å�¯åЍæŸ�一作战方的烈ç�«é£Žæš´é˜²å¾¡ç³»ç»Ÿã€‚,0,0,92 +93=关闭烈ç�«é£Žæš´é˜²å¾¡ç³»ç»Ÿï¼ˆæ— ç”¨ï¼‰,0,0,0,0,0,0,0,0,0,关闭æŸ�一作战方的烈ç�«é£Žæš´é˜²å¾¡ç³»ç»Ÿã€‚,0,0,93 +94=离å­�炮打击(无用),0,0,0,0,0,0,1,0,0,在特定的路径点实施离å­�炮打击。,0,0,94 +95=核弹打击...,0,0,0,0,0,0,1,0,0,在特定的路径点边缘实施核弹打击。,0,1,95 +96=化学导弹打击(无用),0,0,0,0,0,0,1,0,0,在特定的路径点实施化学导弹打击。,0,0,96 +97=Toggle Train Cargo(无用),0,0,0,0,0,0,0,0,0,TS残留功能,列车å�¸è´§ï¼Œåˆ‡æ�¢çжæ€�,0,0,97 +98=播入音效(éš�机)...,-7,16,0,0,0,0,0,0,0,在éš�机的路径点播放音效。这个动作ä¸�需è¦�设置é‡�å¤�触å�‘,å�¯åЍ以å�Žå�³åœ¨éš�机路径点ä¸�å�œæ’­æ”¾è¿™ä¸ªéŸ³æ•ˆï¼Œé—´é𔿗¶é—´éš�机。,0,1,98 +99=播放音效...,-7,16,0,0,0,0,1,0,0,在特定的路径点播放特定的音效。这个动作ä¸�需è¦�设置é‡�å¤�触å�‘,å�¯åЍ以å�Žå�³åœ¨ç‰¹å®šè·¯å¾„点ä¸�å�œæ’­æ”¾è¿™ä¸ªéŸ³æ•ˆï¼Œé—´é𔿗¶é—´éš�机。,0,1,99 +100=在雷达窗å�£æ’­æ”¾å½±ç‰‡...,0,50,0,0,0,0,0,0,0,显示特定的开场影片(在å°�å±�幕)。游æˆ�者ä»�能对步兵和å�•ä½�进行控制。,0,1,100 +101=é‡�置特定路径点的黑幕(未探测区)...,0,30,0,0,0,0,0,0,0,用黑幕覆盖特定的路径点。,0,1,101 +102=闪电风暴打击...,0,0,0,0,0,0,1,0,0,此触å�‘的所有者在特定的路径点实施闪电风暴打击。,0,1,102 +103=计时器文本...,-4,13,6,0,0,0,0,0,0,计时器显示什么文本标签(如文本是在csf文件中)。è¦�å¼€å�¯ä¸€ä¸ªæ­£å¸¸çš„计时器,需è¦�在一个触å�‘内ä¾�次设置 27 计时设置ã€�23 计时开始ã€�103 计时器文本 三个行为。,0,1,103 +104=闪亮å°�队...,-5,7,0,0,0,0,1,0,0,用特定的帧数闪亮特定的å°�队,填600以上效果较好。,0,1,104 +105=显示对è¯�注释框...(无用),-1,7,0,0,0,0,0,0,0,TS残留功能,在特定å°�队的上é�¢æ˜¾ç¤ºå¯¹è¯�注释框。,0,0,105 +106=设置科技等级(Techno)[Level]... ,-9,46,0,0,0,0,1,0,0,设置特定的å�•ä½�或建筑到特定的科技等级。,0,1,106 +107=超时空传é€�æ�´å†›(å°�队)[在路径点]... ,-1,7,0,0,0,0,1,0,0,ä¼ é€�æ�´å†›å°�队到特定的路径点区域,并制造一个超时空穿é€�的效果,而超时空传é€�显示的动画需è¦�与事件41连用。,0,1,107 +108=建立å°�木箱...,0,31,0,0,0,0,1,0,0,在特定的路径点建立一个特定内容的工具木箱。0金钱(大的)%1 1获得éš�机å�•ä½�%1 2医疗%1 3获得éš�形能力%1 4爆炸%1 5爆炸(大的)%1 6金钱%1 7黑幕é‡�ç½®%1 8清除黑幕%1 9护甲加强%1 10速度加强%1 11攻击加强%1 12获得核弹一枚%1 13空箱å­�%1 14å�‡çº§%1 15空箱å­�%1 16瓦斯气体%1 17一片矿。,0,1,108 +109=é“�幕装置作用于...,0,4,0,0,0,0,1,0,0,å°†é“�幕装置作用于特定的路径点。,0,1,109 +110=游æˆ�æš‚å�œ(ç§’)...,0,6,0,0,0,0,0,0,0,使游æˆ�æš‚å�œç‰¹å®šçš„秒数。,0,1,110 +111=驱é€�å� æ�®è€…,0,0,0,0,0,0,0,0,0,本行为将会从城市关è�”的建筑中驱é€�å� æ�®çš„作战å�•ä½�。è¦�使用本行为,必须在æ¯�一个建筑上关è�”一个å�•独的标签,é‡�å¤�的标签无用。默认æ¯�一个触å�‘对应一个标签,你å�¯ä»¥ä½¿ç”¨ 编辑→标签编辑 æ�¥å¢žåŠ è¿™ä¸ªè§¦å�‘的标签。,0,1,111 +112=ç«‹å�³å±…中当å‰�视野到特定路径点...,0,0,0,0,0,0,1,0,0,ç«‹å�³å°†æˆ˜æœ¯è§†é‡Žç§»åŠ¨åˆ°ç‰¹å®šçš„è·¯å¾„ç‚¹ã€‚,0,1,112 +113=欢呼,0,2,0,0,0,0,0,0,0,使所有步兵å�•ä½�进行欢呼动作。,0,1,113 +114=设置建造æ �到(0-3)...,0,6,0,0,0,0,0,0,0,强制使建造æ �跳转到特定的界é�¢ã€‚0建筑界é�¢%1 1防御界é�¢%1 2步兵界é�¢%1 3车辆界é�¢ã€‚,0,1,114 +115=闪动建造æ �中的å�•ä½�,-9,46,0,0,0,0,1,0,0,闪动建造æ �中的å�•ä½�,数值为闪çƒ�时间,一般为120比较å�ˆé€‚。,0,1,115 +116=å�œæ­¢ç‰¹å®šè·¯å¾„点的音效...,0,30,0,0,0,0,1,0,0,这个触å�‘å�¯ä»¥å�œæ­¢åœ¨æŸ�个路径点播放的音效。,0,1,116 +117=播放开场影片(游æˆ�æš‚å�œ)...,0,50,0,0,0,0,0,0,0,显示特定的游æˆ�开场影片。影片播放时,游æˆ�æš‚å�œã€‚播放影片期间游æˆ�者ä¸�å�¯è¿›è¡Œæ“�作。,0,1,117 +118=清除全部污染,0,0,0,0,0,0,0,0,0,将从地图上删除所有污染对象。,0,1,118 +119=将特定作战方全部摧æ¯�...,0,2,6,0,0,0,0,0,0,消ç�­ç‰¹å®šä½œæˆ˜æ–¹çš„æ‰€æœ‰å»ºç­‘ã€�å�•ä½�等。数值为1时表示直接移除å�•ä½�ä¸�产生任何破å��效果。,0,1,119 +120=将特定方建筑全部摧æ¯�...,0,2,0,0,0,0,0,0,0,æ‘§æ¯�特定作战方的所有建筑。,0,1,120 +121=将特定方陆军å�•ä½�全部摧æ¯�...,0,2,0,0,0,0,0,0,0,消ç�­ç‰¹å®šä½œæˆ˜æ–¹çš„æ‰€æœ‰é™†å†›å�•ä½�。,0,1,121 +122=将特定方海军å�•ä½�全部摧æ¯�...,0,2,0,0,0,0,0,0,0,消ç�­ç‰¹å®šä½œæˆ˜æ–¹çš„æ‰€æœ‰æµ·å†›å�•ä½�。,0,1,122 +123=心ç�µæŽ§åˆ¶åŸºåœ°...,0,2,0,0,0,0,0,0,0,此触å�‘的所有者将会通过心ç�µæŽ§åˆ¶æ•Œæ–¹æ‰€æœ‰å»ºç­‘。,0,1,123 +124=解除基地的心ç�µæŽ§åˆ¶...,0,2,0,0,0,0,0,0,0,此触å�‘的所有者将é‡�æ–°å�–得被敌方心ç�µæŽ§åˆ¶çš„æ‰€æœ‰å»ºç­‘的作战控制æ�ƒã€‚,0,1,124 +125=将建筑建于...,-10,47,6,0,0,0,1,0,0,此触å�‘的所有者将在本路径点获得该类型的建筑,如果目标路径点有建筑则ä¸�会建造,如果目标路径点有å�•ä½�则会强行弹开å�•ä½�。此动作的数值å�‚数用于控制是å�¦ç¦�止建造动画,为1则ä¸�播放。,0,1,125 +126=æ�¢å¤�至游æˆ�åˆ�始建筑å�•ä½�状æ€�...,0,2,0,0,0,0,0,0,0,此作战方游æˆ�åˆ�始的所有建筑和å�•ä½�将会é‡�建。会引起å�•ä½�冲击和覆盖图被清除。,0,1,126 +127=超时空事件效果 ...,0,6,0,0,0,0,0,0,0,将会用多帧画é�¢å…¨å±�幕平铺显示超时空穿梭事件效果,数值一般为60,填太大会游æˆ�å�¡æ­»ã€‚,0,1,127 +128=全部超时空传é€�到...,0,0,0,0,0,0,1,0,0,此触å�‘的作战方所有å�•ä½�将被传é€�到特定的路径点。,0,1,128 +129=设置超武充能完æˆ�度,-11,20,0,0,0,0,1,0,0,此触å�‘的所有者如果有超级武器,那么此超级武器的充能状æ€�会被设置为“完æˆ�了â€�百分之几 。使用一个整数(0-100)。,0,1,129 + +; YR +130=æ�¢å¤�åˆ�始建筑...,0,2,0,0,0,0,0,0,0,该å�‚战方游æˆ�åˆ�始的所有建筑将会被修å¤�或é‡�建。 会引起å�•ä½�冲击和覆盖图清除。,0,1,130,1 +131=闪亮特定类型的建筑...,-9,47,0,0,0,0,1,0,0,该触å�‘所属的所有特定类型的建筑将闪亮特定的时间。,0,1,131,1 +132=设置超武充能时间,-11,20,0,0,0,0,1,0,0,设置任何数值,设置触å�‘所属方超武至充能完毕的剩余时间,使用画é�¢å¸§æ•°(1游æˆ�ç§’=15帧),将会覆盖ini设置的RechargeTime,0,1,132,1 +133=å¤�ä½�超级武器充能时间,0,20,0,0,0,0,0,0,0,é‡�置触å�‘所属方超级武器充能时间,使用ini设置的RechargeTime。,0,1,133,1 +134=超级武器å¤�ä½�,0,36,0,0,0,0,0,0,0,就与间è°�进入超级武器一样,超级武器将会å¤�ä½�(é‡�新开始倒计时)。,0,1,134,1 +135=超武首选目标路径点...,0,0,0,0,0,0,1,0,0,该触å�‘的所有者会将超级武器的攻击目标指å�‘此路径点。,0,1,135,1 +136=超武首选目标路径点清除,0,0,0,0,0,0,0,0,0,该触å�‘的所有者将返回,正常确定其超级武器的攻击目标。,0,1,136,1 +137=基地中心å�•元设置,0,0,0,0,0,0,1,0,0,此触å�‘的所有者将认为此路径点为其基地的中心å�•元,脚本里“集å�ˆåœ¨åŸºåœ°é™„è¿‘â€�将会集å�ˆåœ¨è¿™ä¸ªè·¯å¾„点附近。,0,1,137,1 +138=基地中心å�•元清除,0,0,0,0,0,0,0,0,0,此触å�‘的所有者将返回,并去计算其中心ä½�置。,0,1,138,1 +139=雷达信æ�¯ä¸­æ–­,0,6,0,0,0,0,0,0,0,此触å�‘的所有者的雷达将中断一段时间,填太å°�会没有效果。,0,1,139,1 +140=设置防御目标å�•å…ƒ,0,0,0,0,0,0,1,0,0,此触å�‘的所有者将自动对特定的路径点区域进行防御行动。,0,1,140,1 +141=清除防御目标å�•å…ƒ,0,0,0,0,0,0,0,0,0,此触å�‘的所有者将返回到正常情况下的防御目标区域。,0,1,141,1 +142=é‡�绘红色,0,6,0,0,0,0,0,0,0,é‡�绘å±�幕的红色部分。采用百分比,这里的50代表光照里的0.5。行为71~73连用+行为142~144连用å�¯ä»¥å�šå‡ºå�˜æ›´å…‰ç…§æ•ˆæžœã€‚,0,1,142,1 +143=é‡�绘绿色,0,6,0,0,0,0,0,0,0,é‡�绘å±�幕的绿色部分。采用百分比,这里的50代表光照里的0.5。行为71~73连用+行为142~144连用å�¯ä»¥å�šå‡ºå�˜æ›´å…‰ç…§æ•ˆæžœã€‚,0,1,143,1 +144=é‡�绘è“�色,0,6,0,0,0,0,0,0,0,é‡�绘å±�幕的è“�色部分。采用百分比,这里的50代表光照里的0.5。行为71~73连用+行为142~144连用å�¯ä»¥å�šå‡ºå�˜æ›´å…‰ç…§æ•ˆæžœã€‚,0,1,144,1 +145=战术视野跳转至基地,0,0,0,0,0,0,0,0,0,和按下“Hâ€�键效果相å�Œã€‚,0,1,145,1 +;bellow only added in hares +146=使步兵å�•ä½�进入惊æ��状æ€�,0,2,0,0,0,0,0,0,0,使指定作战方所有的步兵å�•ä½�进入惊æ��动作状æ€�(如果支æŒ�),0,1,146,1 +147=在战场区域全å±�铺展绘制动画,0,25,6,0,0,0,0,0,0,在å±�幕固定ä½�置平铺绘制多帧图åƒ�,0,1,147,1 +148=å…�许/ç¦�止所属方共享视野,0,2,15,0,0,0,0,0,0,å…�许/ç¦�止指定所属方共享视野给å�‹æ–¹,0,1,148,1 +149=设置触å�‘éš�机分é‡�,-2,14,6,0,0,0,0,0,0,设置指定触å�‘çš„éš�机分é‡�,与行为150é…�å�ˆä½¿ç”¨ï¼›è´Ÿæ•°ä¸�会更改触å�‘的分é‡�,å�¯ç”¨äºŽè¡Œä¸º150罗列事件使用。,0,1,149,1 +150=éš�机å…�许下列触å�‘,0,0,0,0,0,0,0,0,0,将该行为(从属于当å‰�触å�‘事件)以下的多个行为所指定的触å�‘按照分é‡�éš�机抽å�–,并将其ç¦�止状æ€�改为å…�许,与行为149é…�å�ˆä½¿ç”¨ã€‚,0,1,150,1 +151=建筑炮塔转动,0,6,15,0,0,0,0,0,0,将触å�‘绑定的建筑转动其炮塔特定方å�‘,如果布尔值为真,则表示这个转动é‡�是0-255之间的ç»�对方å�‘æ•°,0,1,151,1 +152=全部归入å°�队...,-1,7,2,0,0,0,0,0,0,作战方%1全部å�•ä½�被强制招募进指定å°�队类型。这些å�•ä½�将被这å�Œä¸€ä¸ªå°�队实例管ç�†ã€‚,0,1,152 +153=控制存档按钮å�¯ç”¨æ€§,0,15,0,0,0,0,0,0,0,控制存档按钮是å�¦ä¸ºå…�许/ç¦�止状æ€�,0,1,153,1 +154=设置å�‚战方地图边界,0,6,0,0,0,0,0,0,0,设置å�‚战方的地图边界,仅能为0-4之间的一个枚举值,0,1,154,1 + + +[NewParamTypes] +500=AttackTargets,0,0,0,0 +501=BuildingTypes,2,1,1,0 +502=BuildingwithProperty,0,0,0,0 +503=VariableNames,1,0,0,0 +504=VariableNames,3,0,0,0 +505=UnloadOptions,0,0,0,0 +506=ScriptTypes,7,1,1,0 +507=TeamTypes,7,1,1,0 +508=Houses,3,1,0,0 +509=DialogList,8,1,0,0 +510=SoundList,5,1,0,0 +511=Movies,4,1,0,0 +512=Themes,6,1,0,0 +513=Countries,2,1,1,0 +514=Facing,0,0,0,0 +515=Animations,1,1,1,0 +516=TalkBubble,0,0,0,0 +517=EnterStatus,0,0,0,0 +518=Boolean,0,0,0,0 +519=CameraSpeed,0,0,0,0 +520=AITargetTypes,1,1,0,0 +521=AITargetCategories,0,0,0,0 +522=AIScriptsList,1,1,0,0 +523=MoveCompletion,0,0,0,0 +524=IdleAnim,0,0,0,0 +525=AircraftTypes,2,1,1,0 +526=InfantryTypes,2,1,1,0 +527=VehicleTypes,1,1,1,0 +528=DialogList,8,0,0,1 +529=SoundList,5,0,0,1 +530=Themes,6,0,0,1 +531=SuperWeaponTypes,2,1,1,0 +532=BuildingTypes,2,0,1,1 +533=TeamTypes,3,0,1,1 +534=ParticleSystems,2,1,0,0 +535=TalkBubble,0,1,0,0 +536=VoxelAnims,2,1,0,0 +537=CrateTypes,0,0,0,0 +538=SidebarNum,0,0,0,0 +539=WeaponTypes,1,1,0,0 +540=SpotlightOptions,0,0,0,0 +541=RadarEvents,0,0,0,0 +542=Operator,0,0,0,0 +543=EVAType,0,0,0,0 +544=SuperWeaponTypes,2,0,1,1 +545=BannerTypes,2,0,0,1 +546=AttachEffectTypes,2,0,0,1 +547=PlayBuildup,0,0,0,0 +548=BuildingTypes,2,0,1,1 +549=BuildingwithPropertyID,0,0,0,1 +550=ScriptTypes,7,0,1,1 +551=TeamTypes,7,0,1,1 +552=DialogList,8,0,0,1 +553=SoundList,5,0,0,1 +554=Movies,4,0,0,1 +555=Themes,6,0,0,1 +556=Countries,2,0,1,1 +557=AircraftTypes,2,0,1,1 +558=InfantryTypes,2,0,1,1 +559=VehicleTypes,2,0,1,1 +560=SuperWeaponTypes,2,0,1,1 +561=Animations,2,0,1,1 +562=WeaponTypes,2,0,1,1 +563=VoxelAnims,2,0,1,1 +564=ParticleSystems,2,0,1,1 +565=RadarMode,0,0,0,0 +566=ForceOnlyTargetHouseEnemy,0,0,0,0 +567=DropCrateBehaviour,0,0,0,0 + +; Script actions that use strings as params + +[ParamAffectedParams] +0=Action,501,3,0,0,3,1,35 +1=Action,502,3,0,0,3,1,35 +2=Action,503,1,0,0,3,1,35 +3=Action,504,3,0,0,3,1,35 +4=Action,504,4,2,0,3,1,35 + +; Over 500 values can be used +; for additional custom dropdowns listing of a section's values. +; Format: +; Index = SectionName, LoadFrom, StrictOrder, ShowUIName, [UseValue] +; Index: the positive of 2nd parameter in [ScriptParams] +; SectionName: section name string +; LoadFrom: which file to load the section from. +; 0 FAData, 1 Rules, 2 Rules + Map, 3 Map, 4 Art, 5 Sound, 6 Theme, 7 AI + Map, 8 EVA, 9 CurrentTheater. +; StrictOrder: Use registry index instead of key value. +; ShowUIName: show UIName, if failed, Name. +; UseValue: use value instead of its key. + +[Chinese-AITriggerSides] +0=所有阵è�¥ +1=盟军 +2=è‹�军 +3=尤里 + + +[Chinese-AITriggerConditionTypes] +-1=æ�’æˆ�ç«‹ +0=敌方拥有 X å�•ä½� <比较方å¼�> N 个 +1=我方拥有 X å�•ä½� <比较方å¼�> N 个 +2=敌方电力æ�¡ä¸ºé»„色 +3=敌方电力æ�¡ä¸ºçº¢è‰² +4=敌方拥有金钱 <比较方å¼�> N +5=é“�幕将准备就绪 +6=超时空传é€�将准备就绪 +7=中立方拥有 X å�•ä½� <比较方å¼�> N 个 + +; events format: +; 0 1 2 3 4 5 6 7 8 9 +; #=Description, P1 type, P2 type, TagNeeded, Obsolete,Desc2,UsedInTS,UsedInRA2,ID,[NeedsYR optional] +; negative number for type currently not supported (only Actions do support yet)! +; NOTE: Actions not listed in [Events] but in [EventsRA2] will be ignored. Use the "used in RA2" to support them. +; NOTE: To overwrite TS events with RA2 special ones, add the new event to the [EventsRA2] section. +; NOTE: ID must be the same like # + +[Chinese-AttackTargets] +0=ä»»æ„�目标 +1=ä»»æ„�目标(å�Œ0) +2=建筑物 +3=矿车矿场 +4=步兵 +5=车辆 +6=生产建筑 +7=防御建筑 +8=基地å¨�èƒ� +9=电厂 +10=驻军建筑 +11=科技建筑 + + +[Chinese-Operator] +0=赋值 (=) A=B +1=加 (+) A=A+B +2=å‡� (-) A=A-B +3=乘 (*) A=A*B +4=除 (/) A=A/B +5=求余 (%) A=A%B +6=左移 (<<) A=A<>) A=A>>B +8=å��转 (~) A=~A +9=异或 A=A⊕B +10=或 A=A|B +11=与 A=A&B + + +[Chinese-RadarEvents] +0=战斗 +1=é�žæˆ˜æ–— +2=空é™�区 +3=基地å�—击 +4=矿车å�—击 +5=å�‘现敌军 +6=å�•ä½�生产 +7=å�•ä½�阵亡 +8=å�•ä½�ç»´ä¿® +9=建筑被渗é€� +10=建筑被å� é¢† +11=信标放置 +12=å�‘现超武 +13=è¶…æ­¦å�¯åЍ +14=æ¡¥æ¢�ç»´ä¿® +15=放弃驻扎 +16=å�‹å†›å�—击 + + +[Chinese-EVAType] +-1=ç¦�用 +0=盟军(伊娃) +1=è‹�军(ç´¢è�²äºš) +2=尤里 + + +[Chinese-SidebarNum] +0=建筑æ � +1=防御æ � +2=步兵æ � +3=战车æ � + + +[Chinese-CrateTypes] +0=大é‡�金钱(固定值) +1=éš�机å�•ä½� +2=医疗 +3=éš�å½¢ +4=爆炸 +5=大型爆炸 +6=金钱(éš�机) +7=é‡�置黑幕 +8=显示全图 +9=防御力强化 +10=速度强化 +11=ç�«åŠ›å¼ºåŒ– +12=一次核弹 +13=空 +14=å�‡çº§ +15=空 +16=毒气 +17=一片矿 + + +[Chinese-SpotlightOptions] +0=æ— è�šå…‰ç�¯ +1=使用rules设置 +2=圆圈 +3=è·Ÿéš�敌对目标 + + + +[Chinese-CameraSpeed] +0=é�žå¸¸æ…¢ +1=æ…¢ +2=正常 +3=å¿« +4=é�žå¸¸å¿« + + +[Chinese-Boolean] +0=å�¦ +1=是 + + +[Chinese-EnterStatus] +0=※Sleep (休眠,ä¸�还击) +1=Attack nearest enemy +2=Move +3=QMove +4=Retreat (撤离地图) +5=※Guard (原地警戒) +6=Sticky (固守,ä¸�主动攻击) +7=Enter object +8=Capture object +9=Move into & get eaten +10=Harvest (采矿) +11=※Area Guard (区域警戒) +12=Return (to refinery) +13=Stop +14=Ambush (wait until discovered) +15=※Hunt (游猎) +16=※Unload (å�¸è½½æˆ–部署) +17=Sabotage (move in & destroy) +18=Construction +19=Deconstruction +20=Repair +21=Rescue +22=Missile +23=※Harmless (æ— å¨�èƒ�) +24=Open +25=Patrol +26=Paradrop approach drop zone +27=Paradrop overlay drop zone +28=Wait +29=Attack again +30=Spyplane approach (YR) +31=Spyplane overfly (YR) + + +[Chinese-Facing] +0=↗ +1=→ +2=↘ +3=↓ +4=↙ +5=â†� +6=↖ +7=↑ + + +[Chinese-UnloadOptions] +0=ä¿�留载具,ä¿�ç•™æˆ�员 +1=ä¿�留载具,丢弃æˆ�员 +2=丢弃载具,ä¿�ç•™æˆ�员 +3=丢弃载具,丢弃æˆ�员 + + +[Chinese-BuildingwithProperty] +0=最å°�å¨�èƒ� +1=最大å¨�èƒ� +2=最近 +3=最远 + + +[Chinese-BuildingwithPropertyID] +0=LeastThreat - 最å°�å¨�èƒ� +1=HighestThreat - 最大å¨�èƒ� +2=Nearest - 最近 +3=Farthest - 最远 + +;从1开始索引的talkbubl.shp帧数,你å�¯ä»¥æ·»åŠ æ›´å¤šå†…å®¹ï¼Œè‰²ç›˜ä¸ºpalette.pal +;æŒ�续时间在[General]TalkBubbleTime=中设定,值为现实秒,默认大约为5ç§’é’Ÿ + +[Chinese-TalkBubble] +1=星å�·(*) +2=é—®å�·(?) +3=感å�¹å�·(!) + + +[Chinese-IdleAnim] +0=Idle1 +1=Idle2 + + +[Chinese-MoveCompletion] +0=å°�队队长抵达 +1=任一æˆ�员抵达 +2=所有æˆ�员抵达 + + +[Chinese-PlayBuildup] +0=播放 +1=ä¸�播放 + + +[Chinese-RadarMode] +0=默认,需è¦�有足够电力供应与雷达建筑 +1=æ— å�¿é›·è¾¾ +2=永久开å�¯ï¼Œæ— è§†é›·è¾¾å¹²æ‰°æ•ˆæžœ +3=永久关闭 + + +[Chinese-ForceOnlyTargetHouseEnemy] +-1=默认值,ä¸�强制更改 OnlyTargetHouseEnemy 标签全局值 +0=强制 OnlyTargetHouseEnemy 为 false +1=强制 OnlyTargetHouseEnemy 为 true +2=强制éš�机布尔值 + + +[Chinese-DropCrateBehaviour] +-1=使用å�•ä½�的默认设置 +0=清除掉è�½ç®±å­�类型 +1=覆盖掉è�½ç®±å­�类型 + [Theaters] 0=TEMPERATE,TEMPERATE 1=SNOW,SNOW @@ -886,6 +2415,7 @@ PasteShowOutline=true ; Only works in file loading ; First = file suffix (xxxx.~~~, iso~~~.pal), must be 3 letters ; Second = new theater letter (G~CNST) + [TheaterSuffixes] TEMPERATE=TEM,T SNOW=SNO,A @@ -895,6 +2425,7 @@ LUNAR=LUN,L DESERT=DES,D ; Order: Theater, SmoothTileSet, LATTileSet[, Skip LAT Tiles, ClearTileSet] + [LATGroups] 0=SNOW,TXSnowGrass,TXSnowGrassLAT,TXSnowGrassSkipLAT 1=SNOW,TXSnowPave,TXSnowPaveLAT,TXSnowPaveSkipLAT @@ -907,6 +2438,7 @@ DESERT=DES,D ; FA2 will first read this, and then [General] ; in theater INI (not include Skip LAT Tiles). + [LATSettings] TXSnowGrass=127 TXSnowGrassLAT=131 @@ -929,6 +2461,7 @@ TXDesertPaveSkipLAT=20,38,40,47,97,98,111,112,118 ; custom brush sizes ; format: X length + x + Y length ; it is not recommended to change first and second value + [BrushSizes] 0=1x1 1=2x2 @@ -964,17 +2497,11 @@ TXDesertPaveSkipLAT=20,38,40,47,97,98,111,112,118 ; IgnoredTilesets = Tilesets not adding to the Object ; Browser -> Ground. Should be keys in [General] of ; theater INIs, e.g. WaterSet -[NewUrbanInfo] -Morphables=114,123 -Ramps=117,193 -Cliffs2=110 -CliffsWater2=112 -AddTiles=46,124,157 -IgnoredTilesets=PaveTile [TemperateInfo] AddTiles=93 + [SnowInfo] Morphables=97 Ramps=98 @@ -982,13 +2509,25 @@ Cliffs2=75 CliffsWater2=79 AddTiles=127,135 + [UrbanInfo] Morphables=13 Ramps=140 + +[NewUrbanInfo] +Morphables=114,123 +Ramps=117,193 +Cliffs2=110 +CliffsWater2=112 +AddTiles=46,124,157 +IgnoredTilesets=PaveTile + + [DesertInfo] AddTiles=107 + [LunarInfo] AddTiles=33,91 IgnoredTilesets=WaterSet @@ -998,6 +2537,7 @@ IgnoredTilesets=WaterSet ; BuildingTypes to be ignored during overlap detection. For Immune or InvisibleInGame cases. + [StructureOverlappingCheckIgnores] 0=TSTLAMP 1=GALITE @@ -1024,6 +2564,7 @@ IgnoredTilesets=WaterSet 22=SNODUSLAMP 23=SNONITLAMP + [Chinese-TileManagerDataTEM] 普通地形/LAT=lat 悬崖=cliff @@ -1039,6 +2580,7 @@ IgnoredTilesets=WaterSet 瀑布=waterfall 交界处/地形修å¤�=fix + [Chinese-TileManagerDataSNO] 普通地形/LAT=lat 悬崖=cliff @@ -1054,6 +2596,7 @@ IgnoredTilesets=WaterSet 瀑布=waterfall 交界处/地形修å¤�=fix + [Chinese-TileManagerDataURB] 普通地形/LAT=lat 悬崖=cliff @@ -1069,6 +2612,7 @@ IgnoredTilesets=WaterSet 瀑布=waterfall 交界处/地形修å¤�=fix + [Chinese-TileManagerDataUBN] 普通地形/LAT=lat 悬崖=cliff @@ -1084,6 +2628,7 @@ IgnoredTilesets=WaterSet 瀑布=waterfall 交界处/地形修å¤�=fix + [Chinese-TileManagerDataDES] 普通地形/LAT=lat 悬崖=cliff @@ -1099,6 +2644,7 @@ IgnoredTilesets=WaterSet 瀑布=waterfall 交界处/地形修å¤�=fix + [Chinese-TileManagerDataLUN] 普通地形/LAT=lat 悬崖=cliff @@ -1114,6 +2660,7 @@ IgnoredTilesets=WaterSet 瀑布=waterfall 交界处/地形修å¤�=fix + [English-TileManagerDataTEM] Cliff=cliff Water=water @@ -1129,6 +2676,7 @@ Pavement=pave Fix=fix LAT=lat + [English-TileManagerDataSNO] Cliff=cliff Water=water @@ -1144,6 +2692,7 @@ Pavement=pave Fix=fix LAT=lat + [English-TileManagerDataURB] Cliff=cliff Water=water @@ -1159,6 +2708,7 @@ Pavement=pave Fix=fix LAT=lat + [English-TileManagerDataUBN] Cliff=cliff Water=water @@ -1174,6 +2724,7 @@ Pavement=pave Fix=fix LAT=lat + [English-TileManagerDataDES] Cliff=cliff Water=water @@ -1189,6 +2740,7 @@ Pavement=pave Fix=fix LAT=lat + [English-TileManagerDataLUN] Cliff=cliff Water=water @@ -1294,327 +2846,7 @@ LAT=lat ;[IgnoreActiveAnim2] -[IgnoreSuperAnim1] -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim2] -NAMISL=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[IgnoreSuperAnim3] -NAMISL=1 -GACSPH=1 -[IgnoreSuperAnim4] -NAMISL=1 -GACSPH=1 -YAGNTC=1 -YAPPET=1 - -[MovieList] -Start=66; Anything below will not be listed! - -[StdBrushSize] -;ClearTile=2 -;RoughTile=2 -;SandTile=2 -;GreenTile=2 -;PaveTile=2 -;WaterSet=2 - -; if completely surrounded by water ; currently ignored -[MinBrushSizeInWater] -ClearTile=2 -RoughTile=2 -SandTile=2 -GreenTile=2 -PaveTile=2 - -; SlopeSetPieces for cliffs have a specific direction. -; used for AutoLevel logic -; CURRENTLY IGNORED -[SlopeSetPiecesDirections] -Count=10 -0=Right_1 -1=Left_1 -2=Top_1 -3=Bottom_1 -4=Right_2 -5=Left_2 -6=Left_2 -7=Bottom_2 -8=Top_2 -9=Top_2 - -[LUNARLimits] -TreeMax=999 -TreeMin=999 - -[URBANLimits] -TreeMax=999 - -[TEMPERATELimits] -TreeMax=999 - -[SNOWLimits] -TreeMax=999 - -[NEWURBANLimits] -TreeMax=999 - -[DESERTLimits] -TreeMax=999 - -; tileset ini overwritings -; only used by FinalAlert -[IgnoreSetTEMPERATE] -;0=53 -;1=54 -;2=56 -3=77 -4=78 -5=79 - -[IgnoreSetSNOW] -0=6 -1=66 -2=8 -3=46 -4=70 - -[IgnoreSetURBAN] -;0=49 -;1=50 -;2=51 -;3=53 -;4=54 -5=56 -;6=73 -;7=30 -8=91 -9=92 -10=93 -11=94 -12=95 -13=96 -14=97 -15=98 -16=99 -17=100 - -[IgnoreSetNEWURBAN] -;0=101 -1=207 - -[IgnoreSetDESERT] -;0=19 -;1=54 -;2=53 -;3=56 -;4=73 -;5=80 -6=121 -7=122 - -[IgnoreSetLUNAR] -0=34 -1=90 - -[UseSetTEMPERATE] -0=57 - -[UseSetSNOW] -[UseSetURBAN] - - -; The following section is for finding out if a map is RA2 original or Yuri's Revenge only! -; If a ground tile id exceeds this number, FA2 will assume the map is a YR map -[RA2TileMax] -Temperat=838 -Urban=1077 -Snow=798 - -[YRInfantry] -YENGINEER=1 -GGI=1 -INIT=1 -BORIS=1 -BRUTE=1 -VIRUS=1 -CLNT=1 -ARND=1 -STLN=1 -CAML=1 -EINS=1 -MUMY=1 -RMNV=1 -LUNR=1 -DNOA=1 -DNOB=1 -SLAV=1 -WWLF=1 -YDOG=1 -YADOG=1 - -[YRUnits] -YHVR=1 -PCV=1 -SMIN=1 -SMON=1 -YCAB=1 -YTNK=1 -BFRT=1 -TELE=1 -CAOS=1 -DDBX=1 -BCAB=1 -BSUB=1 -SCHP=1 -JEEP=1 -MIND=1 -DISK=1 -UTNK=1 -ROBO=1 -YDUM=1 -SCHD=1 -DOLY=1 -CBLC=1 -FTRK=1 -AMBU=1 -CIVP=1 - -[YRBuildings] -YACNST=1 -YAPOWR=1 -YABRCK=1 -YAWEAP=1 -YAYARD=1 -YADEPT=1 -YATECH=1 -GAFWLL=1 -YAGGUN=1 -YAPSYT=1 -NAINDP=1 -YAGRND=1 -YAGNTC=1 -CASLAB=1 -CATIME=1 -YAPPET=1 -CALOND04=1 -CALOND05=1 -CALOND06=1 -CAMOON01=1 -CATRAN03=1 -CAEAST01=1 -CAEGYP01=1 -CAEGYP02=1 -CAEGYP03=1 -CALA01=1 -CALA02=1 -CALA03=1 -CALA04=1 -CALA05=1 -CALOND01=1 -CALOND02=1 -CALOND03=1 -CAMORR01=1 -CAMORR02=1 -CAMORR03=1 -CASANF01=1 -CASANF02=1 -CASANF03=1 -CASANF04=1 -CASANF05=1 -CASEAT01=1 -NATBNK=1 -GAGATE_A=1 -CASANF09=1 -CASANF10=1 -CASANF11=1 -CASANF12=1 -CASANF13=1 -CASANF14=1 -CASANF06=1 -CASANF07=1 -CASANF08=1 -CASEAT02=1 -YACOMD=1 -YAPPPT=1 -GAROBO=1 -YAREFN=1 -YAROCK=1 -NABNKR=1 -CASANF15=1 -CASANF16=1 -CASANF17=1 -CASANF18=1 -CASIN03E=1 -CASIN03S=1 -CAURB01=1 -CAURB02=1 -CAURB03=1 -CAPOWR=1 -CALA07=1 -CAEGYP06=1 -CALA08=1 -CAEAST02=1 -CABARR01=1 -CABARR02=1 -CAMORR04=1 -CAMORR05=1 -CALA09=1 -CAEGYP04=1 -CAEGYP05=1 -CALA06=1 -CAMORR06=1 -CAMORR07=1 -CAMORR08=1 -CAMORR09=1 -CAMORR10=1 -CATIME01=1 -CATIME02=1 -CALA10=1 -CALA11=1 -CALA12=1 -CALA13=1 -CAPARK04=1 -CAPARK05=1 -CAPARK06=1 -CALA14=1 -CALA15=1 -CABUNK03=1 -CABUNK04=1 -CALUNR01=1 -CALUNR02=1 - -[YRTerrain] -TREE31=1 -TREE32=1 -TREE33=1 -TREE34=1 -TREE35=1 -TREE36=1 - -[YRAircraft] -BPLN=1 -SPYP=1 -CMISL=1 - -[YROverlay] -Begin=243; which number is the first from new YR overlay? - -; custom autoshore logic -; theater, name, shore tile set, sand tile set -; theater = theater name -; name = displayed name (search translation in FALanguage.ini) -; shore tile set = used as shore, need to have the same order as vanilla shore -; can type tile set name in theater ini, like "ShorePieces" -; sand tile set = used as sand, should have only one 1x1 tile -; can type tile set name in theater ini, like "GreenTile" -; -1 = do not generate sand tile [AutoShoreTypes] 0=TEMPERATE,Sand Shorelines,ShorePieces,GreenTile 1=SNOW,Ice Shorelines,ShorePieces,GreenTile @@ -1627,6 +2859,7 @@ Begin=243; which number is the first from new YR overlay? ; shore id_pos=iswater ; pos: count from left top to right, then next "row" ; RA2 only needs one fix (for URBAN specifically) + [ShoreTerrainRA2] 12_4=1 12_5=1 @@ -1635,6 +2868,97 @@ Begin=243; which number is the first from new YR overlay? ; 1 = affected, 0 = not affected ; in theater specific sections, format: tileIndex = 1/0 ; [SoftTileSetsTEM] + +[ShoreTerrainTS] +0_0=0 +0_1=0 +0_2=1 +0_3=1 +1_0=0 +1_1=0 +2_0=0 +2_1=0 +3_0=0 +4_0=0 +4_1=0 +4_3=0 +5_0=0 +5_1=0 +5_2=0 +6_0=0 +7_0=0 +8_0=0 +8_2=0 +9_0=0 +9_2=0 +10_0=0 +10_2=0 +11_0=0 +12_0=0 +12_1=0 +12_3=0 +13_0=0 +13_3=0 +13_4=0 +14_2=0 +15_2=0 +16_2=0 +16_3=0 +17_2=0 +17_3=0 +18_2=0 +18_3=0 +19_1=0 +20_3=0 +20_4=0 +20_5=0 +21_2=0 +21_4=0 +21_5=0 +22_3=0 +23_3=0 +24_1=0 +24_3=0 +25_1=0 +25_3=0 +26_1=0 +26_3=0 +27_1=0 +28_1=0 +28_2=0 +28_5=0 +29_2=0 +29_4=0 +29_5=0 +30_1=0 +31_1=0 +32_0=0 +32_1=0 +32_2=0 +33_0=0 +33_1=0 +33_2=0 +34_0=0 +34_2=0 +34_3=0 +35_0=0 +35_2=0 +35_3=0 +36_1=0 +36_2=0 +36_3=0 +37_1=0 +37_2=0 +37_3=0 +38_0=0 +38_1=0 +38_3=0 +39_0=0 +39_1=0 +39_3=0 + +; tilesets that may be modified using the shore or a similar logic + [SoftTileSets] ClearTile=1 RoughTile=1 @@ -1650,6 +2974,7 @@ RoughGround=0; no WaterSet=1 ShorePieces=1 + [SoftTileSetsTEM] 81=0 @@ -1662,6 +2987,7 @@ ShorePieces=1 ; corner strings are: cornerleft, cornerright, cornerbottom, cornertop + [CliffBackData] vertic_diag_c=2 ;vertic_diag_2=0 @@ -1690,6 +3016,7 @@ vertic_cornerright_c=2 vertic_cornerright_0=29 vertic_cornerright_1=28 + [CliffBackDataAlt] vertic_diag_c=2 ;vertic_diag_2=0 @@ -1718,6 +3045,7 @@ vertic_cornerright_c=2 vertic_cornerright_0=29 vertic_cornerright_1=28 + [CliffBackDataURBAN] vertic_diag_c=1 ;vertic_diag_4=0 @@ -1744,6 +3072,7 @@ vertic_cornerright_c=2 vertic_cornerright_0=29 vertic_cornerright_1=28 + [CliffBackDataNEWURBAN] vertic_diag_c=1 ;vertic_diag_4=0 @@ -1770,6 +3099,7 @@ vertic_cornerright_c=2 vertic_cornerright_0=29 vertic_cornerright_1=28 + [CliffFrontData] vertic_diag_c=2 vertic_diag_0=18 @@ -1804,6 +3134,7 @@ vertic_3=17 ;2x1, not 2x2, unused at moment vertic_cornerleft_c=1 vertic_cornerleft_0=21 + [CliffFrontDataAlt] vertic_diag_c=2 vertic_diag_0=18 @@ -1838,6 +3169,7 @@ vertic_3=17 ;2x1, not 2x2, unused at moment vertic_cornerleft_c=1 vertic_cornerleft_0=21 + [CliffFrontDataURBAN] vertic_diag_c=1 vertic_diag_0=18 @@ -1872,6 +3204,7 @@ vertic_1=17 ;2x1, not 2x2, unused at moment vertic_cornerleft_c=1 vertic_cornerleft_0=21 + [CliffFrontDataNEWURBAN] vertic_diag_c=1 vertic_diag_0=18 @@ -1906,12 +3239,17 @@ vertic_1=17 ;2x1, not 2x2, unused at moment vertic_cornerleft_c=1 vertic_cornerleft_0=21 + [BridgesTS] + [BridgesRA2] + [SpecialOverlayTS] + [SpecialOverlayRA2] + diff --git a/Supplementary/RevengeNow/README.md b/Supplementary/RevengeNow/README.md index 3f0b7351..7c211836 100644 --- a/Supplementary/RevengeNow/README.md +++ b/Supplementary/RevengeNow/README.md @@ -7,11 +7,14 @@ ## 包å�«æ–‡ä»¶æ¸…å�• 1. **`FAData.ini`**: - - 基于 FA2sp 原生默认的 `Supplementary/FAData.ini` 构建,完整ä¿�留了所有现代组件ã€�包å�«å¼•用(`[Include]`)与物件æµ�览器é…�置(`[ExtConfigs]`)。 - - 默认å�¯ç”¨äº†é�¢å�‘ RN 对é½�ä¿�存所需的 3 项ä¿�åº�é…�置: + - èž�å�ˆäº† `YR_RN_Mission_Editor` 的完整 RN 定制内容与 FA2sp 现代化框架体系: + - **RN 专属触å�‘系统**:完整ä¿�ç•™ RN 的触å�‘动作(`[ActionsRA2]` / `[Chinese-ActionsRA2]` å…± 157 项,å�« Ares 动作 150~154 å�Šå�‚数微调)ã€�事件(`[EventsRA2]` / `[Chinese-EventsRA2]`)ã€�脚本(`[ScriptsRA2]` / `[Chinese-ScriptsRA2]`)ã€�å�‚数定义(`[ParamTypes]`ã€�`[ScriptParams]`ã€�`[PT_CrateTypes]` 等)以å�Š `[ScriptTemplates]`ã€�`[TeamTemplates]`。 + - **RN 阵è�¥ä¸Žæ¨¡å¼�**:ä¿�ç•™ `[Sides]`(12 个作战方定义)ã€�`[GameModes]`ã€�`[ForceUnitPalettePrefix]` 等。 + - **FA2sp 现代兼容层**:ä¿�ç•™ `[Include]` 引用链(加载 `FAData_ObjectBrowser.ini` ä¿�è¯�物件æµ�览器中文分类与完整æ�¡ç›®æ­£å¸¸æ˜¾ç¤ºï¼‰ä¸Ž `[ExtConfigs]`ã€�现代剧场与图å�—管ç�†å®šä¹‰ã€‚ + - å�¯ç”¨äº†é�¢å�‘ RN 对é½�ä¿�存所需的ä¿�åº�é…�置: - `SaveMap.PreserveINISorting=true`:ä¿�存地图时ä¿�æŒ�所有 INI å°�节原有的出现顺åº�。 - - `SaveMap.PreserveINIKeySorting=true`:ä¿�存地图时ä¿�æŒ�å°�节内部键值对(Key=Value)原有的出现顺åº�(ä¸�å†�按字典/字符串长度排åº�)。 - - `SaveMap.KeepComments=true`:ä¿�存地图时ä¿�留注释。 + - `SaveMap.PreserveINIKeySorting=true`:ä¿�存地图时ä¿�æŒ�å°�节内部键值对(Key=Value)原有的出现顺åº�。 + - `SaveMap.KeepComments=false`:ä¸�ä¿�留注释(符å�ˆ RN è¦�求)。 --- From 2e18e9553eaaf76c6c0007dc825e5186a9cfc5f0 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 21:21:01 -0400 Subject: [PATCH 14/24] test: add comprehensive realistic CINI CRUD operations tests for CINIOrderTracker --- FA2sp.UnitTest/CINIOrderTrackerTest.cpp | 367 ++++++++++++++++++++++++ 1 file changed, 367 insertions(+) diff --git a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp index a351a2fb..a3e14a86 100644 --- a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp +++ b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp @@ -67,3 +67,370 @@ TEST(CINIOrderTrackerTest, KeyOrderTrackingAndQueueSemantics) CINIOrderTracker::Clear(pDummy); } + +static std::vector ToStringVector(const std::vector& vec) +{ + std::vector res; + res.reserve(vec.size()); + for (const auto& s : vec) + { + res.push_back(s.GetString()); + } + return res; +} + +TEST(CINIOrderTrackerTest, RealCINICrudKeyOperations) +{ + CINI ini; + CINIOrderTracker::Clear(&ini); + + // 1. Initial Insertions and Recording (Simulate load phase) + ini.WriteString("Basic", "Name", "Island Wars"); + CINIOrderTracker::RecordKey(&ini, "Basic", "Name"); + + ini.WriteString("Basic", "Player", "Soviet"); + CINIOrderTracker::RecordKey(&ini, "Basic", "Player"); + + ini.WriteString("Basic", "Theme", "NoTheme"); + CINIOrderTracker::RecordKey(&ini, "Basic", "Theme"); + + // Query initial state + EXPECT_TRUE(ini.KeyExists("Basic", "Name")); + EXPECT_TRUE(ini.KeyExists("Basic", "Player")); + EXPECT_TRUE(ini.KeyExists("Basic", "Theme")); + EXPECT_STREQ(ini.GetString("Basic", "Name"), "Island Wars"); + EXPECT_STREQ(ini.GetString("Basic", "Player"), "Soviet"); + EXPECT_STREQ(ini.GetString("Basic", "Theme"), "NoTheme"); + + std::vector expectedKeys = { "Name", "Player", "Theme" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Basic")), expectedKeys); + + // 2. Modify / Update existing key in-place + // Updating existing key value must NOT alter its sequence order in SequencedKeyList + ini.WriteString("Basic", "Name", "Island Wars Remastered"); + CINIOrderTracker::RecordKey(&ini, "Basic", "Name"); + + EXPECT_STREQ(ini.GetString("Basic", "Name"), "Island Wars Remastered"); + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Basic")), expectedKeys); + + // 3. Add new key + // Newly added key AltPalette must be appended to the tail + ini.WriteString("Basic", "AltPalette", "1"); + CINIOrderTracker::RecordKey(&ini, "Basic", "AltPalette"); + + EXPECT_STREQ(ini.GetString("Basic", "AltPalette"), "1"); + expectedKeys = { "Name", "Player", "Theme", "AltPalette" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Basic")), expectedKeys); + + // 4. Delete key + // Remove middle key 'Player' + bool deleted = ini.DeleteKey("Basic", "Player"); + EXPECT_TRUE(deleted); + CINIOrderTracker::RemoveKey(&ini, "Basic", "Player"); + + EXPECT_FALSE(ini.KeyExists("Basic", "Player")); + expectedKeys = { "Name", "Theme", "AltPalette" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Basic")), expectedKeys); + + // 5. Re-add deleted key -> must be pushed to tail of queue (FIFO queue semantics) + // Re-write Player="Allies" -> must now be placed at the end + ini.WriteString("Basic", "Player", "Allies"); + CINIOrderTracker::RecordKey(&ini, "Basic", "Player"); + + EXPECT_STREQ(ini.GetString("Basic", "Player"), "Allies"); + expectedKeys = { "Name", "Theme", "AltPalette", "Player" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Basic")), expectedKeys); + + CINIOrderTracker::Clear(&ini); +} + +TEST(CINIOrderTrackerTest, RealCINICrudSectionOperations) +{ + CINI ini; + CINIOrderTracker::Clear(&ini); + + // 1. Initial Insertions and Recording across multiple sections + ini.WriteString("Header", "Version", "4"); + CINIOrderTracker::RecordSection(&ini, "Header"); + CINIOrderTracker::RecordKey(&ini, "Header", "Version"); + + ini.WriteString("Map", "Width", "50"); + ini.WriteString("Map", "Height", "50"); + CINIOrderTracker::RecordSection(&ini, "Map"); + CINIOrderTracker::RecordKey(&ini, "Map", "Width"); + CINIOrderTracker::RecordKey(&ini, "Map", "Height"); + + ini.WriteString("Lighting", "Ambient", "1.0"); + CINIOrderTracker::RecordSection(&ini, "Lighting"); + CINIOrderTracker::RecordKey(&ini, "Lighting", "Ambient"); + + ini.WriteString("Units", "0", "E1,Soviet,256,10,10"); + CINIOrderTracker::RecordSection(&ini, "Units"); + CINIOrderTracker::RecordKey(&ini, "Units", "0"); + + // Query initial sections + std::vector expectedSections = { "Header", "Map", "Lighting", "Units" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); + + // 2. Modify within existing section (Section order must not be affected) + ini.WriteString("Map", "Width", "100"); + EXPECT_STREQ(ini.GetString("Map", "Width"), "100"); + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); + + // 3. Add new section -> must be appended to tail + ini.WriteString("Triggers", "0", "TrigAlpha"); + CINIOrderTracker::RecordSection(&ini, "Triggers"); + CINIOrderTracker::RecordKey(&ini, "Triggers", "0"); + + expectedSections = { "Header", "Map", "Lighting", "Units", "Triggers" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); + + // 4. Delete section + bool deleted = ini.DeleteSection("Lighting"); + EXPECT_TRUE(deleted); + CINIOrderTracker::RemoveSection(&ini, "Lighting"); + + EXPECT_FALSE(ini.SectionExists("Lighting")); + expectedSections = { "Header", "Map", "Units", "Triggers" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); + + // 5. Re-add deleted section -> must be pushed to tail of queue! + ini.WriteString("Lighting", "Ambient", "1.5"); + CINIOrderTracker::RecordSection(&ini, "Lighting"); + CINIOrderTracker::RecordKey(&ini, "Lighting", "Ambient"); + + EXPECT_TRUE(ini.SectionExists("Lighting")); + EXPECT_STREQ(ini.GetString("Lighting", "Ambient"), "1.5"); + expectedSections = { "Header", "Map", "Units", "Triggers", "Lighting" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); + + CINIOrderTracker::Clear(&ini); +} + +TEST(CINIOrderTrackerTest, RealCINIAutoTrackingUntrackedItems) +{ + CINI ini; + CINIOrderTracker::Clear(&ini); + + // 1. Record initial section and keys + ini.WriteString("Alpha", "k1", "v1"); + ini.WriteString("Alpha", "k2", "v2"); + CINIOrderTracker::RecordSection(&ini, "Alpha"); + CINIOrderTracker::RecordKey(&ini, "Alpha", "k1"); + CINIOrderTracker::RecordKey(&ini, "Alpha", "k2"); + + ini.WriteString("Beta", "b1", "vb1"); + CINIOrderTracker::RecordSection(&ini, "Beta"); + CINIOrderTracker::RecordKey(&ini, "Beta", "b1"); + + // 2. Add untracked key to 'Alpha' without calling RecordKey + ini.WriteString("Alpha", "untracked_k3", "v3"); + + // 3. Add untracked section 'Gamma' without calling RecordSection + ini.WriteString("Gamma", "g1", "vg1"); + + // Pass 2 of GetEntries should discover untracked_k3, append it and register it + std::vector expectedKeys = { "k1", "k2", "untracked_k3" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Alpha", nullptr, true)), expectedKeys); + + // Verify it is now registered in the tracker's internal order + const auto* kOrder = CINIOrderTracker::GetKeyOrder(&ini, "Alpha"); + ASSERT_NE(kOrder, nullptr); + EXPECT_EQ(kOrder->size(), 3u); + + // Pass 2 of GetSections should discover Gamma, append it and register it + std::vector expectedSections = { "Alpha", "Beta", "Gamma" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini, true)), expectedSections); + + const auto* sOrder = CINIOrderTracker::GetSectionOrder(&ini); + ASSERT_NE(sOrder, nullptr); + EXPECT_EQ(sOrder->size(), 3u); + + CINIOrderTracker::Clear(&ini); +} + +TEST(CINIOrderTrackerTest, RealCINIDeletedItemsOmittedDuringIterationEvenWithoutUntrack) +{ + CINI ini; + CINIOrderTracker::Clear(&ini); + + ini.WriteString("Basic", "Name", "MapName"); + ini.WriteString("Basic", "GhostKey", "WillBeDeleted"); + ini.WriteString("Basic", "Theme", "ThemeA"); + CINIOrderTracker::RecordSection(&ini, "Basic"); + CINIOrderTracker::RecordKey(&ini, "Basic", "Name"); + CINIOrderTracker::RecordKey(&ini, "Basic", "GhostKey"); + CINIOrderTracker::RecordKey(&ini, "Basic", "Theme"); + + ini.WriteString("GhostSection", "dummy", "1"); + CINIOrderTracker::RecordSection(&ini, "GhostSection"); + CINIOrderTracker::RecordKey(&ini, "GhostSection", "dummy"); + + // Delete key in CINI, but deliberately do NOT call CINIOrderTracker::RemoveKey + ini.DeleteKey("Basic", "GhostKey"); + + // Delete section in CINI, but deliberately do NOT call CINIOrderTracker::RemoveSection + ini.DeleteSection("GhostSection"); + + // GetEntries should skip GhostKey because it no longer exists in CINI + std::vector expectedKeys = { "Name", "Theme" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Basic", nullptr, true)), expectedKeys); + + // GetSections should skip GhostSection because it no longer exists in CINI + std::vector expectedSections = { "Basic" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini, true)), expectedSections); + + CINIOrderTracker::Clear(&ini); +} + +TEST(CINIOrderTrackerTest, RealCINIPreserveOrderTrueVsNaturalMapOrder) +{ + CINI ini; + CINIOrderTracker::Clear(&ini); + + // Insert keys where insertion sequence deliberately differs from INISectionEntriesComparator + // INISectionEntriesComparator sorts: length ascending, then strcmp. + // Insertion order: "Zebra" (len 5), "Beta" (len 4), "Alpha" (len 5), "A" (len 1) + // Natural comparator order would be: "A" (len 1), "Beta" (len 4), "Alpha" (len 5), "Zebra" (len 5) + ini.WriteString("TestSec", "Zebra", "1"); + CINIOrderTracker::RecordKey(&ini, "TestSec", "Zebra"); + + ini.WriteString("TestSec", "Beta", "2"); + CINIOrderTracker::RecordKey(&ini, "TestSec", "Beta"); + + ini.WriteString("TestSec", "Alpha", "3"); + CINIOrderTracker::RecordKey(&ini, "TestSec", "Alpha"); + + ini.WriteString("TestSec", "A", "4"); + CINIOrderTracker::RecordKey(&ini, "TestSec", "A"); + + // preserveOrder = true: preserves exact insertion order + std::vector preservedOrder = { "Zebra", "Beta", "Alpha", "A" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "TestSec", nullptr, true)), preservedOrder); + + // preserveOrder = false: returns natural map dictionary order + std::vector naturalOrder = { "A", "Beta", "Alpha", "Zebra" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "TestSec", nullptr, false)), naturalOrder); + + CINIOrderTracker::Clear(&ini); +} + +TEST(CINIOrderTrackerTest, RealCINIComplexMapLifecycleSimulation) +{ + CINI ini; + CINIOrderTracker::Clear(&ini); + + // Step 1: Initial map loading simulation + ini.WriteString("Basic", "Name", "Battleground"); + ini.WriteString("Basic", "Author", "Tester"); + ini.WriteString("Basic", "Player", "Soviet"); + ini.WriteString("Basic", "Theme", "NoTheme"); + CINIOrderTracker::RecordSection(&ini, "Basic"); + CINIOrderTracker::RecordKey(&ini, "Basic", "Name"); + CINIOrderTracker::RecordKey(&ini, "Basic", "Author"); + CINIOrderTracker::RecordKey(&ini, "Basic", "Player"); + CINIOrderTracker::RecordKey(&ini, "Basic", "Theme"); + + ini.WriteString("Map", "Theater", "TEMPERATE"); + ini.WriteString("Map", "Size", "0,0,50,50"); + ini.WriteString("Map", "LocalSize", "2,2,46,46"); + CINIOrderTracker::RecordSection(&ini, "Map"); + CINIOrderTracker::RecordKey(&ini, "Map", "Theater"); + CINIOrderTracker::RecordKey(&ini, "Map", "Size"); + CINIOrderTracker::RecordKey(&ini, "Map", "LocalSize"); + + ini.WriteString("Waypoints", "0", "100"); + ini.WriteString("Waypoints", "1", "200"); + ini.WriteString("Waypoints", "2", "300"); + ini.WriteString("Waypoints", "3", "400"); + CINIOrderTracker::RecordSection(&ini, "Waypoints"); + CINIOrderTracker::RecordKey(&ini, "Waypoints", "0"); + CINIOrderTracker::RecordKey(&ini, "Waypoints", "1"); + CINIOrderTracker::RecordKey(&ini, "Waypoints", "2"); + CINIOrderTracker::RecordKey(&ini, "Waypoints", "3"); + + ini.WriteString("Units", "0", "E1,Soviet,256,10,10"); + ini.WriteString("Units", "1", "HTNK,Soviet,256,12,12"); + CINIOrderTracker::RecordSection(&ini, "Units"); + CINIOrderTracker::RecordKey(&ini, "Units", "0"); + CINIOrderTracker::RecordKey(&ini, "Units", "1"); + + // Step 2 (Modify): Rename map and change theater + ini.WriteString("Basic", "Name", "Battleground 2.0"); + ini.WriteString("Map", "Theater", "SNOW"); + + // Step 3 (Delete): Delete waypoint 1 + ini.DeleteKey("Waypoints", "1"); + CINIOrderTracker::RemoveKey(&ini, "Waypoints", "1"); + + // Step 4 (Add): Add waypoint 4 + ini.WriteString("Waypoints", "4", "500"); + CINIOrderTracker::RecordKey(&ini, "Waypoints", "4"); + + // Step 5 (Delete + Re-add): Move waypoint 0 to tail by deleting and re-adding + ini.DeleteKey("Waypoints", "0"); + CINIOrderTracker::RemoveKey(&ini, "Waypoints", "0"); + ini.WriteString("Waypoints", "0", "150"); + CINIOrderTracker::RecordKey(&ini, "Waypoints", "0"); + + // Step 6 (Add Section): Add new [Triggers] section + ini.WriteString("Triggers", "0", "TriggerA"); + CINIOrderTracker::RecordSection(&ini, "Triggers"); + CINIOrderTracker::RecordKey(&ini, "Triggers", "0"); + + // Step 7 (Delete Section): Delete [Units] section + ini.DeleteSection("Units"); + CINIOrderTracker::RemoveSection(&ini, "Units"); + + // Step 8 (Verify complete final state): + // Sections order: Basic, Map, Waypoints, Triggers + std::vector expectedSections = { "Basic", "Map", "Waypoints", "Triggers" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini, true)), expectedSections); + + // Basic keys: Name, Author, Player, Theme (values updated, order intact) + std::vector expectedBasicKeys = { "Name", "Author", "Player", "Theme" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Basic", nullptr, true)), expectedBasicKeys); + EXPECT_STREQ(ini.GetString("Basic", "Name"), "Battleground 2.0"); + EXPECT_STREQ(ini.GetString("Basic", "Author"), "Tester"); + EXPECT_STREQ(ini.GetString("Basic", "Player"), "Soviet"); + EXPECT_STREQ(ini.GetString("Basic", "Theme"), "NoTheme"); + + // Map keys: Theater, Size, LocalSize + std::vector expectedMapKeys = { "Theater", "Size", "LocalSize" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Map", nullptr, true)), expectedMapKeys); + EXPECT_STREQ(ini.GetString("Map", "Theater"), "SNOW"); + + // Waypoints keys: 2, 3, 4, 0 (strictly reflects 1 was deleted, 4 was added, 0 was re-added to tail) + std::vector expectedWaypointKeys = { "2", "3", "4", "0" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Waypoints", nullptr, true)), expectedWaypointKeys); + EXPECT_STREQ(ini.GetString("Waypoints", "2"), "300"); + EXPECT_STREQ(ini.GetString("Waypoints", "3"), "400"); + EXPECT_STREQ(ini.GetString("Waypoints", "4"), "500"); + EXPECT_STREQ(ini.GetString("Waypoints", "0"), "150"); + + // Verify GetEntries returns exact key-value pairs in order + auto waypointEntries = CINIOrderTracker::GetEntries(&ini, "Waypoints", nullptr, true); + ASSERT_EQ(waypointEntries.size(), 4u); + EXPECT_STREQ(waypointEntries[0].Key, "2"); + EXPECT_STREQ(waypointEntries[0].Value, "300"); + EXPECT_STREQ(waypointEntries[1].Key, "3"); + EXPECT_STREQ(waypointEntries[1].Value, "400"); + EXPECT_STREQ(waypointEntries[2].Key, "4"); + EXPECT_STREQ(waypointEntries[2].Value, "500"); + EXPECT_STREQ(waypointEntries[3].Key, "0"); + EXPECT_STREQ(waypointEntries[3].Value, "150"); + + // Triggers keys: 0 + std::vector expectedTriggerKeys = { "0" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Triggers", nullptr, true)), expectedTriggerKeys); + EXPECT_STREQ(ini.GetString("Triggers", "0"), "TriggerA"); + + // Units section is gone + EXPECT_FALSE(ini.SectionExists("Units")); + + CINIOrderTracker::Clear(&ini); +} + + + + From 4d0705e4c9797745fea111c7eda15a1f4053133a Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 21:23:23 -0400 Subject: [PATCH 15/24] test: add head, middle, tail delete and re-add permutation tests for keys and sections --- FA2sp.UnitTest/CINIOrderTrackerTest.cpp | 330 ++++++++++++++++++++++++ 1 file changed, 330 insertions(+) diff --git a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp index a3e14a86..060887b5 100644 --- a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp +++ b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp @@ -431,6 +431,336 @@ TEST(CINIOrderTrackerTest, RealCINIComplexMapLifecycleSimulation) CINIOrderTracker::Clear(&ini); } +TEST(CINIOrderTrackerTest, RealCINISameKeyDeletedAndReaddedHeadMiddleTailCombinations) +{ + CINI ini; + CINIOrderTracker::Clear(&ini); + const char* sec = "KeyPermutations"; + + // Initialize 5 keys: Head, Mid1, Mid2, Mid3, Tail + ini.WriteString(sec, "K_Head", "1"); + ini.WriteString(sec, "K_Mid1", "2"); + ini.WriteString(sec, "K_Mid2", "3"); + ini.WriteString(sec, "K_Mid3", "4"); + ini.WriteString(sec, "K_Tail", "5"); + CINIOrderTracker::RecordSection(&ini, sec); + CINIOrderTracker::RecordKey(&ini, sec, "K_Head"); + CINIOrderTracker::RecordKey(&ini, sec, "K_Mid1"); + CINIOrderTracker::RecordKey(&ini, sec, "K_Mid2"); + CINIOrderTracker::RecordKey(&ini, sec, "K_Mid3"); + CINIOrderTracker::RecordKey(&ini, sec, "K_Tail"); + + std::vector expected = { "K_Head", "K_Mid1", "K_Mid2", "K_Mid3", "K_Tail" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); + + // --- Scenario A: Delete HEAD key (K_Head), verify, then re-add --- + EXPECT_TRUE(ini.DeleteKey(sec, "K_Head")); + CINIOrderTracker::RemoveKey(&ini, sec, "K_Head"); + EXPECT_FALSE(ini.KeyExists(sec, "K_Head")); + EXPECT_STREQ(ini.GetString(sec, "K_Head"), ""); + expected = { "K_Mid1", "K_Mid2", "K_Mid3", "K_Tail" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); + + // Re-add K_Head -> must be placed at tail + ini.WriteString(sec, "K_Head", "1_new"); + CINIOrderTracker::RecordKey(&ini, sec, "K_Head"); + EXPECT_TRUE(ini.KeyExists(sec, "K_Head")); + EXPECT_STREQ(ini.GetString(sec, "K_Head"), "1_new"); + expected = { "K_Mid1", "K_Mid2", "K_Mid3", "K_Tail", "K_Head" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); + + // --- Scenario B: Delete MIDDLE key (K_Mid2), verify, then re-add --- + EXPECT_TRUE(ini.DeleteKey(sec, "K_Mid2")); + CINIOrderTracker::RemoveKey(&ini, sec, "K_Mid2"); + EXPECT_FALSE(ini.KeyExists(sec, "K_Mid2")); + expected = { "K_Mid1", "K_Mid3", "K_Tail", "K_Head" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); + + // Re-add K_Mid2 -> must be placed at tail + ini.WriteString(sec, "K_Mid2", "3_new"); + CINIOrderTracker::RecordKey(&ini, sec, "K_Mid2"); + EXPECT_STREQ(ini.GetString(sec, "K_Mid2"), "3_new"); + expected = { "K_Mid1", "K_Mid3", "K_Tail", "K_Head", "K_Mid2" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); + + // --- Scenario C: Delete TAIL key (currently K_Mid2), verify, then re-add --- + EXPECT_TRUE(ini.DeleteKey(sec, "K_Mid2")); + CINIOrderTracker::RemoveKey(&ini, sec, "K_Mid2"); + EXPECT_FALSE(ini.KeyExists(sec, "K_Mid2")); + expected = { "K_Mid1", "K_Mid3", "K_Tail", "K_Head" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); + + // Re-add K_Mid2 again (multi-cycle on the same key!) + ini.WriteString(sec, "K_Mid2", "3_v3"); + CINIOrderTracker::RecordKey(&ini, sec, "K_Mid2"); + EXPECT_STREQ(ini.GetString(sec, "K_Mid2"), "3_v3"); + expected = { "K_Mid1", "K_Mid3", "K_Tail", "K_Head", "K_Mid2" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); + + // --- Scenario D: Permutation delete Head, Mid, Tail, then re-add in reverse order --- + // Current order: ["K_Mid1" (Head), "K_Mid3" (Mid), "K_Tail" (Mid), "K_Head" (Mid), "K_Mid2" (Tail)] + // Delete Head ("K_Mid1") + ini.DeleteKey(sec, "K_Mid1"); + CINIOrderTracker::RemoveKey(&ini, sec, "K_Mid1"); + // Delete Mid ("K_Tail") + ini.DeleteKey(sec, "K_Tail"); + CINIOrderTracker::RemoveKey(&ini, sec, "K_Tail"); + // Delete Tail ("K_Mid2") + ini.DeleteKey(sec, "K_Mid2"); + CINIOrderTracker::RemoveKey(&ini, sec, "K_Mid2"); + + // Remaining should be: ["K_Mid3", "K_Head"] + expected = { "K_Mid3", "K_Head" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); + + // Re-add in reverse order: K_Mid2 (former tail), K_Tail (former mid), K_Mid1 (former head) + ini.WriteString(sec, "K_Mid2", "200"); + CINIOrderTracker::RecordKey(&ini, sec, "K_Mid2"); + ini.WriteString(sec, "K_Tail", "300"); + CINIOrderTracker::RecordKey(&ini, sec, "K_Tail"); + ini.WriteString(sec, "K_Mid1", "100"); + CINIOrderTracker::RecordKey(&ini, sec, "K_Mid1"); + + expected = { "K_Mid3", "K_Head", "K_Mid2", "K_Tail", "K_Mid1" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); + + // Verify all values are retrievable correctly + EXPECT_STREQ(ini.GetString(sec, "K_Mid3"), "4"); + EXPECT_STREQ(ini.GetString(sec, "K_Head"), "1_new"); + EXPECT_STREQ(ini.GetString(sec, "K_Mid2"), "200"); + EXPECT_STREQ(ini.GetString(sec, "K_Tail"), "300"); + EXPECT_STREQ(ini.GetString(sec, "K_Mid1"), "100"); + + // --- Scenario E: Delete all remaining keys to empty, then re-populate --- + for (const auto& k : expected) + { + EXPECT_TRUE(ini.DeleteKey(sec, k.c_str())); + CINIOrderTracker::RemoveKey(&ini, sec, k.c_str()); + } + EXPECT_EQ(ini.GetKeyCount(sec), 0); + EXPECT_TRUE(CINIOrderTracker::GetKeyNames(&ini, sec).empty()); + + // Re-add in a new order + ini.WriteString(sec, "Reborn_A", "A"); + ini.WriteString(sec, "Reborn_B", "B"); + CINIOrderTracker::RecordKey(&ini, sec, "Reborn_A"); + CINIOrderTracker::RecordKey(&ini, sec, "Reborn_B"); + expected = { "Reborn_A", "Reborn_B" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); + + CINIOrderTracker::Clear(&ini); +} + +TEST(CINIOrderTrackerTest, RealCINISameSectionDeletedAndReaddedHeadMiddleTailCombinations) +{ + CINI ini; + CINIOrderTracker::Clear(&ini); + // Initialize 5 sections: Sec_Head, Sec_Mid1, Sec_Mid2, Sec_Mid3, Sec_Tail + const std::vector initSections = { "Sec_Head", "Sec_Mid1", "Sec_Mid2", "Sec_Mid3", "Sec_Tail" }; + for (size_t i = 0; i < initSections.size(); ++i) + { + ini.WriteString(initSections[i].c_str(), "val", std::to_string(i).c_str()); + CINIOrderTracker::RecordSection(&ini, initSections[i].c_str()); + CINIOrderTracker::RecordKey(&ini, initSections[i].c_str(), "val"); + } + + std::vector expected = initSections; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); + + // --- Scenario A: Delete HEAD section ("Sec_Head"), verify, then re-add --- + EXPECT_TRUE(ini.DeleteSection("Sec_Head")); + CINIOrderTracker::RemoveSection(&ini, "Sec_Head"); + EXPECT_FALSE(ini.SectionExists("Sec_Head")); + expected = { "Sec_Mid1", "Sec_Mid2", "Sec_Mid3", "Sec_Tail" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); + + // Re-add "Sec_Head" -> must move to tail + ini.WriteString("Sec_Head", "new_val", "100"); + CINIOrderTracker::RecordSection(&ini, "Sec_Head"); + CINIOrderTracker::RecordKey(&ini, "Sec_Head", "new_val"); + EXPECT_TRUE(ini.SectionExists("Sec_Head")); + EXPECT_STREQ(ini.GetString("Sec_Head", "new_val"), "100"); + expected = { "Sec_Mid1", "Sec_Mid2", "Sec_Mid3", "Sec_Tail", "Sec_Head" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); + + // --- Scenario B: Delete MIDDLE section ("Sec_Mid2"), verify, then re-add --- + EXPECT_TRUE(ini.DeleteSection("Sec_Mid2")); + CINIOrderTracker::RemoveSection(&ini, "Sec_Mid2"); + EXPECT_FALSE(ini.SectionExists("Sec_Mid2")); + expected = { "Sec_Mid1", "Sec_Mid3", "Sec_Tail", "Sec_Head" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); + + // Re-add "Sec_Mid2" -> must move to tail + ini.WriteString("Sec_Mid2", "mid_val", "200"); + CINIOrderTracker::RecordSection(&ini, "Sec_Mid2"); + CINIOrderTracker::RecordKey(&ini, "Sec_Mid2", "mid_val"); + expected = { "Sec_Mid1", "Sec_Mid3", "Sec_Tail", "Sec_Head", "Sec_Mid2" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); + + // --- Scenario C: Delete TAIL section (currently "Sec_Mid2"), verify, then re-add --- + EXPECT_TRUE(ini.DeleteSection("Sec_Mid2")); + CINIOrderTracker::RemoveSection(&ini, "Sec_Mid2"); + EXPECT_FALSE(ini.SectionExists("Sec_Mid2")); + expected = { "Sec_Mid1", "Sec_Mid3", "Sec_Tail", "Sec_Head" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); + + // Re-add "Sec_Mid2" again (multi-cycle on the same section!) + ini.WriteString("Sec_Mid2", "mid_val_v3", "300"); + CINIOrderTracker::RecordSection(&ini, "Sec_Mid2"); + CINIOrderTracker::RecordKey(&ini, "Sec_Mid2", "mid_val_v3"); + expected = { "Sec_Mid1", "Sec_Mid3", "Sec_Tail", "Sec_Head", "Sec_Mid2" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); + + // --- Scenario D: Permutation delete Head, Mid, Tail, then re-add in reverse order --- + // Current sections: ["Sec_Mid1" (Head), "Sec_Mid3" (Mid), "Sec_Tail" (Mid), "Sec_Head" (Mid), "Sec_Mid2" (Tail)] + // Delete Head ("Sec_Mid1") + ini.DeleteSection("Sec_Mid1"); + CINIOrderTracker::RemoveSection(&ini, "Sec_Mid1"); + // Delete Mid ("Sec_Tail") + ini.DeleteSection("Sec_Tail"); + CINIOrderTracker::RemoveSection(&ini, "Sec_Tail"); + // Delete Tail ("Sec_Mid2") + ini.DeleteSection("Sec_Mid2"); + CINIOrderTracker::RemoveSection(&ini, "Sec_Mid2"); + + // Remaining should be: ["Sec_Mid3", "Sec_Head"] + expected = { "Sec_Mid3", "Sec_Head" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); + + // Re-add in reverse order: Sec_Mid2 (former tail), Sec_Tail (former mid), Sec_Mid1 (former head) + ini.WriteString("Sec_Mid2", "v", "1"); + CINIOrderTracker::RecordSection(&ini, "Sec_Mid2"); + ini.WriteString("Sec_Tail", "v", "2"); + CINIOrderTracker::RecordSection(&ini, "Sec_Tail"); + ini.WriteString("Sec_Mid1", "v", "3"); + CINIOrderTracker::RecordSection(&ini, "Sec_Mid1"); + + expected = { "Sec_Mid3", "Sec_Head", "Sec_Mid2", "Sec_Tail", "Sec_Mid1" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); + + // --- Scenario E: Delete all sections to empty, then re-populate in reverse --- + for (const auto& secName : expected) + { + EXPECT_TRUE(ini.DeleteSection(secName.c_str())); + CINIOrderTracker::RemoveSection(&ini, secName.c_str()); + } + EXPECT_TRUE(CINIOrderTracker::GetSectionNames(&ini).empty()); + + // Re-populate in reversed order + ini.WriteString("Z_Sec", "k", "1"); + CINIOrderTracker::RecordSection(&ini, "Z_Sec"); + ini.WriteString("A_Sec", "k", "2"); + CINIOrderTracker::RecordSection(&ini, "A_Sec"); + + expected = { "Z_Sec", "A_Sec" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); + CINIOrderTracker::Clear(&ini); +} + +TEST(CINIOrderTrackerTest, RealCINIInterleavedKeyAndSectionDeleteReaddStressTest) +{ + CINI ini; + CINIOrderTracker::Clear(&ini); + // Create 3 sections, each with 3 keys: Head, Mid, Tail + const std::vector secNames = { "Section_1", "Section_2", "Section_3" }; + for (const auto& secName : secNames) + { + ini.WriteString(secName.c_str(), "Key_H", "val_H"); + ini.WriteString(secName.c_str(), "Key_M", "val_M"); + ini.WriteString(secName.c_str(), "Key_T", "val_T"); + CINIOrderTracker::RecordSection(&ini, secName.c_str()); + CINIOrderTracker::RecordKey(&ini, secName.c_str(), "Key_H"); + CINIOrderTracker::RecordKey(&ini, secName.c_str(), "Key_M"); + CINIOrderTracker::RecordKey(&ini, secName.c_str(), "Key_T"); + } + + // Step 1: In Section_1 (Head section), delete Head key Key_H and re-add it + ini.DeleteKey("Section_1", "Key_H"); + CINIOrderTracker::RemoveKey(&ini, "Section_1", "Key_H"); + ini.WriteString("Section_1", "Key_H", "val_H_reborn"); + CINIOrderTracker::RecordKey(&ini, "Section_1", "Key_H"); + + std::vector expectedKeysSec1 = { "Key_M", "Key_T", "Key_H" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Section_1")), expectedKeysSec1); + EXPECT_STREQ(ini.GetString("Section_1", "Key_H"), "val_H_reborn"); + + // Step 2: Delete Section_1 entirely (Head section deleted) + ini.DeleteSection("Section_1"); + CINIOrderTracker::RemoveSection(&ini, "Section_1"); + + std::vector expectedSections = { "Section_2", "Section_3" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); + + // Step 3: In Section_2 (now Head section), delete Tail key Key_T, then delete Mid key Key_M + ini.DeleteKey("Section_2", "Key_T"); + CINIOrderTracker::RemoveKey(&ini, "Section_2", "Key_T"); + ini.DeleteKey("Section_2", "Key_M"); + CINIOrderTracker::RemoveKey(&ini, "Section_2", "Key_M"); + + std::vector expectedKeysSec2 = { "Key_H" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Section_2")), expectedKeysSec2); + + // Re-add Key_M then Key_T in Section_2 + ini.WriteString("Section_2", "Key_M", "val_M_new"); + CINIOrderTracker::RecordKey(&ini, "Section_2", "Key_M"); + ini.WriteString("Section_2", "Key_T", "val_T_new"); + CINIOrderTracker::RecordKey(&ini, "Section_2", "Key_T"); + + expectedKeysSec2 = { "Key_H", "Key_M", "Key_T" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Section_2")), expectedKeysSec2); + + // Step 4: Re-add Section_1 (must now become the TAIL section) + ini.WriteString("Section_1", "Alpha", "1"); + ini.WriteString("Section_1", "Beta", "2"); + CINIOrderTracker::RecordSection(&ini, "Section_1"); + CINIOrderTracker::RecordKey(&ini, "Section_1", "Alpha"); + CINIOrderTracker::RecordKey(&ini, "Section_1", "Beta"); + + expectedSections = { "Section_2", "Section_3", "Section_1" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); + + expectedKeysSec1 = { "Alpha", "Beta" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Section_1")), expectedKeysSec1); + + // Step 5: Delete Section_3 (Middle section deleted) + ini.DeleteSection("Section_3"); + CINIOrderTracker::RemoveSection(&ini, "Section_3"); + + expectedSections = { "Section_2", "Section_1" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); + + // Step 6: Re-add Section_3 (becomes TAIL section) + ini.WriteString("Section_3", "Gamma", "3"); + CINIOrderTracker::RecordSection(&ini, "Section_3"); + CINIOrderTracker::RecordKey(&ini, "Section_3", "Gamma"); + + expectedSections = { "Section_2", "Section_1", "Section_3" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); + + // Step 7: Verify all entries across all sections + auto sec2Entries = CINIOrderTracker::GetEntries(&ini, "Section_2"); + ASSERT_EQ(sec2Entries.size(), 3u); + EXPECT_STREQ(sec2Entries[0].Key, "Key_H"); + EXPECT_STREQ(sec2Entries[0].Value, "val_H"); + EXPECT_STREQ(sec2Entries[1].Key, "Key_M"); + EXPECT_STREQ(sec2Entries[1].Value, "val_M_new"); + EXPECT_STREQ(sec2Entries[2].Key, "Key_T"); + EXPECT_STREQ(sec2Entries[2].Value, "val_T_new"); + + auto sec1Entries = CINIOrderTracker::GetEntries(&ini, "Section_1"); + ASSERT_EQ(sec1Entries.size(), 2u); + EXPECT_STREQ(sec1Entries[0].Key, "Alpha"); + EXPECT_STREQ(sec1Entries[0].Value, "1"); + EXPECT_STREQ(sec1Entries[1].Key, "Beta"); + EXPECT_STREQ(sec1Entries[1].Value, "2"); + + auto sec3Entries = CINIOrderTracker::GetEntries(&ini, "Section_3"); + ASSERT_EQ(sec3Entries.size(), 1u); + EXPECT_STREQ(sec3Entries[0].Key, "Gamma"); + EXPECT_STREQ(sec3Entries[0].Value, "3"); + + CINIOrderTracker::Clear(&ini); +} From 9722ae98929867ad2547b590e0f0700de5b4340b Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 22:38:12 -0400 Subject: [PATCH 16/24] feat: implement AdaptiveSorting for INI key output and numeric natural ordering --- FA2sp.UnitTest/CINIOrderTrackerTest.cpp | 175 ++++++++++++++++-- FA2sp/FA2sp.cpp | 10 +- FA2sp/FA2sp.h | 2 +- FA2sp/Helpers/CINIOrderTracker.cpp | 87 ++++++++- FA2sp/Helpers/CINIOrderTracker.h | 4 +- FA2sp/Miscs/Hooks.INI.cpp | 2 +- FA2sp/Miscs/SaveMap.cpp | 2 +- Supplementary/FAData.ini | 6 +- Supplementary/FALanguage_Chinese.ini | 2 +- Supplementary/FALanguage_English.ini | 2 +- Supplementary/RevengeNow/FAData.ini | 6 +- Supplementary/RevengeNow/README.md | 2 +- .../plans/ini_key_sorting_alignment_plan.md | 2 +- 13 files changed, 266 insertions(+), 36 deletions(-) diff --git a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp index 060887b5..ce5113bb 100644 --- a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp +++ b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp @@ -400,25 +400,25 @@ TEST(CINIOrderTrackerTest, RealCINIComplexMapLifecycleSimulation) EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Map", nullptr, true)), expectedMapKeys); EXPECT_STREQ(ini.GetString("Map", "Theater"), "SNOW"); - // Waypoints keys: 2, 3, 4, 0 (strictly reflects 1 was deleted, 4 was added, 0 was re-added to tail) - std::vector expectedWaypointKeys = { "2", "3", "4", "0" }; + // Waypoints keys with adaptive sorting: 0, 2, 3, 4 (0 is adaptively sorted to the front instead of trailing at tail) + std::vector expectedWaypointKeys = { "0", "2", "3", "4" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Waypoints", nullptr, true)), expectedWaypointKeys); + EXPECT_STREQ(ini.GetString("Waypoints", "0"), "150"); EXPECT_STREQ(ini.GetString("Waypoints", "2"), "300"); EXPECT_STREQ(ini.GetString("Waypoints", "3"), "400"); EXPECT_STREQ(ini.GetString("Waypoints", "4"), "500"); - EXPECT_STREQ(ini.GetString("Waypoints", "0"), "150"); - // Verify GetEntries returns exact key-value pairs in order + // Verify GetEntries returns exact key-value pairs in adaptive order auto waypointEntries = CINIOrderTracker::GetEntries(&ini, "Waypoints", nullptr, true); ASSERT_EQ(waypointEntries.size(), 4u); - EXPECT_STREQ(waypointEntries[0].Key, "2"); - EXPECT_STREQ(waypointEntries[0].Value, "300"); - EXPECT_STREQ(waypointEntries[1].Key, "3"); - EXPECT_STREQ(waypointEntries[1].Value, "400"); - EXPECT_STREQ(waypointEntries[2].Key, "4"); - EXPECT_STREQ(waypointEntries[2].Value, "500"); - EXPECT_STREQ(waypointEntries[3].Key, "0"); - EXPECT_STREQ(waypointEntries[3].Value, "150"); + EXPECT_STREQ(waypointEntries[0].Key, "0"); + EXPECT_STREQ(waypointEntries[0].Value, "150"); + EXPECT_STREQ(waypointEntries[1].Key, "2"); + EXPECT_STREQ(waypointEntries[1].Value, "300"); + EXPECT_STREQ(waypointEntries[2].Key, "3"); + EXPECT_STREQ(waypointEntries[2].Value, "400"); + EXPECT_STREQ(waypointEntries[3].Key, "4"); + EXPECT_STREQ(waypointEntries[3].Value, "500"); // Triggers keys: 0 std::vector expectedTriggerKeys = { "0" }; @@ -764,3 +764,154 @@ TEST(CINIOrderTrackerTest, RealCINIInterleavedKeyAndSectionDeleteReaddStressTest CINIOrderTracker::Clear(&ini); } + +TEST(CINIOrderTrackerTest, AdaptiveSortingNumericKeysPreserveNaturalOrderOnDeleteAndReadd) +{ + CINI ini; + CINIOrderTracker::Clear(&ini); + + // Initial setup: [Units] with 0, 1, 2, 3 + ini.WriteString("Units", "0", "Unit_Zero"); + CINIOrderTracker::RecordKey(&ini, "Units", "0"); + + ini.WriteString("Units", "1", "Unit_One"); + CINIOrderTracker::RecordKey(&ini, "Units", "1"); + + ini.WriteString("Units", "2", "Unit_Two"); + CINIOrderTracker::RecordKey(&ini, "Units", "2"); + + ini.WriteString("Units", "3", "Unit_Three"); + CINIOrderTracker::RecordKey(&ini, "Units", "3"); + + std::vector expectedInitial = { "0", "1", "2", "3" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Units", nullptr, true)), expectedInitial); + + // Case 1: Head deletion and re-add of "0" + // Without adaptive sorting, "0" would end up at the tail: {"1", "2", "3", "0"} + // With adaptive sorting, "0" must return to the front: {"0", "1", "2", "3"} + ini.DeleteKey("Units", "0"); + CINIOrderTracker::RemoveKey(&ini, "Units", "0"); + + ini.WriteString("Units", "0", "Unit_Zero_Readded"); + CINIOrderTracker::RecordKey(&ini, "Units", "0"); + + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Units", nullptr, true)), expectedInitial); + auto entries0 = CINIOrderTracker::GetEntries(&ini, "Units", nullptr, true); + ASSERT_EQ(entries0.size(), 4u); + EXPECT_STREQ(entries0[0].Key, "0"); + EXPECT_STREQ(entries0[0].Value, "Unit_Zero_Readded"); + + // Case 2: Middle deletion and re-add of "2" + ini.DeleteKey("Units", "2"); + CINIOrderTracker::RemoveKey(&ini, "Units", "2"); + + ini.WriteString("Units", "2", "Unit_Two_Readded"); + CINIOrderTracker::RecordKey(&ini, "Units", "2"); + + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Units", nullptr, true)), expectedInitial); + auto entries2 = CINIOrderTracker::GetEntries(&ini, "Units", nullptr, true); + EXPECT_STREQ(entries2[2].Key, "2"); + EXPECT_STREQ(entries2[2].Value, "Unit_Two_Readded"); + + // Case 3: Tail deletion and re-add of "3" + ini.DeleteKey("Units", "3"); + CINIOrderTracker::RemoveKey(&ini, "Units", "3"); + + ini.WriteString("Units", "3", "Unit_Three_Readded"); + CINIOrderTracker::RecordKey(&ini, "Units", "3"); + + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Units", nullptr, true)), expectedInitial); + + // Case 4: Delete multiple keys ("1" and "0"), re-add in reverse order ("1" then "0") + ini.DeleteKey("Units", "1"); + CINIOrderTracker::RemoveKey(&ini, "Units", "1"); + ini.DeleteKey("Units", "0"); + CINIOrderTracker::RemoveKey(&ini, "Units", "0"); + + ini.WriteString("Units", "1", "Unit_One_V2"); + CINIOrderTracker::RecordKey(&ini, "Units", "1"); + ini.WriteString("Units", "0", "Unit_Zero_V2"); + CINIOrderTracker::RecordKey(&ini, "Units", "0"); + + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Units", nullptr, true)), expectedInitial); + auto entriesMulti = CINIOrderTracker::GetEntries(&ini, "Units", nullptr, true); + EXPECT_STREQ(entriesMulti[0].Key, "0"); + EXPECT_STREQ(entriesMulti[0].Value, "Unit_Zero_V2"); + EXPECT_STREQ(entriesMulti[1].Key, "1"); + EXPECT_STREQ(entriesMulti[1].Value, "Unit_One_V2"); + + CINIOrderTracker::Clear(&ini); +} + +TEST(CINIOrderTrackerTest, AdaptiveSortingWestwoodNumericComparatorMultiDigit) +{ + CINI ini; + CINIOrderTracker::Clear(&ini); + + // Multi-digit numbers inserted in intentionally scrambled order + // "100", "10", "0", "9", "1", "11", "8", "99" + // In ASCII alphabetical sort: "0", "1", "10", "100", "11", "8", "9", "99" (WRONG for game engine) + // In Westwood numeric sort: "0", "1", "8", "9", "10", "11", "99", "100" (CORRECT) + std::vector insertOrder = { "100", "10", "0", "9", "1", "11", "8", "99" }; + for (const auto& k : insertOrder) + { + ini.WriteString("Waypoints", k.c_str(), ("pos_" + k).c_str()); + CINIOrderTracker::RecordKey(&ini, "Waypoints", k.c_str()); + } + + std::vector expectedWestwoodOrder = { "0", "1", "8", "9", "10", "11", "99", "100" }; + auto actualKeys = ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Waypoints", nullptr, true)); + EXPECT_EQ(actualKeys, expectedWestwoodOrder); + + CINIOrderTracker::Clear(&ini); +} + +TEST(CINIOrderTrackerTest, AdaptiveSortingMixedSectionPreservesTextHeaderAndOrdersNumericArray) +{ + CINI ini; + CINIOrderTracker::Clear(&ini); + + // Simulate Script / TaskForce section like [01000001] + // Header properties: Name, Group + // Numeric action/member entries: 0, 1, 2 + const char* sec = "01000001"; + ini.WriteString(sec, "Name", "Assault Squad"); + CINIOrderTracker::RecordKey(&ini, sec, "Name"); + + ini.WriteString(sec, "Group", "-1"); + CINIOrderTracker::RecordKey(&ini, sec, "Group"); + + ini.WriteString(sec, "0", "1,E1"); + CINIOrderTracker::RecordKey(&ini, sec, "0"); + + ini.WriteString(sec, "1", "2,HTK"); + CINIOrderTracker::RecordKey(&ini, sec, "1"); + + ini.WriteString(sec, "2", "1,APOC"); + CINIOrderTracker::RecordKey(&ini, sec, "2"); + + // Delete action "0", then re-add "0" -> should stay right after headers and before "1" + ini.DeleteKey(sec, "0"); + CINIOrderTracker::RemoveKey(&ini, sec, "0"); + + ini.WriteString(sec, "0", "1,E1_New"); + CINIOrderTracker::RecordKey(&ini, sec, "0"); + + std::vector expectedOrder = { "Name", "Group", "0", "1", "2" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec, nullptr, true)), expectedOrder); + + auto entries = CINIOrderTracker::GetEntries(&ini, sec, nullptr, true); + ASSERT_EQ(entries.size(), 5u); + EXPECT_STREQ(entries[0].Key, "Name"); + EXPECT_STREQ(entries[0].Value, "Assault Squad"); + EXPECT_STREQ(entries[1].Key, "Group"); + EXPECT_STREQ(entries[1].Value, "-1"); + EXPECT_STREQ(entries[2].Key, "0"); + EXPECT_STREQ(entries[2].Value, "1,E1_New"); + EXPECT_STREQ(entries[3].Key, "1"); + EXPECT_STREQ(entries[3].Value, "2,HTK"); + EXPECT_STREQ(entries[4].Key, "2"); + EXPECT_STREQ(entries[4].Value, "1,APOC"); + + CINIOrderTracker::Clear(&ini); +} diff --git a/FA2sp/FA2sp.cpp b/FA2sp/FA2sp.cpp index b26c02cd..a9d91fd5 100644 --- a/FA2sp/FA2sp.cpp +++ b/FA2sp/FA2sp.cpp @@ -226,7 +226,7 @@ bool ExtConfigs::PreciseDepthCalculation; bool ExtConfigs::DisableDirectoryCheck; bool ExtConfigs::ExtOverlays; bool ExtConfigs::SaveMap_PreserveINISorting; -bool ExtConfigs::SaveMap_PreserveINIKeySorting; +bool ExtConfigs::SaveMap_AdaptiveSorting; bool ExtConfigs::ExtMixLoader; int ExtConfigs::DisplayTextSize; int ExtConfigs::DistanceRuler_Records; @@ -461,7 +461,7 @@ void FA2sp::ExtConfigsInitialize() ExtConfigs::SaveMap_OnlySaveMAP = CINI::FAData->GetBool("ExtConfigs", "SaveMap.OnlySaveMAP"); ExtConfigs::SaveMap_KeepComments = CINI::FAData->GetBool("ExtConfigs", "SaveMap.KeepComments"); ExtConfigs::SaveMap_PreserveINISorting = CINI::FAData->GetBool("ExtConfigs", "SaveMap.PreserveINISorting"); - ExtConfigs::SaveMap_PreserveINIKeySorting = CINI::FAData->GetBool("ExtConfigs", "SaveMap.PreserveINIKeySorting"); + ExtConfigs::SaveMap_AdaptiveSorting = CINI::FAData->GetBool("ExtConfigs", "SaveMap.AdaptiveSorting"); // ExtConfigs::SaveMap_MultiPlayOnlySaveYRM = CINI::FAData->GetBool("ExtConfigs", "SaveMap.OnlySaveYRM.MultiPlay"); // ExtConfigs::SaveMap_SinglePlayOnlySaveMAP = CINI::FAData->GetBool("ExtConfigs", "SaveMap.OnlySaveMAP.SinglePlay"); ExtConfigs::SaveMap_DefaultPreviewOptionMP = CINI::FAData->GetInteger("ExtConfigs", "SaveMap.DefaultPreviewOptionMP", 0); @@ -1114,9 +1114,9 @@ void ExtConfigs::UpdateOptionTranslations() .Type = ExtConfigs::SpecialOptionType::ReloadMap}); ExtConfigs::Options.push_back(ExtConfigs::DynamicOptions{ - .DisplayName = Translations::TranslateOrDefault("Options.SaveMap.PreserveINIKeySorting", "Preserve existing INI key sorting when saving"), - .IniKey = "SaveMap.PreserveINIKeySorting", - .Value = &ExtConfigs::SaveMap_PreserveINIKeySorting, + .DisplayName = Translations::TranslateOrDefault("Options.SaveMap.AdaptiveSorting", "Adaptive INI key sorting when saving"), + .IniKey = "SaveMap.AdaptiveSorting", + .Value = &ExtConfigs::SaveMap_AdaptiveSorting, .Type = ExtConfigs::SpecialOptionType::ReloadMap}); ExtConfigs::Options.push_back(ExtConfigs::DynamicOptions{ diff --git a/FA2sp/FA2sp.h b/FA2sp/FA2sp.h index a159f679..69672f17 100644 --- a/FA2sp/FA2sp.h +++ b/FA2sp/FA2sp.h @@ -240,7 +240,7 @@ class ExtConfigs static bool DisableDirectoryCheck; static bool ExtOverlays; static bool SaveMap_PreserveINISorting; - static bool SaveMap_PreserveINIKeySorting; + static bool SaveMap_AdaptiveSorting; static bool ExtMixLoader; static bool AVX2_Support; static bool AutoDarkMode; diff --git a/FA2sp/Helpers/CINIOrderTracker.cpp b/FA2sp/Helpers/CINIOrderTracker.cpp index bc505195..5fe903de 100644 --- a/FA2sp/Helpers/CINIOrderTracker.cpp +++ b/FA2sp/Helpers/CINIOrderTracker.cpp @@ -2,6 +2,29 @@ #include "CINIOrderTracker.h" #include #include +#include +#include + +static inline bool IsNumericKey(const ppmfc::CString& key) +{ + if (key.IsEmpty()) + return false; + for (int i = 0; i < key.GetLength(); ++i) + { + if (!isdigit(static_cast(key[i]))) + return false; + } + return true; +} + +static inline bool NumericKeyLess(const ppmfc::CString& a, const ppmfc::CString& b) +{ + int lenA = a.GetLength(); + int lenB = b.GetLength(); + if (lenA != lenB) + return lenA < lenB; + return strcmp(a.GetString(), b.GetString()) < 0; +} struct INIOrderData { @@ -173,7 +196,7 @@ std::vector CINIOrderTracker::GetSectionNames(CINI* ini, bool pr return names; } -std::vector CINIOrderTracker::GetEntries(CINI* ini, const ppmfc::CString& sectionName, INISection* section, bool preserveOrder) +std::vector CINIOrderTracker::GetEntries(CINI* ini, const ppmfc::CString& sectionName, INISection* section, bool adaptiveSorting) { std::vector result; if (!section) @@ -188,7 +211,7 @@ std::vector CINIOrderTracker::GetEntries(CINI* ini, const ppmfc::C auto& entities = section->GetEntities(); result.reserve(entities.size()); - if (!preserveOrder || !ini) + if (!adaptiveSorting || !ini) { for (const auto& pair : entities) { @@ -226,12 +249,68 @@ std::vector CINIOrderTracker::GetEntries(CINI* ini, const ppmfc::C } } + // Pass 3: Adaptive sorting for numeric keys + // If the section contains numeric keys, sort them naturally among themselves + // while keeping non-numeric (text) keys in their original relative positions. + std::vector numericIndices; + numericIndices.reserve(result.size()); + for (size_t i = 0; i < result.size(); ++i) + { + if (IsNumericKey(result[i].Key)) + { + numericIndices.push_back(i); + } + } + + if (numericIndices.size() > 1) + { + bool isSorted = true; + for (size_t i = 1; i < numericIndices.size(); ++i) + { + if (!NumericKeyLess(result[numericIndices[i - 1]].Key, result[numericIndices[i]].Key)) + { + isSorted = false; + break; + } + } + + if (!isSorted) + { + std::vector numericItems; + numericItems.reserve(numericIndices.size()); + for (size_t idx : numericIndices) + { + numericItems.push_back(std::move(result[idx])); + } + + std::stable_sort(numericItems.begin(), numericItems.end(), [](const KeyValueItem& a, const KeyValueItem& b) { + return NumericKeyLess(a.Key, b.Key); + }); + + for (size_t i = 0; i < numericIndices.size(); ++i) + { + result[numericIndices[i]] = std::move(numericItems[i]); + } + + // Sync the adaptively sorted order back into tracker + auto* pOrder = GetOrCreateKeyOrder(ini, sectionName); + if (pOrder) + { + pOrder->Clear(); + for (const auto& item : result) + { + pOrder->Add(item.Key); + } + } + } + } + return result; } -std::vector CINIOrderTracker::GetKeyNames(CINI* ini, const ppmfc::CString& sectionName, INISection* section, bool preserveOrder) +std::vector CINIOrderTracker::GetKeyNames(CINI* ini, const ppmfc::CString& sectionName, INISection* section, bool adaptiveSorting) { - auto entries = GetEntries(ini, sectionName, section, preserveOrder); + auto entries = GetEntries(ini, sectionName, section, adaptiveSorting); std::vector keys; keys.reserve(entries.size()); for (auto& e : entries) diff --git a/FA2sp/Helpers/CINIOrderTracker.h b/FA2sp/Helpers/CINIOrderTracker.h index 752a21ee..6f6daa7f 100644 --- a/FA2sp/Helpers/CINIOrderTracker.h +++ b/FA2sp/Helpers/CINIOrderTracker.h @@ -38,6 +38,6 @@ class CINIOrderTracker // Range / iteration helpers: returns items in preserved queue order (or map dictionary order if preserveOrder is false) static std::vector GetSections(CINI* ini, bool preserveOrder = true); static std::vector GetSectionNames(CINI* ini, bool preserveOrder = true); - static std::vector GetEntries(CINI* ini, const ppmfc::CString& sectionName, INISection* section = nullptr, bool preserveOrder = true); - static std::vector GetKeyNames(CINI* ini, const ppmfc::CString& sectionName, INISection* section = nullptr, bool preserveOrder = true); + static std::vector GetEntries(CINI* ini, const ppmfc::CString& sectionName, INISection* section = nullptr, bool adaptiveSorting = true); + static std::vector GetKeyNames(CINI* ini, const ppmfc::CString& sectionName, INISection* section = nullptr, bool adaptiveSorting = true); }; diff --git a/FA2sp/Miscs/Hooks.INI.cpp b/FA2sp/Miscs/Hooks.INI.cpp index 98378f9e..83ab0761 100644 --- a/FA2sp/Miscs/Hooks.INI.cpp +++ b/FA2sp/Miscs/Hooks.INI.cpp @@ -690,7 +690,7 @@ DEFINE_HOOK(4536B0, CINI_WriteToFile, 8) for (const auto& [sectionName, pSection] : CINIOrderTracker::GetSections(pThis, ExtConfigs::SaveMap_PreserveINISorting)) { oss << "[" << sectionName << "]\n"; - for (const auto& [key, value] : CINIOrderTracker::GetEntries(pThis, sectionName, pSection, ExtConfigs::SaveMap_PreserveINIKeySorting)) + for (const auto& [key, value] : CINIOrderTracker::GetEntries(pThis, sectionName, pSection, ExtConfigs::SaveMap_AdaptiveSorting)) { oss << key << "=" << value << "\n"; } diff --git a/FA2sp/Miscs/SaveMap.cpp b/FA2sp/Miscs/SaveMap.cpp index cd30dd31..a842751b 100644 --- a/FA2sp/Miscs/SaveMap.cpp +++ b/FA2sp/Miscs/SaveMap.cpp @@ -793,7 +793,7 @@ bool SaveMapExt::SaveMap(CINI* pINI, CFinalSunDlg* pFinalSun, FString filepath, oss << "\n"; }; - for (const auto& [key, value] : CINIOrderTracker::GetEntries(pINI, sectionName, pSection, ExtConfigs::SaveMap_PreserveINIKeySorting)) + for (const auto& [key, value] : CINIOrderTracker::GetEntries(pINI, sectionName, pSection, ExtConfigs::SaveMap_AdaptiveSorting)) { writeEntry(key, value); } diff --git a/Supplementary/FAData.ini b/Supplementary/FAData.ini index 1f7a6c90..9f5facda 100644 --- a/Supplementary/FAData.ini +++ b/Supplementary/FAData.ini @@ -252,9 +252,9 @@ SaveMap.KeepComments=false ; BOOLEAN ; ä¿�存地图时维æŒ�已有的 ini å°�节顺åº� SaveMap.PreserveINISorting=false -; BOOLEAN ; Preserve existing INI key order within sections when saving maps -; BOOLEAN ; ä¿�存地图时维æŒ�å°�节内已有的 ini 键值顺åº� -SaveMap.PreserveINIKeySorting=false +; BOOLEAN ; Adaptively sort INI keys when saving maps (natural numeric order for index sections, preserve order for properties) +; BOOLEAN ; ä¿�存地图时维æŒ�键值自适应顺åº�(数字索引å°�节按数字自然å�‡åº�,常规属性å°�节维æŒ�原åº�) +SaveMap.AdaptiveSorting=false ; Number of recent maps to remember; range 4-9 ; 记录多少个最近打开地图, å�–值范围为4-9 diff --git a/Supplementary/FALanguage_Chinese.ini b/Supplementary/FALanguage_Chinese.ini index d5ecaeaa..9a7a8200 100644 --- a/Supplementary/FALanguage_Chinese.ini +++ b/Supplementary/FALanguage_Chinese.ini @@ -1865,7 +1865,7 @@ SwitchConnectedTypeIsWaterCliff=(水上) Options.ExtFacings=å�¯ç”¨32å�‘é�¢å�‘ Options.ExtFacings.Drag=å�¯ç”¨32å�‘拖拽 Options.SaveMap.PreserveINISorting=ä¿�存时维æŒ�已有的iniå°�节顺åº� -Options.SaveMap.PreserveINIKeySorting=ä¿�存时维æŒ�已有的ini键值顺åº� +Options.SaveMap.AdaptiveSorting=ä¿�存地图时维æŒ�键值自适应顺åº� Options.Title=å��好设置 Options.UndoRedo.RecordObjects=记录游æˆ�对象修改历å�² Options.ExtMixLoader=å�¯ç”¨æ–°çš„Mix加载方å¼� diff --git a/Supplementary/FALanguage_English.ini b/Supplementary/FALanguage_English.ini index 9805e894..439afe80 100644 --- a/Supplementary/FALanguage_English.ini +++ b/Supplementary/FALanguage_English.ini @@ -1181,7 +1181,7 @@ SwitchConnectedTypeIsWaterCliff=(Water) Options.ExtFacings=Enable 32 facings support Options.ExtFacings.Drag=Allow drag units into 32 facings Options.SaveMap.PreserveINISorting=Preserve existing INI section sorting when saving -Options.SaveMap.PreserveINIKeySorting=Preserve existing INI key sorting when saving +Options.SaveMap.AdaptiveSorting=Adaptive INI key sorting when saving Options.Title=Preferences Options.UndoRedo.RecordObjects=Record editing history of objects Options.ExtMixLoader=Enable new mix loader diff --git a/Supplementary/RevengeNow/FAData.ini b/Supplementary/RevengeNow/FAData.ini index dd43d9cc..dd14bb6a 100644 --- a/Supplementary/RevengeNow/FAData.ini +++ b/Supplementary/RevengeNow/FAData.ini @@ -251,9 +251,9 @@ SaveMap.KeepComments=false ; BOOLEAN ; ä¿�存地图时维æŒ�已有的 ini å°�节顺åº� SaveMap.PreserveINISorting=true -; BOOLEAN ; Preserve existing INI key order within sections when saving maps -; BOOLEAN ; ä¿�存地图时维æŒ�å°�节内已有的 ini 键值顺åº� -SaveMap.PreserveINIKeySorting=true +; BOOLEAN ; Adaptively sort INI keys when saving maps (natural numeric order for index sections, preserve order for properties) +; BOOLEAN ; ä¿�存地图时维æŒ�键值自适应顺åº�(数字索引å°�节按数字自然å�‡åº�,常规属性å°�节维æŒ�原åº�) +SaveMap.AdaptiveSorting=true ; Number of recent maps to remember; range 4-9 ; 记录多少个最近打开地图, å�–值范围为4-9 diff --git a/Supplementary/RevengeNow/README.md b/Supplementary/RevengeNow/README.md index 7c211836..95f91492 100644 --- a/Supplementary/RevengeNow/README.md +++ b/Supplementary/RevengeNow/README.md @@ -13,7 +13,7 @@ - **FA2sp 现代兼容层**:ä¿�ç•™ `[Include]` 引用链(加载 `FAData_ObjectBrowser.ini` ä¿�è¯�物件æµ�览器中文分类与完整æ�¡ç›®æ­£å¸¸æ˜¾ç¤ºï¼‰ä¸Ž `[ExtConfigs]`ã€�现代剧场与图å�—管ç�†å®šä¹‰ã€‚ - å�¯ç”¨äº†é�¢å�‘ RN 对é½�ä¿�存所需的ä¿�åº�é…�置: - `SaveMap.PreserveINISorting=true`:ä¿�存地图时ä¿�æŒ�所有 INI å°�节原有的出现顺åº�。 - - `SaveMap.PreserveINIKeySorting=true`:ä¿�存地图时ä¿�æŒ�å°�节内部键值对(Key=Value)原有的出现顺åº�。 + - `SaveMap.AdaptiveSorting=true`:ä¿�存地图时自适应ä¿�æŒ�键值排布(数字索引å°�节自然å�‡åº�,常规属性å°�节维æŒ�原åº�)。 - `SaveMap.KeepComments=false`:ä¸�ä¿�留注释(符å�ˆ RN è¦�求)。 --- diff --git a/doc/agents/plans/ini_key_sorting_alignment_plan.md b/doc/agents/plans/ini_key_sorting_alignment_plan.md index 5911647b..6013fb8f 100644 --- a/doc/agents/plans/ini_key_sorting_alignment_plan.md +++ b/doc/agents/plans/ini_key_sorting_alignment_plan.md @@ -8,7 +8,7 @@ In the target editor [`YR_RN_Mission_Editor`](file:///D:/Developments/RevengeNow Our objective is to: 1. Enable `FA2Copy` to **preserve both INI section sequence and key sequence** when saving, matching `YR_RN_Mission_Editor`. 2. Use an **$O(1)$ Multi-Index design (`std::list` + `std::unordered_map`)** for both section order and key order to ensure top performance on massive maps (avoiding $O(N^2)$ lookups or $O(N)$ index shifts on deletions). -3. Introduce a configuration option (`SaveMap.PreserveINIKeySorting` / `ExtConfigs::SaveMap_PreserveINIKeySorting`) so that vanilla behavior remains intact for upstream compatibility when disabled. +3. Introduce a configuration option (`SaveMap.AdaptiveSorting` / `ExtConfigs::SaveMap_AdaptiveSorting`) so that vanilla behavior remains intact for upstream compatibility when disabled. 4. Adapt a dedicated configuration suite for **Revenge Now (RN)** (similar to `Supplementary/MentalOmega`) with this feature enabled, incorporating RN-specific configurations from `YR_RN_Mission_Editor/dist/FinalRevenge`. --- From 6a99fc3db5a4e0095bf667071f2a3cf0b2f04221 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 23:02:48 -0400 Subject: [PATCH 17/24] feat: embed RecordKey in writeString lambda and adopt LoadINIExt with raw INI strings in UTs --- FA2sp.UnitTest/CINIOrderTrackerTest.cpp | 361 ++++++++++++------------ FA2sp.UnitTest/FA2sp.UnitTest.vcxproj | 3 + FA2sp.UnitTest/TestStubs.cpp | 89 ++++++ FA2sp/Miscs/Hooks.INI.cpp | 17 +- 4 files changed, 282 insertions(+), 188 deletions(-) create mode 100644 FA2sp.UnitTest/TestStubs.cpp diff --git a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp index ce5113bb..0d0bed6c 100644 --- a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp +++ b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp @@ -1,9 +1,15 @@ #include "TestCommon.h" #include #include +#include #include #include +static void LoadRawINI(CINIExt& ini, const std::string& raw) +{ + ini.LoadINIExt(reinterpret_cast(const_cast(raw.data())), raw.size(), nullptr, true, true, false); +} + TEST(CINIOrderTrackerTest, SectionOrderTrackingAndQueueSemantics) { // Dummy pointer for tracking @@ -81,20 +87,16 @@ static std::vector ToStringVector(const std::vector TEST(CINIOrderTrackerTest, RealCINICrudKeyOperations) { - CINI ini; - CINIOrderTracker::Clear(&ini); - - // 1. Initial Insertions and Recording (Simulate load phase) - ini.WriteString("Basic", "Name", "Island Wars"); - CINIOrderTracker::RecordKey(&ini, "Basic", "Name"); - - ini.WriteString("Basic", "Player", "Soviet"); - CINIOrderTracker::RecordKey(&ini, "Basic", "Player"); - - ini.WriteString("Basic", "Theme", "NoTheme"); - CINIOrderTracker::RecordKey(&ini, "Basic", "Theme"); - - // Query initial state + CINIExt ini; + const char* raw = R"( +[Basic] +Name=Island Wars +Player=Soviet +Theme=NoTheme +)"; + LoadRawINI(ini, raw); + + // Query initial state loaded through LoadINIExt EXPECT_TRUE(ini.KeyExists("Basic", "Name")); EXPECT_TRUE(ini.KeyExists("Basic", "Player")); EXPECT_TRUE(ini.KeyExists("Basic", "Theme")); @@ -146,29 +148,24 @@ TEST(CINIOrderTrackerTest, RealCINICrudKeyOperations) TEST(CINIOrderTrackerTest, RealCINICrudSectionOperations) { - CINI ini; - CINIOrderTracker::Clear(&ini); - - // 1. Initial Insertions and Recording across multiple sections - ini.WriteString("Header", "Version", "4"); - CINIOrderTracker::RecordSection(&ini, "Header"); - CINIOrderTracker::RecordKey(&ini, "Header", "Version"); + CINIExt ini; + const char* raw = R"( +[Header] +Version=4 - ini.WriteString("Map", "Width", "50"); - ini.WriteString("Map", "Height", "50"); - CINIOrderTracker::RecordSection(&ini, "Map"); - CINIOrderTracker::RecordKey(&ini, "Map", "Width"); - CINIOrderTracker::RecordKey(&ini, "Map", "Height"); +[Map] +Width=50 +Height=50 - ini.WriteString("Lighting", "Ambient", "1.0"); - CINIOrderTracker::RecordSection(&ini, "Lighting"); - CINIOrderTracker::RecordKey(&ini, "Lighting", "Ambient"); +[Lighting] +Ambient=1.0 - ini.WriteString("Units", "0", "E1,Soviet,256,10,10"); - CINIOrderTracker::RecordSection(&ini, "Units"); - CINIOrderTracker::RecordKey(&ini, "Units", "0"); +[Units] +0=E1,Soviet,256,10,10 +)"; + LoadRawINI(ini, raw); - // Query initial sections + // Query initial sections loaded through LoadINIExt std::vector expectedSections = { "Header", "Map", "Lighting", "Units" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); @@ -251,20 +248,17 @@ TEST(CINIOrderTrackerTest, RealCINIAutoTrackingUntrackedItems) TEST(CINIOrderTrackerTest, RealCINIDeletedItemsOmittedDuringIterationEvenWithoutUntrack) { - CINI ini; - CINIOrderTracker::Clear(&ini); - - ini.WriteString("Basic", "Name", "MapName"); - ini.WriteString("Basic", "GhostKey", "WillBeDeleted"); - ini.WriteString("Basic", "Theme", "ThemeA"); - CINIOrderTracker::RecordSection(&ini, "Basic"); - CINIOrderTracker::RecordKey(&ini, "Basic", "Name"); - CINIOrderTracker::RecordKey(&ini, "Basic", "GhostKey"); - CINIOrderTracker::RecordKey(&ini, "Basic", "Theme"); - - ini.WriteString("GhostSection", "dummy", "1"); - CINIOrderTracker::RecordSection(&ini, "GhostSection"); - CINIOrderTracker::RecordKey(&ini, "GhostSection", "dummy"); + CINIExt ini; + const char* raw = R"( +[Basic] +Name=MapName +GhostKey=WillBeDeleted +Theme=ThemeA + +[GhostSection] +dummy=1 +)"; + LoadRawINI(ini, raw); // Delete key in CINI, but deliberately do NOT call CINIOrderTracker::RemoveKey ini.DeleteKey("Basic", "GhostKey"); @@ -285,24 +279,19 @@ TEST(CINIOrderTrackerTest, RealCINIDeletedItemsOmittedDuringIterationEvenWithout TEST(CINIOrderTrackerTest, RealCINIPreserveOrderTrueVsNaturalMapOrder) { - CINI ini; - CINIOrderTracker::Clear(&ini); - - // Insert keys where insertion sequence deliberately differs from INISectionEntriesComparator + CINIExt ini; + // Input keys where insertion sequence deliberately differs from INISectionEntriesComparator // INISectionEntriesComparator sorts: length ascending, then strcmp. // Insertion order: "Zebra" (len 5), "Beta" (len 4), "Alpha" (len 5), "A" (len 1) // Natural comparator order would be: "A" (len 1), "Beta" (len 4), "Alpha" (len 5), "Zebra" (len 5) - ini.WriteString("TestSec", "Zebra", "1"); - CINIOrderTracker::RecordKey(&ini, "TestSec", "Zebra"); - - ini.WriteString("TestSec", "Beta", "2"); - CINIOrderTracker::RecordKey(&ini, "TestSec", "Beta"); - - ini.WriteString("TestSec", "Alpha", "3"); - CINIOrderTracker::RecordKey(&ini, "TestSec", "Alpha"); - - ini.WriteString("TestSec", "A", "4"); - CINIOrderTracker::RecordKey(&ini, "TestSec", "A"); + const char* raw = R"( +[TestSec] +Zebra=1 +Beta=2 +Alpha=3 +A=4 +)"; + LoadRawINI(ini, raw); // preserveOrder = true: preserves exact insertion order std::vector preservedOrder = { "Zebra", "Beta", "Alpha", "A" }; @@ -317,43 +306,31 @@ TEST(CINIOrderTrackerTest, RealCINIPreserveOrderTrueVsNaturalMapOrder) TEST(CINIOrderTrackerTest, RealCINIComplexMapLifecycleSimulation) { - CINI ini; - CINIOrderTracker::Clear(&ini); - + CINIExt ini; // Step 1: Initial map loading simulation - ini.WriteString("Basic", "Name", "Battleground"); - ini.WriteString("Basic", "Author", "Tester"); - ini.WriteString("Basic", "Player", "Soviet"); - ini.WriteString("Basic", "Theme", "NoTheme"); - CINIOrderTracker::RecordSection(&ini, "Basic"); - CINIOrderTracker::RecordKey(&ini, "Basic", "Name"); - CINIOrderTracker::RecordKey(&ini, "Basic", "Author"); - CINIOrderTracker::RecordKey(&ini, "Basic", "Player"); - CINIOrderTracker::RecordKey(&ini, "Basic", "Theme"); - - ini.WriteString("Map", "Theater", "TEMPERATE"); - ini.WriteString("Map", "Size", "0,0,50,50"); - ini.WriteString("Map", "LocalSize", "2,2,46,46"); - CINIOrderTracker::RecordSection(&ini, "Map"); - CINIOrderTracker::RecordKey(&ini, "Map", "Theater"); - CINIOrderTracker::RecordKey(&ini, "Map", "Size"); - CINIOrderTracker::RecordKey(&ini, "Map", "LocalSize"); - - ini.WriteString("Waypoints", "0", "100"); - ini.WriteString("Waypoints", "1", "200"); - ini.WriteString("Waypoints", "2", "300"); - ini.WriteString("Waypoints", "3", "400"); - CINIOrderTracker::RecordSection(&ini, "Waypoints"); - CINIOrderTracker::RecordKey(&ini, "Waypoints", "0"); - CINIOrderTracker::RecordKey(&ini, "Waypoints", "1"); - CINIOrderTracker::RecordKey(&ini, "Waypoints", "2"); - CINIOrderTracker::RecordKey(&ini, "Waypoints", "3"); - - ini.WriteString("Units", "0", "E1,Soviet,256,10,10"); - ini.WriteString("Units", "1", "HTNK,Soviet,256,12,12"); - CINIOrderTracker::RecordSection(&ini, "Units"); - CINIOrderTracker::RecordKey(&ini, "Units", "0"); - CINIOrderTracker::RecordKey(&ini, "Units", "1"); + const char* raw = R"( +[Basic] +Name=Battleground +Author=Tester +Player=Soviet +Theme=NoTheme + +[Map] +Theater=TEMPERATE +Size=0,0,50,50 +LocalSize=2,2,46,46 + +[Waypoints] +0=100 +1=200 +2=300 +3=400 + +[Units] +0=E1,Soviet,256,10,10 +1=HTNK,Soviet,256,12,12 +)"; + LoadRawINI(ini, raw); // Step 2 (Modify): Rename map and change theater ini.WriteString("Basic", "Name", "Battleground 2.0"); @@ -433,22 +410,17 @@ TEST(CINIOrderTrackerTest, RealCINIComplexMapLifecycleSimulation) TEST(CINIOrderTrackerTest, RealCINISameKeyDeletedAndReaddedHeadMiddleTailCombinations) { - CINI ini; - CINIOrderTracker::Clear(&ini); + CINIExt ini; const char* sec = "KeyPermutations"; - - // Initialize 5 keys: Head, Mid1, Mid2, Mid3, Tail - ini.WriteString(sec, "K_Head", "1"); - ini.WriteString(sec, "K_Mid1", "2"); - ini.WriteString(sec, "K_Mid2", "3"); - ini.WriteString(sec, "K_Mid3", "4"); - ini.WriteString(sec, "K_Tail", "5"); - CINIOrderTracker::RecordSection(&ini, sec); - CINIOrderTracker::RecordKey(&ini, sec, "K_Head"); - CINIOrderTracker::RecordKey(&ini, sec, "K_Mid1"); - CINIOrderTracker::RecordKey(&ini, sec, "K_Mid2"); - CINIOrderTracker::RecordKey(&ini, sec, "K_Mid3"); - CINIOrderTracker::RecordKey(&ini, sec, "K_Tail"); + const char* raw = R"( +[KeyPermutations] +K_Head=1 +K_Mid1=2 +K_Mid2=3 +K_Mid3=4 +K_Tail=5 +)"; + LoadRawINI(ini, raw); std::vector expected = { "K_Head", "K_Mid1", "K_Mid2", "K_Mid3", "K_Tail" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); @@ -553,17 +525,25 @@ TEST(CINIOrderTrackerTest, RealCINISameKeyDeletedAndReaddedHeadMiddleTailCombina TEST(CINIOrderTrackerTest, RealCINISameSectionDeletedAndReaddedHeadMiddleTailCombinations) { - CINI ini; - CINIOrderTracker::Clear(&ini); + CINIExt ini; + const char* raw = R"( +[Sec_Head] +val=0 + +[Sec_Mid1] +val=1 + +[Sec_Mid2] +val=2 + +[Sec_Mid3] +val=3 - // Initialize 5 sections: Sec_Head, Sec_Mid1, Sec_Mid2, Sec_Mid3, Sec_Tail +[Sec_Tail] +val=4 +)"; + LoadRawINI(ini, raw); const std::vector initSections = { "Sec_Head", "Sec_Mid1", "Sec_Mid2", "Sec_Mid3", "Sec_Tail" }; - for (size_t i = 0; i < initSections.size(); ++i) - { - ini.WriteString(initSections[i].c_str(), "val", std::to_string(i).c_str()); - CINIOrderTracker::RecordSection(&ini, initSections[i].c_str()); - CINIOrderTracker::RecordKey(&ini, initSections[i].c_str(), "val"); - } std::vector expected = initSections; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); @@ -661,21 +641,25 @@ TEST(CINIOrderTrackerTest, RealCINISameSectionDeletedAndReaddedHeadMiddleTailCom TEST(CINIOrderTrackerTest, RealCINIInterleavedKeyAndSectionDeleteReaddStressTest) { - CINI ini; - CINIOrderTracker::Clear(&ini); - + CINIExt ini; // Create 3 sections, each with 3 keys: Head, Mid, Tail - const std::vector secNames = { "Section_1", "Section_2", "Section_3" }; - for (const auto& secName : secNames) - { - ini.WriteString(secName.c_str(), "Key_H", "val_H"); - ini.WriteString(secName.c_str(), "Key_M", "val_M"); - ini.WriteString(secName.c_str(), "Key_T", "val_T"); - CINIOrderTracker::RecordSection(&ini, secName.c_str()); - CINIOrderTracker::RecordKey(&ini, secName.c_str(), "Key_H"); - CINIOrderTracker::RecordKey(&ini, secName.c_str(), "Key_M"); - CINIOrderTracker::RecordKey(&ini, secName.c_str(), "Key_T"); - } + const char* raw = R"( +[Section_1] +Key_H=val_H +Key_M=val_M +Key_T=val_T + +[Section_2] +Key_H=val_H +Key_M=val_M +Key_T=val_T + +[Section_3] +Key_H=val_H +Key_M=val_M +Key_T=val_T +)"; + LoadRawINI(ini, raw); // Step 1: In Section_1 (Head section), delete Head key Key_H and re-add it ini.DeleteKey("Section_1", "Key_H"); @@ -767,21 +751,15 @@ TEST(CINIOrderTrackerTest, RealCINIInterleavedKeyAndSectionDeleteReaddStressTest TEST(CINIOrderTrackerTest, AdaptiveSortingNumericKeysPreserveNaturalOrderOnDeleteAndReadd) { - CINI ini; - CINIOrderTracker::Clear(&ini); - - // Initial setup: [Units] with 0, 1, 2, 3 - ini.WriteString("Units", "0", "Unit_Zero"); - CINIOrderTracker::RecordKey(&ini, "Units", "0"); - - ini.WriteString("Units", "1", "Unit_One"); - CINIOrderTracker::RecordKey(&ini, "Units", "1"); - - ini.WriteString("Units", "2", "Unit_Two"); - CINIOrderTracker::RecordKey(&ini, "Units", "2"); - - ini.WriteString("Units", "3", "Unit_Three"); - CINIOrderTracker::RecordKey(&ini, "Units", "3"); + CINIExt ini; + const char* raw = R"( +[Units] +0=Unit_Zero +1=Unit_One +2=Unit_Two +3=Unit_Three +)"; + LoadRawINI(ini, raw); std::vector expectedInitial = { "0", "1", "2", "3" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Units", nullptr, true)), expectedInitial); @@ -845,19 +823,23 @@ TEST(CINIOrderTrackerTest, AdaptiveSortingNumericKeysPreserveNaturalOrderOnDelet TEST(CINIOrderTrackerTest, AdaptiveSortingWestwoodNumericComparatorMultiDigit) { - CINI ini; - CINIOrderTracker::Clear(&ini); - - // Multi-digit numbers inserted in intentionally scrambled order + CINIExt ini; + // Multi-digit numbers written in raw INI in intentionally scrambled order // "100", "10", "0", "9", "1", "11", "8", "99" // In ASCII alphabetical sort: "0", "1", "10", "100", "11", "8", "9", "99" (WRONG for game engine) // In Westwood numeric sort: "0", "1", "8", "9", "10", "11", "99", "100" (CORRECT) - std::vector insertOrder = { "100", "10", "0", "9", "1", "11", "8", "99" }; - for (const auto& k : insertOrder) - { - ini.WriteString("Waypoints", k.c_str(), ("pos_" + k).c_str()); - CINIOrderTracker::RecordKey(&ini, "Waypoints", k.c_str()); - } + const char* raw = R"( +[Waypoints] +100=pos_100 +10=pos_10 +0=pos_0 +9=pos_9 +1=pos_1 +11=pos_11 +8=pos_8 +99=pos_99 +)"; + LoadRawINI(ini, raw); std::vector expectedWestwoodOrder = { "0", "1", "8", "9", "10", "11", "99", "100" }; auto actualKeys = ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Waypoints", nullptr, true)); @@ -868,28 +850,21 @@ TEST(CINIOrderTrackerTest, AdaptiveSortingWestwoodNumericComparatorMultiDigit) TEST(CINIOrderTrackerTest, AdaptiveSortingMixedSectionPreservesTextHeaderAndOrdersNumericArray) { - CINI ini; - CINIOrderTracker::Clear(&ini); - + CINIExt ini; // Simulate Script / TaskForce section like [01000001] // Header properties: Name, Group // Numeric action/member entries: 0, 1, 2 - const char* sec = "01000001"; - ini.WriteString(sec, "Name", "Assault Squad"); - CINIOrderTracker::RecordKey(&ini, sec, "Name"); - - ini.WriteString(sec, "Group", "-1"); - CINIOrderTracker::RecordKey(&ini, sec, "Group"); - - ini.WriteString(sec, "0", "1,E1"); - CINIOrderTracker::RecordKey(&ini, sec, "0"); - - ini.WriteString(sec, "1", "2,HTK"); - CINIOrderTracker::RecordKey(&ini, sec, "1"); - - ini.WriteString(sec, "2", "1,APOC"); - CINIOrderTracker::RecordKey(&ini, sec, "2"); + const char* raw = R"( +[01000001] +Name=Assault Squad +Group=-1 +0=1,E1 +1=2,HTK +2=1,APOC +)"; + LoadRawINI(ini, raw); + const char* sec = "01000001"; // Delete action "0", then re-add "0" -> should stay right after headers and before "1" ini.DeleteKey(sec, "0"); CINIOrderTracker::RemoveKey(&ini, sec, "0"); @@ -915,3 +890,31 @@ TEST(CINIOrderTrackerTest, AdaptiveSortingMixedSectionPreservesTextHeaderAndOrde CINIOrderTracker::Clear(&ini); } + +TEST(CINIOrderTrackerTest, AdaptiveSortingUntrackedKeyWithoutManualRecordKeyAutoSorted) +{ + CINIExt ini; + const char* raw = R"( +[Units] +1=Unit_One +2=Unit_Two +3=Unit_Three +)"; + LoadRawINI(ini, raw); + + // Call WriteString alone without ANY manual RecordKey call + ini.WriteString("Units", "0", "Unit_Zero_Auto"); + + // Pass 2 should auto-discover "0", Pass 3 should adaptively sort it to index 0 + std::vector expectedOrder = { "0", "1", "2", "3" }; + EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Units", nullptr, true)), expectedOrder); + + auto entries = CINIOrderTracker::GetEntries(&ini, "Units", nullptr, true); + ASSERT_EQ(entries.size(), 4u); + EXPECT_STREQ(entries[0].Key, "0"); + EXPECT_STREQ(entries[0].Value, "Unit_Zero_Auto"); + EXPECT_STREQ(entries[1].Key, "1"); + EXPECT_STREQ(entries[1].Value, "Unit_One"); + + CINIOrderTracker::Clear(&ini); +} diff --git a/FA2sp.UnitTest/FA2sp.UnitTest.vcxproj b/FA2sp.UnitTest/FA2sp.UnitTest.vcxproj index e8d1131a..679aab23 100644 --- a/FA2sp.UnitTest/FA2sp.UnitTest.vcxproj +++ b/FA2sp.UnitTest/FA2sp.UnitTest.vcxproj @@ -112,6 +112,9 @@ + + + diff --git a/FA2sp.UnitTest/TestStubs.cpp b/FA2sp.UnitTest/TestStubs.cpp new file mode 100644 index 00000000..8398405b --- /dev/null +++ b/FA2sp.UnitTest/TestStubs.cpp @@ -0,0 +1,89 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +// Logger stubs +FILE* Logger::pFile = nullptr; +bool Logger::bInitialized = false; + +// ExtConfigs stubs +bool ExtConfigs::AllowIncludes = false; +bool ExtConfigs::AllowInherits = false; +bool ExtConfigs::AllowPlusEqual = false; +bool ExtConfigs::SaveMap_KeepComments = false; +bool ExtConfigs::IncludeType = false; +bool ExtConfigs::InheritType = false; +bool ExtConfigs::SaveMap_PreserveINISorting = true; +bool ExtConfigs::SaveMap_AdaptiveSorting = true; +bool ExtConfigs::UTF8Support_InferEncoding = true; + +// CMapDataExt stubs +bool CMapDataExt::IsLoadingMapFile = false; +bool CMapDataExt::IsUTF8File = false; +std::unordered_map CMapDataExt::TileSetOriginSetNames[6]; +std::vector CMapDataExt::MapIniSectionSorting; +FMap> CMapDataExt::MapInlineComments; +FMap> CMapDataExt::MapFrontlineComments; +FMap CMapDataExt::MapInsectionComments; +FMap CMapDataExt::MapFrontsectionComments; + +ppmfc::CString CMapDataExt::GetAvailableIndex(EIndexType type) +{ + return ""; +} + +// CLoadingExt stubs +void* CLoadingExt::ReadWholeFile(char const* filename, unsigned long* pDwSize, bool fa2path, bool useCache) +{ + return nullptr; +} + +// STDHelpers stubs needed by Hooks.INI.cpp +FileEncoding STDHelpers::GetFileEncoding(const uint8_t* data, size_t size) +{ + if (!data || size == 0) + return FileEncoding::ANSI; + if (size >= 3 && data[0] == 0xEF && data[1] == 0xBB && data[2] == 0xBF) + return FileEncoding::UTF8_BOM; + return FileEncoding::ANSI; +} + +std::vector STDHelpers::SplitString(const ppmfc::CString& pSource, const char* pSplit) +{ + std::vector ret; + if (pSplit == nullptr || pSource.GetLength() == 0) + return ret; + int nIdx = 0; + while (true) + { + int nPos = pSource.Find(pSplit, nIdx); + if (nPos == -1) + break; + if (nPos >= nIdx) + ret.push_back(pSource.Mid(nIdx, nPos - nIdx)); + nIdx = nPos + strlen(pSplit); + } + ret.push_back(pSource.Mid(nIdx)); + return ret; +} + +std::vector STDHelpers::SplitString(const ppmfc::CString& pSource, size_t nth, const char* pSplit) +{ + std::vector ret = SplitString(pSource, pSplit); + while (ret.size() <= nth) + { + ret.push_back(""); + } + return ret; +} + +bool STDHelpers::IsNoneOrEmpty(const char* pSource) +{ + return !pSource || *pSource == '\0' || _stricmp(pSource, "") == 0; +} + diff --git a/FA2sp/Miscs/Hooks.INI.cpp b/FA2sp/Miscs/Hooks.INI.cpp index 83ab0761..0270b0a9 100644 --- a/FA2sp/Miscs/Hooks.INI.cpp +++ b/FA2sp/Miscs/Hooks.INI.cpp @@ -35,13 +35,14 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, } } - auto writeString = [](INISection* pSection, const FString& key, const FString& value) + auto writeString = [this](INISection* pSection, const ppmfc::CString& sectionName, const FString& key, const FString& value) { std::pair ins = std::make_pair(key, value); std::pair ret; reinterpret_cast(&pSection->GetEntities())->insert(&ret, &ins); if (!ret.second) new(&ret.first->second) ppmfc::CString(value); + CINIOrderTracker::RecordKey(this, sectionName, key); }; auto encoding = STDHelpers::GetFileEncoding(pFile, fileSize); @@ -220,8 +221,7 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, if (!key.empty()) { size_t currentIndex = pCurrentSection->GetEntities().size(); - writeString(pCurrentSection, key, value); - CINIOrderTracker::RecordKey(this, CurrentSectionName, key); + writeString(pCurrentSection, CurrentSectionName, key, value); if (keepComment) { PendingComment.Trim(); @@ -283,7 +283,7 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, size_t currentIndex = pSectionA->GetEntities().size(); - writeString(pSectionA, key, value); + writeString(pSectionA, main, key, value); std::pair ins = std::make_pair((ppmfc::CString)key, (int)currentIndex); @@ -381,8 +381,7 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, int index = 0; for (const auto& [key, value] : targetIndicies) { - writeString(pTargetSection, key, value); - CINIOrderTracker::RecordKey(this, sectionName, key); + writeString(pTargetSection, sectionName, key, value); std::pair ins = std::make_pair((ppmfc::CString)key, index++); @@ -441,13 +440,14 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, void CINIExt::InheritSectionRecursive(const ppmfc::CString& sectionName, std::set& visited) { - auto writeString = [](INISection* pSection, const FString& key, const FString& value) + auto writeString = [this](INISection* pSection, const ppmfc::CString& sectionName, const FString& key, const FString& value) { std::pair ins = std::make_pair(key, value); std::pair ret; reinterpret_cast(&pSection->GetEntities())->insert(&ret, &ins); if (!ret.second) new(&ret.first->second) ppmfc::CString(value); + CINIOrderTracker::RecordKey(this, sectionName, key); }; if (visited.count(sectionName)) { @@ -487,8 +487,7 @@ void CINIExt::InheritSectionRecursive(const ppmfc::CString& sectionName, { size_t currentIndex = pSection->GetEntities().size(); - writeString(pSection, key, value); - CINIOrderTracker::RecordKey(this, sectionName, key); + writeString(pSection, sectionName, key, value); std::pair ins = std::make_pair((ppmfc::CString)key, (int)currentIndex); From 88e8a6b56f690ade2b634a37bcaa38249f4dcee0 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 23:05:53 -0400 Subject: [PATCH 18/24] using string_view to reduce memory allocation . --- FA2sp.UnitTest/CINIOrderTrackerTest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp index 0d0bed6c..99e8054d 100644 --- a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp +++ b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp @@ -5,7 +5,7 @@ #include #include -static void LoadRawINI(CINIExt& ini, const std::string& raw) +static void LoadRawINI(CINIExt& ini, const std::string_view raw) { ini.LoadINIExt(reinterpret_cast(const_cast(raw.data())), raw.size(), nullptr, true, true, false); } From 65b1a77144768a93a8c7d7b31b50db24f445a029 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 7 Oct 2026 23:37:41 -0400 Subject: [PATCH 19/24] feat(ini): encapsulate CINI mutations in CINIExt with dynamic function pointer switching --- FA2sp.UnitTest/CINIOrderTrackerTest.cpp | 124 ++++++++------------ FA2sp/FA2sp.cpp | 3 + FA2sp/Miscs/Hooks.INI.cpp | 144 +++++++++++++++++++++++- FA2sp/Miscs/Hooks.INI.h | 25 ++++ 4 files changed, 215 insertions(+), 81 deletions(-) diff --git a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp index 99e8054d..1dcb560d 100644 --- a/FA2sp.UnitTest/CINIOrderTrackerTest.cpp +++ b/FA2sp.UnitTest/CINIOrderTrackerTest.cpp @@ -110,7 +110,6 @@ Theme=NoTheme // 2. Modify / Update existing key in-place // Updating existing key value must NOT alter its sequence order in SequencedKeyList ini.WriteString("Basic", "Name", "Island Wars Remastered"); - CINIOrderTracker::RecordKey(&ini, "Basic", "Name"); EXPECT_STREQ(ini.GetString("Basic", "Name"), "Island Wars Remastered"); EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Basic")), expectedKeys); @@ -118,7 +117,6 @@ Theme=NoTheme // 3. Add new key // Newly added key AltPalette must be appended to the tail ini.WriteString("Basic", "AltPalette", "1"); - CINIOrderTracker::RecordKey(&ini, "Basic", "AltPalette"); EXPECT_STREQ(ini.GetString("Basic", "AltPalette"), "1"); expectedKeys = { "Name", "Player", "Theme", "AltPalette" }; @@ -128,7 +126,6 @@ Theme=NoTheme // Remove middle key 'Player' bool deleted = ini.DeleteKey("Basic", "Player"); EXPECT_TRUE(deleted); - CINIOrderTracker::RemoveKey(&ini, "Basic", "Player"); EXPECT_FALSE(ini.KeyExists("Basic", "Player")); expectedKeys = { "Name", "Theme", "AltPalette" }; @@ -137,7 +134,6 @@ Theme=NoTheme // 5. Re-add deleted key -> must be pushed to tail of queue (FIFO queue semantics) // Re-write Player="Allies" -> must now be placed at the end ini.WriteString("Basic", "Player", "Allies"); - CINIOrderTracker::RecordKey(&ini, "Basic", "Player"); EXPECT_STREQ(ini.GetString("Basic", "Player"), "Allies"); expectedKeys = { "Name", "Theme", "AltPalette", "Player" }; @@ -176,8 +172,6 @@ Ambient=1.0 // 3. Add new section -> must be appended to tail ini.WriteString("Triggers", "0", "TrigAlpha"); - CINIOrderTracker::RecordSection(&ini, "Triggers"); - CINIOrderTracker::RecordKey(&ini, "Triggers", "0"); expectedSections = { "Header", "Map", "Lighting", "Units", "Triggers" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); @@ -185,7 +179,6 @@ Ambient=1.0 // 4. Delete section bool deleted = ini.DeleteSection("Lighting"); EXPECT_TRUE(deleted); - CINIOrderTracker::RemoveSection(&ini, "Lighting"); EXPECT_FALSE(ini.SectionExists("Lighting")); expectedSections = { "Header", "Map", "Units", "Triggers" }; @@ -193,8 +186,6 @@ Ambient=1.0 // 5. Re-add deleted section -> must be pushed to tail of queue! ini.WriteString("Lighting", "Ambient", "1.5"); - CINIOrderTracker::RecordSection(&ini, "Lighting"); - CINIOrderTracker::RecordKey(&ini, "Lighting", "Ambient"); EXPECT_TRUE(ini.SectionExists("Lighting")); EXPECT_STREQ(ini.GetString("Lighting", "Ambient"), "1.5"); @@ -338,26 +329,19 @@ LocalSize=2,2,46,46 // Step 3 (Delete): Delete waypoint 1 ini.DeleteKey("Waypoints", "1"); - CINIOrderTracker::RemoveKey(&ini, "Waypoints", "1"); // Step 4 (Add): Add waypoint 4 ini.WriteString("Waypoints", "4", "500"); - CINIOrderTracker::RecordKey(&ini, "Waypoints", "4"); // Step 5 (Delete + Re-add): Move waypoint 0 to tail by deleting and re-adding ini.DeleteKey("Waypoints", "0"); - CINIOrderTracker::RemoveKey(&ini, "Waypoints", "0"); ini.WriteString("Waypoints", "0", "150"); - CINIOrderTracker::RecordKey(&ini, "Waypoints", "0"); // Step 6 (Add Section): Add new [Triggers] section ini.WriteString("Triggers", "0", "TriggerA"); - CINIOrderTracker::RecordSection(&ini, "Triggers"); - CINIOrderTracker::RecordKey(&ini, "Triggers", "0"); // Step 7 (Delete Section): Delete [Units] section ini.DeleteSection("Units"); - CINIOrderTracker::RemoveSection(&ini, "Units"); // Step 8 (Verify complete final state): // Sections order: Basic, Map, Waypoints, Triggers @@ -427,7 +411,6 @@ K_Tail=5 // --- Scenario A: Delete HEAD key (K_Head), verify, then re-add --- EXPECT_TRUE(ini.DeleteKey(sec, "K_Head")); - CINIOrderTracker::RemoveKey(&ini, sec, "K_Head"); EXPECT_FALSE(ini.KeyExists(sec, "K_Head")); EXPECT_STREQ(ini.GetString(sec, "K_Head"), ""); expected = { "K_Mid1", "K_Mid2", "K_Mid3", "K_Tail" }; @@ -435,7 +418,6 @@ K_Tail=5 // Re-add K_Head -> must be placed at tail ini.WriteString(sec, "K_Head", "1_new"); - CINIOrderTracker::RecordKey(&ini, sec, "K_Head"); EXPECT_TRUE(ini.KeyExists(sec, "K_Head")); EXPECT_STREQ(ini.GetString(sec, "K_Head"), "1_new"); expected = { "K_Mid1", "K_Mid2", "K_Mid3", "K_Tail", "K_Head" }; @@ -443,28 +425,24 @@ K_Tail=5 // --- Scenario B: Delete MIDDLE key (K_Mid2), verify, then re-add --- EXPECT_TRUE(ini.DeleteKey(sec, "K_Mid2")); - CINIOrderTracker::RemoveKey(&ini, sec, "K_Mid2"); EXPECT_FALSE(ini.KeyExists(sec, "K_Mid2")); expected = { "K_Mid1", "K_Mid3", "K_Tail", "K_Head" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); // Re-add K_Mid2 -> must be placed at tail ini.WriteString(sec, "K_Mid2", "3_new"); - CINIOrderTracker::RecordKey(&ini, sec, "K_Mid2"); EXPECT_STREQ(ini.GetString(sec, "K_Mid2"), "3_new"); expected = { "K_Mid1", "K_Mid3", "K_Tail", "K_Head", "K_Mid2" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); // --- Scenario C: Delete TAIL key (currently K_Mid2), verify, then re-add --- EXPECT_TRUE(ini.DeleteKey(sec, "K_Mid2")); - CINIOrderTracker::RemoveKey(&ini, sec, "K_Mid2"); EXPECT_FALSE(ini.KeyExists(sec, "K_Mid2")); expected = { "K_Mid1", "K_Mid3", "K_Tail", "K_Head" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); // Re-add K_Mid2 again (multi-cycle on the same key!) ini.WriteString(sec, "K_Mid2", "3_v3"); - CINIOrderTracker::RecordKey(&ini, sec, "K_Mid2"); EXPECT_STREQ(ini.GetString(sec, "K_Mid2"), "3_v3"); expected = { "K_Mid1", "K_Mid3", "K_Tail", "K_Head", "K_Mid2" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); @@ -473,13 +451,10 @@ K_Tail=5 // Current order: ["K_Mid1" (Head), "K_Mid3" (Mid), "K_Tail" (Mid), "K_Head" (Mid), "K_Mid2" (Tail)] // Delete Head ("K_Mid1") ini.DeleteKey(sec, "K_Mid1"); - CINIOrderTracker::RemoveKey(&ini, sec, "K_Mid1"); // Delete Mid ("K_Tail") ini.DeleteKey(sec, "K_Tail"); - CINIOrderTracker::RemoveKey(&ini, sec, "K_Tail"); // Delete Tail ("K_Mid2") ini.DeleteKey(sec, "K_Mid2"); - CINIOrderTracker::RemoveKey(&ini, sec, "K_Mid2"); // Remaining should be: ["K_Mid3", "K_Head"] expected = { "K_Mid3", "K_Head" }; @@ -487,11 +462,8 @@ K_Tail=5 // Re-add in reverse order: K_Mid2 (former tail), K_Tail (former mid), K_Mid1 (former head) ini.WriteString(sec, "K_Mid2", "200"); - CINIOrderTracker::RecordKey(&ini, sec, "K_Mid2"); ini.WriteString(sec, "K_Tail", "300"); - CINIOrderTracker::RecordKey(&ini, sec, "K_Tail"); ini.WriteString(sec, "K_Mid1", "100"); - CINIOrderTracker::RecordKey(&ini, sec, "K_Mid1"); expected = { "K_Mid3", "K_Head", "K_Mid2", "K_Tail", "K_Mid1" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); @@ -507,7 +479,6 @@ K_Tail=5 for (const auto& k : expected) { EXPECT_TRUE(ini.DeleteKey(sec, k.c_str())); - CINIOrderTracker::RemoveKey(&ini, sec, k.c_str()); } EXPECT_EQ(ini.GetKeyCount(sec), 0); EXPECT_TRUE(CINIOrderTracker::GetKeyNames(&ini, sec).empty()); @@ -515,8 +486,6 @@ K_Tail=5 // Re-add in a new order ini.WriteString(sec, "Reborn_A", "A"); ini.WriteString(sec, "Reborn_B", "B"); - CINIOrderTracker::RecordKey(&ini, sec, "Reborn_A"); - CINIOrderTracker::RecordKey(&ini, sec, "Reborn_B"); expected = { "Reborn_A", "Reborn_B" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec)), expected); @@ -550,15 +519,12 @@ val=4 // --- Scenario A: Delete HEAD section ("Sec_Head"), verify, then re-add --- EXPECT_TRUE(ini.DeleteSection("Sec_Head")); - CINIOrderTracker::RemoveSection(&ini, "Sec_Head"); EXPECT_FALSE(ini.SectionExists("Sec_Head")); expected = { "Sec_Mid1", "Sec_Mid2", "Sec_Mid3", "Sec_Tail" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); // Re-add "Sec_Head" -> must move to tail ini.WriteString("Sec_Head", "new_val", "100"); - CINIOrderTracker::RecordSection(&ini, "Sec_Head"); - CINIOrderTracker::RecordKey(&ini, "Sec_Head", "new_val"); EXPECT_TRUE(ini.SectionExists("Sec_Head")); EXPECT_STREQ(ini.GetString("Sec_Head", "new_val"), "100"); expected = { "Sec_Mid1", "Sec_Mid2", "Sec_Mid3", "Sec_Tail", "Sec_Head" }; @@ -566,29 +532,23 @@ val=4 // --- Scenario B: Delete MIDDLE section ("Sec_Mid2"), verify, then re-add --- EXPECT_TRUE(ini.DeleteSection("Sec_Mid2")); - CINIOrderTracker::RemoveSection(&ini, "Sec_Mid2"); EXPECT_FALSE(ini.SectionExists("Sec_Mid2")); expected = { "Sec_Mid1", "Sec_Mid3", "Sec_Tail", "Sec_Head" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); // Re-add "Sec_Mid2" -> must move to tail ini.WriteString("Sec_Mid2", "mid_val", "200"); - CINIOrderTracker::RecordSection(&ini, "Sec_Mid2"); - CINIOrderTracker::RecordKey(&ini, "Sec_Mid2", "mid_val"); expected = { "Sec_Mid1", "Sec_Mid3", "Sec_Tail", "Sec_Head", "Sec_Mid2" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); // --- Scenario C: Delete TAIL section (currently "Sec_Mid2"), verify, then re-add --- EXPECT_TRUE(ini.DeleteSection("Sec_Mid2")); - CINIOrderTracker::RemoveSection(&ini, "Sec_Mid2"); EXPECT_FALSE(ini.SectionExists("Sec_Mid2")); expected = { "Sec_Mid1", "Sec_Mid3", "Sec_Tail", "Sec_Head" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); // Re-add "Sec_Mid2" again (multi-cycle on the same section!) ini.WriteString("Sec_Mid2", "mid_val_v3", "300"); - CINIOrderTracker::RecordSection(&ini, "Sec_Mid2"); - CINIOrderTracker::RecordKey(&ini, "Sec_Mid2", "mid_val_v3"); expected = { "Sec_Mid1", "Sec_Mid3", "Sec_Tail", "Sec_Head", "Sec_Mid2" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); @@ -596,13 +556,10 @@ val=4 // Current sections: ["Sec_Mid1" (Head), "Sec_Mid3" (Mid), "Sec_Tail" (Mid), "Sec_Head" (Mid), "Sec_Mid2" (Tail)] // Delete Head ("Sec_Mid1") ini.DeleteSection("Sec_Mid1"); - CINIOrderTracker::RemoveSection(&ini, "Sec_Mid1"); // Delete Mid ("Sec_Tail") ini.DeleteSection("Sec_Tail"); - CINIOrderTracker::RemoveSection(&ini, "Sec_Tail"); // Delete Tail ("Sec_Mid2") ini.DeleteSection("Sec_Mid2"); - CINIOrderTracker::RemoveSection(&ini, "Sec_Mid2"); // Remaining should be: ["Sec_Mid3", "Sec_Head"] expected = { "Sec_Mid3", "Sec_Head" }; @@ -610,11 +567,8 @@ val=4 // Re-add in reverse order: Sec_Mid2 (former tail), Sec_Tail (former mid), Sec_Mid1 (former head) ini.WriteString("Sec_Mid2", "v", "1"); - CINIOrderTracker::RecordSection(&ini, "Sec_Mid2"); ini.WriteString("Sec_Tail", "v", "2"); - CINIOrderTracker::RecordSection(&ini, "Sec_Tail"); ini.WriteString("Sec_Mid1", "v", "3"); - CINIOrderTracker::RecordSection(&ini, "Sec_Mid1"); expected = { "Sec_Mid3", "Sec_Head", "Sec_Mid2", "Sec_Tail", "Sec_Mid1" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); @@ -623,15 +577,12 @@ val=4 for (const auto& secName : expected) { EXPECT_TRUE(ini.DeleteSection(secName.c_str())); - CINIOrderTracker::RemoveSection(&ini, secName.c_str()); } EXPECT_TRUE(CINIOrderTracker::GetSectionNames(&ini).empty()); // Re-populate in reversed order ini.WriteString("Z_Sec", "k", "1"); - CINIOrderTracker::RecordSection(&ini, "Z_Sec"); ini.WriteString("A_Sec", "k", "2"); - CINIOrderTracker::RecordSection(&ini, "A_Sec"); expected = { "Z_Sec", "A_Sec" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expected); @@ -663,9 +614,7 @@ Key_T=val_T // Step 1: In Section_1 (Head section), delete Head key Key_H and re-add it ini.DeleteKey("Section_1", "Key_H"); - CINIOrderTracker::RemoveKey(&ini, "Section_1", "Key_H"); ini.WriteString("Section_1", "Key_H", "val_H_reborn"); - CINIOrderTracker::RecordKey(&ini, "Section_1", "Key_H"); std::vector expectedKeysSec1 = { "Key_M", "Key_T", "Key_H" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Section_1")), expectedKeysSec1); @@ -673,25 +622,20 @@ Key_T=val_T // Step 2: Delete Section_1 entirely (Head section deleted) ini.DeleteSection("Section_1"); - CINIOrderTracker::RemoveSection(&ini, "Section_1"); std::vector expectedSections = { "Section_2", "Section_3" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); // Step 3: In Section_2 (now Head section), delete Tail key Key_T, then delete Mid key Key_M ini.DeleteKey("Section_2", "Key_T"); - CINIOrderTracker::RemoveKey(&ini, "Section_2", "Key_T"); ini.DeleteKey("Section_2", "Key_M"); - CINIOrderTracker::RemoveKey(&ini, "Section_2", "Key_M"); std::vector expectedKeysSec2 = { "Key_H" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Section_2")), expectedKeysSec2); // Re-add Key_M then Key_T in Section_2 ini.WriteString("Section_2", "Key_M", "val_M_new"); - CINIOrderTracker::RecordKey(&ini, "Section_2", "Key_M"); ini.WriteString("Section_2", "Key_T", "val_T_new"); - CINIOrderTracker::RecordKey(&ini, "Section_2", "Key_T"); expectedKeysSec2 = { "Key_H", "Key_M", "Key_T" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Section_2")), expectedKeysSec2); @@ -699,9 +643,6 @@ Key_T=val_T // Step 4: Re-add Section_1 (must now become the TAIL section) ini.WriteString("Section_1", "Alpha", "1"); ini.WriteString("Section_1", "Beta", "2"); - CINIOrderTracker::RecordSection(&ini, "Section_1"); - CINIOrderTracker::RecordKey(&ini, "Section_1", "Alpha"); - CINIOrderTracker::RecordKey(&ini, "Section_1", "Beta"); expectedSections = { "Section_2", "Section_3", "Section_1" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); @@ -711,15 +652,12 @@ Key_T=val_T // Step 5: Delete Section_3 (Middle section deleted) ini.DeleteSection("Section_3"); - CINIOrderTracker::RemoveSection(&ini, "Section_3"); expectedSections = { "Section_2", "Section_1" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); // Step 6: Re-add Section_3 (becomes TAIL section) ini.WriteString("Section_3", "Gamma", "3"); - CINIOrderTracker::RecordSection(&ini, "Section_3"); - CINIOrderTracker::RecordKey(&ini, "Section_3", "Gamma"); expectedSections = { "Section_2", "Section_1", "Section_3" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetSectionNames(&ini)), expectedSections); @@ -768,10 +706,7 @@ TEST(CINIOrderTrackerTest, AdaptiveSortingNumericKeysPreserveNaturalOrderOnDelet // Without adaptive sorting, "0" would end up at the tail: {"1", "2", "3", "0"} // With adaptive sorting, "0" must return to the front: {"0", "1", "2", "3"} ini.DeleteKey("Units", "0"); - CINIOrderTracker::RemoveKey(&ini, "Units", "0"); - ini.WriteString("Units", "0", "Unit_Zero_Readded"); - CINIOrderTracker::RecordKey(&ini, "Units", "0"); EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Units", nullptr, true)), expectedInitial); auto entries0 = CINIOrderTracker::GetEntries(&ini, "Units", nullptr, true); @@ -781,10 +716,7 @@ TEST(CINIOrderTrackerTest, AdaptiveSortingNumericKeysPreserveNaturalOrderOnDelet // Case 2: Middle deletion and re-add of "2" ini.DeleteKey("Units", "2"); - CINIOrderTracker::RemoveKey(&ini, "Units", "2"); - ini.WriteString("Units", "2", "Unit_Two_Readded"); - CINIOrderTracker::RecordKey(&ini, "Units", "2"); EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Units", nullptr, true)), expectedInitial); auto entries2 = CINIOrderTracker::GetEntries(&ini, "Units", nullptr, true); @@ -793,23 +725,16 @@ TEST(CINIOrderTrackerTest, AdaptiveSortingNumericKeysPreserveNaturalOrderOnDelet // Case 3: Tail deletion and re-add of "3" ini.DeleteKey("Units", "3"); - CINIOrderTracker::RemoveKey(&ini, "Units", "3"); - ini.WriteString("Units", "3", "Unit_Three_Readded"); - CINIOrderTracker::RecordKey(&ini, "Units", "3"); EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Units", nullptr, true)), expectedInitial); // Case 4: Delete multiple keys ("1" and "0"), re-add in reverse order ("1" then "0") ini.DeleteKey("Units", "1"); - CINIOrderTracker::RemoveKey(&ini, "Units", "1"); ini.DeleteKey("Units", "0"); - CINIOrderTracker::RemoveKey(&ini, "Units", "0"); ini.WriteString("Units", "1", "Unit_One_V2"); - CINIOrderTracker::RecordKey(&ini, "Units", "1"); ini.WriteString("Units", "0", "Unit_Zero_V2"); - CINIOrderTracker::RecordKey(&ini, "Units", "0"); EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, "Units", nullptr, true)), expectedInitial); auto entriesMulti = CINIOrderTracker::GetEntries(&ini, "Units", nullptr, true); @@ -867,10 +792,7 @@ Group=-1 const char* sec = "01000001"; // Delete action "0", then re-add "0" -> should stay right after headers and before "1" ini.DeleteKey(sec, "0"); - CINIOrderTracker::RemoveKey(&ini, sec, "0"); - ini.WriteString(sec, "0", "1,E1_New"); - CINIOrderTracker::RecordKey(&ini, sec, "0"); std::vector expectedOrder = { "Name", "Group", "0", "1", "2" }; EXPECT_EQ(ToStringVector(CINIOrderTracker::GetKeyNames(&ini, sec, nullptr, true)), expectedOrder); @@ -918,3 +840,49 @@ TEST(CINIOrderTrackerTest, AdaptiveSortingUntrackedKeyWithoutManualRecordKeyAuto CINIOrderTracker::Clear(&ini); } + +TEST(CINIOrderTrackerTest, DynamicFunctionPointerSwitchingAdaptiveSortingToggle) +{ + CINIExt ini; + CINIOrderTracker::Clear(&ini); + + // 1. Disable AdaptiveSorting -> function pointer switched to NoOp + CINIExt::SetAdaptiveSorting(false); + EXPECT_FALSE(CINIExt::GetAdaptiveSorting()); + + ini.WriteString("TestSec", "Key_NoOp", "Value1"); + // Since tracker was bypassed via NoOp function pointer, GetKeyOrder should be empty / null + const auto* kOrderDisabled = CINIOrderTracker::GetKeyOrder(&ini, "TestSec"); + EXPECT_TRUE(kOrderDisabled == nullptr || kOrderDisabled->empty()); + + // 2. Enable AdaptiveSorting -> function pointer switched to real tracker + CINIExt::SetAdaptiveSorting(true); + EXPECT_TRUE(CINIExt::GetAdaptiveSorting()); + + ini.WriteString("TestSec", "Key_Tracked", "Value2"); + const auto* kOrderEnabled = CINIOrderTracker::GetKeyOrder(&ini, "TestSec"); + ASSERT_NE(kOrderEnabled, nullptr); + EXPECT_EQ(kOrderEnabled->size(), 1u); + EXPECT_STREQ(kOrderEnabled->GetOrder().front().GetString(), "Key_Tracked"); + + // 3. Test DeleteKey with NoOp vs Real + CINIExt::SetAdaptiveSorting(false); + ini.DeleteKey("TestSec", "Key_Tracked"); + // With NoOp, RemoveKey was bypassed, so tracker still retains the key + EXPECT_EQ(kOrderEnabled->size(), 1u); + + // Switch back to enabled + CINIExt::SetAdaptiveSorting(true); + // Add again and delete with real tracker active + ini.WriteString("TestSec", "Key_Tracked", "Value2_New"); + EXPECT_EQ(kOrderEnabled->size(), 1u); + ini.DeleteKey("TestSec", "Key_Tracked"); + // With real tracker, RemoveKey removed it! + EXPECT_TRUE(kOrderEnabled->empty()); + + CINIOrderTracker::Clear(&ini); + // Restore default state + CINIExt::SetAdaptiveSorting(true); + CINIExt::SetKeepSectionSorting(true); +} + diff --git a/FA2sp/FA2sp.cpp b/FA2sp/FA2sp.cpp index a9d91fd5..b2ce28e1 100644 --- a/FA2sp/FA2sp.cpp +++ b/FA2sp/FA2sp.cpp @@ -21,6 +21,7 @@ #include #include "Helpers/Translations.h" #include "Miscs/DialogStyle.h" +#include "Miscs/Hooks.INI.h" #include "Helpers/TheaterHelpers.h" #define ENABLE_VISUAL_STYLE @@ -462,6 +463,8 @@ void FA2sp::ExtConfigsInitialize() ExtConfigs::SaveMap_KeepComments = CINI::FAData->GetBool("ExtConfigs", "SaveMap.KeepComments"); ExtConfigs::SaveMap_PreserveINISorting = CINI::FAData->GetBool("ExtConfigs", "SaveMap.PreserveINISorting"); ExtConfigs::SaveMap_AdaptiveSorting = CINI::FAData->GetBool("ExtConfigs", "SaveMap.AdaptiveSorting"); + CINIExt::SetKeepSectionSorting(ExtConfigs::SaveMap_PreserveINISorting); + CINIExt::SetAdaptiveSorting(ExtConfigs::SaveMap_AdaptiveSorting); // ExtConfigs::SaveMap_MultiPlayOnlySaveYRM = CINI::FAData->GetBool("ExtConfigs", "SaveMap.OnlySaveYRM.MultiPlay"); // ExtConfigs::SaveMap_SinglePlayOnlySaveMAP = CINI::FAData->GetBool("ExtConfigs", "SaveMap.OnlySaveMAP.SinglePlay"); ExtConfigs::SaveMap_DefaultPreviewOptionMP = CINI::FAData->GetInteger("ExtConfigs", "SaveMap.DefaultPreviewOptionMP", 0); diff --git a/FA2sp/Miscs/Hooks.INI.cpp b/FA2sp/Miscs/Hooks.INI.cpp index 0270b0a9..a23616e0 100644 --- a/FA2sp/Miscs/Hooks.INI.cpp +++ b/FA2sp/Miscs/Hooks.INI.cpp @@ -20,6 +20,144 @@ std::unordered_map CINIManager::propertyMap; bool INIIncludes::SkipBracketFix = false; bool CINIExt::IsLoadingFAini = false; +static void NoOpRecordKey(CINI*, const ppmfc::CString&, const ppmfc::CString&) noexcept {} +static void NoOpRemoveKey(CINI*, const ppmfc::CString&, const ppmfc::CString&) noexcept {} +static void NoOpRecordSection(CINI*, const ppmfc::CString&) noexcept {} +static void NoOpRemoveSection(CINI*, const ppmfc::CString&) noexcept {} + +CINIExt::FnRecordKey_t CINIExt::FnRecordKey = &CINIOrderTracker::RecordKey; +CINIExt::FnRemoveKey_t CINIExt::FnRemoveKey = &CINIOrderTracker::RemoveKey; +CINIExt::FnRecordSection_t CINIExt::FnRecordSection = &CINIOrderTracker::RecordSection; +CINIExt::FnRemoveSection_t CINIExt::FnRemoveSection = &CINIOrderTracker::RemoveSection; + +static bool bAdaptiveSortingEnabled = true; +static bool bKeepSectionSortingEnabled = true; + +void CINIExt::SetAdaptiveSorting(bool enable) +{ + bAdaptiveSortingEnabled = enable; + if (enable) + { + FnRecordKey = &CINIOrderTracker::RecordKey; + FnRemoveKey = &CINIOrderTracker::RemoveKey; + } + else + { + FnRecordKey = &NoOpRecordKey; + FnRemoveKey = &NoOpRemoveKey; + } +} + +void CINIExt::SetKeepSectionSorting(bool enable) +{ + bKeepSectionSortingEnabled = enable; + if (enable) + { + FnRecordSection = &CINIOrderTracker::RecordSection; + FnRemoveSection = &CINIOrderTracker::RemoveSection; + } + else + { + FnRecordSection = &NoOpRecordSection; + FnRemoveSection = &NoOpRemoveSection; + } +} + +bool CINIExt::GetAdaptiveSorting() +{ + return bAdaptiveSortingEnabled; +} + +bool CINIExt::GetKeepSectionSorting() +{ + return bKeepSectionSortingEnabled; +} + +bool CINIExt::WriteString(ppmfc::CString pSection, ppmfc::CString pKey, ppmfc::CString pValue) +{ + if (pSection.IsEmpty() || pKey.IsEmpty()) + return false; + + FnRecordSection(this, pSection); + FnRecordKey(this, pSection, pKey); + return CINI::WriteString(pSection, pKey, pValue); +} + +bool CINIExt::WriteString(INISection* pSection, ppmfc::CString pKey, ppmfc::CString pValue) +{ + if (!pSection || pKey.IsEmpty()) + return false; + + if (FnRecordKey != &NoOpRecordKey) + { + for (const auto& pair : Dict) + { + if (&pair.second == pSection) + { + FnRecordKey(this, pair.first, pKey); + break; + } + } + } + return CINI::WriteString(pSection, pKey, pValue); +} + +bool CINIExt::DeleteKey(ppmfc::CString pSection, ppmfc::CString pKey) +{ + bool bDeleted = CINI::DeleteKey(pSection, pKey); + if (bDeleted) + { + FnRemoveKey(this, pSection, pKey); + } + return bDeleted; +} + +bool CINIExt::DeleteKey(INISection* pSection, ppmfc::CString pKey) +{ + if (!pSection || pKey.IsEmpty()) + return false; + + if (FnRemoveKey != &NoOpRemoveKey) + { + for (const auto& pair : Dict) + { + if (&pair.second == pSection) + { + FnRemoveKey(this, pair.first, pKey); + break; + } + } + } + return CINI::DeleteKey(pSection, pKey); +} + +bool CINIExt::DeleteSection(ppmfc::CString pSection) +{ + bool bDeleted = CINI::DeleteSection(pSection); + if (bDeleted) + { + FnRemoveSection(this, pSection); + } + return bDeleted; +} + +INISection* CINIExt::AddSection(ppmfc::CString pSectionName) +{ + auto* pSection = CINI::AddSection(pSectionName); + if (pSection) + { + FnRecordSection(this, pSectionName); + } + return pSection; +} + +INISection* CINIExt::AddOrGetSection(ppmfc::CString pSectionName) +{ + auto* pSection = CINI::AddOrGetSection(pSectionName); + FnRecordSection(this, pSectionName); + return pSection; +} + using INIPair = std::pair; void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, bool bClear, bool bTrimSpace, bool bAllowInclude, std::vector* parentIncludeInis) @@ -42,7 +180,7 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, reinterpret_cast(&pSection->GetEntities())->insert(&ret, &ins); if (!ret.second) new(&ret.first->second) ppmfc::CString(value); - CINIOrderTracker::RecordKey(this, sectionName, key); + FnRecordKey(this, sectionName, key); }; auto encoding = STDHelpers::GetFileEncoding(pFile, fileSize); @@ -153,7 +291,7 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, pCurrentSection = AddOrGetSection(CurrentSectionName); } - CINIOrderTracker::RecordSection(this, CurrentSectionName); + FnRecordSection(this, CurrentSectionName); if (CMapDataExt::IsLoadingMapFile && ExtConfigs::SaveMap_PreserveINISorting) { auto it = std::find(CMapDataExt::MapIniSectionSorting.begin(), CMapDataExt::MapIniSectionSorting.end(), CurrentSectionName); @@ -447,7 +585,7 @@ void CINIExt::InheritSectionRecursive(const ppmfc::CString& sectionName, reinterpret_cast(&pSection->GetEntities())->insert(&ret, &ins); if (!ret.second) new(&ret.first->second) ppmfc::CString(value); - CINIOrderTracker::RecordKey(this, sectionName, key); + FnRecordKey(this, sectionName, key); }; if (visited.count(sectionName)) { diff --git a/FA2sp/Miscs/Hooks.INI.h b/FA2sp/Miscs/Hooks.INI.h index c4df0237..4c52a556 100644 --- a/FA2sp/Miscs/Hooks.INI.h +++ b/FA2sp/Miscs/Hooks.INI.h @@ -18,11 +18,36 @@ using std::vector; class NOVTABLE CINIExt : public CINI { public: + using FnRecordKey_t = void(*)(CINI*, const ppmfc::CString&, const ppmfc::CString&); + using FnRemoveKey_t = void(*)(CINI*, const ppmfc::CString&, const ppmfc::CString&); + using FnRecordSection_t = void(*)(CINI*, const ppmfc::CString&); + using FnRemoveSection_t = void(*)(CINI*, const ppmfc::CString&); + + static FnRecordKey_t FnRecordKey; + static FnRemoveKey_t FnRemoveKey; + static FnRecordSection_t FnRecordSection; + static FnRemoveSection_t FnRemoveSection; + + static void SetAdaptiveSorting(bool enable); + static void SetKeepSectionSorting(bool enable); + static bool GetAdaptiveSorting(); + static bool GetKeepSectionSorting(); + + bool WriteString(ppmfc::CString pSection, ppmfc::CString pKey, ppmfc::CString pValue); + bool WriteString(INISection* pSection, ppmfc::CString pKey, ppmfc::CString pValue); + bool DeleteKey(ppmfc::CString pSection, ppmfc::CString pKey); + bool DeleteKey(INISection* pSection, ppmfc::CString pKey); + bool DeleteSection(ppmfc::CString pSection); + INISection* AddSection(ppmfc::CString pSectionName); + INISection* AddOrGetSection(ppmfc::CString pSectionName); + void LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, bool bClear, bool bTrimSpace, bool bAllowInclude, std::vector>* parentIncludeInis = nullptr); void LoadFASetting(const FString& path); void InheritSectionRecursive(const ppmfc::CString& sectionName, std::set& visited); static bool IsLoadingFAini; + + static constexpr reference const CurrentDocument{}; }; struct CINIInfo From 7ca150c5ad13dad42149866a1fa943dd2699e43a Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Thu, 8 Oct 2026 00:13:19 -0400 Subject: [PATCH 20/24] feat(ini): encapsulate CINI::CurrentDocument with CINIExt proxy instance across all FA2sp components --- FA2sp/Ext/CCreateMap3B/Hooks.cpp | 9 +- .../Body.ObjectBrowserControl.cpp | 76 +-- .../CFinalSunDlg/Body.PlaceConnectedTiles.cpp | 5 +- FA2sp/Ext/CFinalSunDlg/Body.cpp | 5 +- .../Hooks.ObjectBrowserControl.cpp | 3 +- FA2sp/Ext/CIsoView/Body.DrawObjects.cpp | 12 +- FA2sp/Ext/CIsoView/Body.OnMouseMove.cpp | 27 +- FA2sp/Ext/CIsoView/Body.cpp | 5 +- FA2sp/Ext/CIsoView/Hooks.cpp | 43 +- FA2sp/Ext/CLighting/Body.cpp | 5 +- FA2sp/Ext/CLighting/Hooks.cpp | 21 +- FA2sp/Ext/CLoading/Hooks.LoadObjects.cpp | 4 +- FA2sp/Ext/CMapData/Body.ResizeMap.cpp | 17 +- FA2sp/Ext/CMapData/Body.cpp | 62 +-- FA2sp/Ext/CMapData/Hooks.cpp | 31 +- FA2sp/Ext/CMapValidator/Body.cpp | 6 +- FA2sp/Ext/CPropertyAircraft/Hooks.cpp | 3 +- FA2sp/Ext/CRandomTree/Hooks.cpp | 3 +- FA2sp/Ext/CSingleplayerSettings/Body.cpp | 7 +- FA2sp/Ext/CSingleplayerSettings/Hooks.cpp | 27 +- .../TabPages/ScriptSort.cpp | 9 +- .../CTileSetBrowserFrame/TabPages/TagSort.cpp | 47 +- .../TabPages/TaskForceSort.cpp | 9 +- .../TabPages/TeamSort.cpp | 9 +- .../TabPages/TriggerSort.cpp | 11 +- .../TabPages/WaypointSort.cpp | 45 +- .../CBatchTrigger/CBatchTrigger.cpp | 8 +- .../ExtraWindow/CBatchTrigger/CBatchTrigger.h | 3 +- FA2sp/ExtraWindow/CLuaConsole/CLuaConsole.cpp | 34 +- FA2sp/ExtraWindow/CLuaConsole/CMcpServer.cpp | 4 +- .../ExtraWindow/CLuaConsole/LuaFunctions.cpp | 436 +++++++++--------- .../CMeasurementToolbox.cpp | 4 +- .../CMiscSettings/CMiscSettings.cpp | 2 +- .../CNewAITrigger/CNewAITrigger.cpp | 2 +- .../ExtraWindow/CNewAITrigger/CNewAITrigger.h | 16 +- FA2sp/ExtraWindow/CNewHouse/CNewHouse.cpp | 2 +- FA2sp/ExtraWindow/CNewHouse/CNewHouse.h | 2 +- .../CNewINIEditor/CNewINIEditor.cpp | 2 +- .../ExtraWindow/CNewINIEditor/CNewINIEditor.h | 4 +- .../CNewLocalVariables/CNewLocalVariables.cpp | 2 +- .../CNewLocalVariables/CNewLocalVariables.h | 2 +- .../CNewPropertyAircraft.cpp | 3 +- .../CNewPropertyBuilding.cpp | 3 +- .../CNewPropertyInfantry.cpp | 3 +- .../CNewPropertyUnit/CNewPropertyUnit.cpp | 5 +- FA2sp/ExtraWindow/CNewScript/CNewScript.cpp | 19 +- FA2sp/ExtraWindow/CNewScript/CNewScript.h | 2 +- FA2sp/ExtraWindow/CNewTag/CNewTag.cpp | 5 +- FA2sp/ExtraWindow/CNewTag/CNewTag.h | 2 +- .../CNewTaskforce/CNewTaskforce.cpp | 9 +- .../ExtraWindow/CNewTaskforce/CNewTaskforce.h | 2 +- .../CNewTeamTypes/CNewTeamTypes.cpp | 15 +- .../ExtraWindow/CNewTeamTypes/CNewTeamTypes.h | 2 +- FA2sp/ExtraWindow/CNewTrigger/CNewTrigger.cpp | 7 +- FA2sp/ExtraWindow/CNewTrigger/CNewTrigger.h | 16 +- .../CObjectSearch/CObjectSearch.cpp | 4 +- .../CSearhReference/CSearhReference.cpp | 12 +- .../CSearhReference/CSearhReference.h | 2 +- .../CSelectAutoShore/CSelectAutoShore.cpp | 2 +- .../CTechnoDialog/CTechnoDialog.cpp | 4 +- .../CTerrainGenerator/CTerrainGenerator.cpp | 2 +- .../CTerrainGenerator/CTerrainGenerator.h | 2 +- .../CTriggerAnnotation/CTriggerAnnotation.cpp | 6 +- FA2sp/ExtraWindow/Common.cpp | 32 +- FA2sp/ExtraWindow/Common.h | 3 +- FA2sp/FA2sp.cpp | 4 +- FA2sp/Helpers/ControlHelpers.cpp | 35 +- FA2sp/Helpers/TheaterHelpers.h | 3 +- FA2sp/Miscs/CopyPaste.cpp | 16 +- FA2sp/Miscs/Exception.cpp | 3 +- FA2sp/Miscs/Hooks.INI.cpp | 23 +- FA2sp/Miscs/Hooks.INI.h | 6 + FA2sp/Miscs/Hooks.UserScripts.cpp | 10 +- FA2sp/Miscs/Palettes.cpp | 39 +- FA2sp/Miscs/SaveMap.cpp | 10 +- 75 files changed, 699 insertions(+), 636 deletions(-) diff --git a/FA2sp/Ext/CCreateMap3B/Hooks.cpp b/FA2sp/Ext/CCreateMap3B/Hooks.cpp index a43d0252..3f4420b7 100644 --- a/FA2sp/Ext/CCreateMap3B/Hooks.cpp +++ b/FA2sp/Ext/CCreateMap3B/Hooks.cpp @@ -1,4 +1,5 @@ #include +#include "../../Miscs/Hooks.INI.h" #include #include @@ -24,10 +25,10 @@ DEFINE_HOOK(42CCC8, CCreateMap3B_NoImportTrees, 5) DEFINE_HOOK(42CCE2, CCreateMap3B_NoImportUnits, 5) { - CINI::CurrentDocument->DeleteSection("Structures"); - CINI::CurrentDocument->DeleteSection("Units"); - CINI::CurrentDocument->DeleteSection("Aircraft"); - CINI::CurrentDocument->DeleteSection("Infantry"); + CINIExt::CurrentDocument->DeleteSection("Structures"); + CINIExt::CurrentDocument->DeleteSection("Units"); + CINIExt::CurrentDocument->DeleteSection("Aircraft"); + CINIExt::CurrentDocument->DeleteSection("Infantry"); CMapDataExt::UpdateFieldStructureData_RedrawMinimap(); CMapDataExt::UpdateFieldUnitData_RedrawMinimap(); CMapDataExt::UpdateFieldAircraftData_RedrawMinimap(); diff --git a/FA2sp/Ext/CFinalSunDlg/Body.ObjectBrowserControl.cpp b/FA2sp/Ext/CFinalSunDlg/Body.ObjectBrowserControl.cpp index 1b1ec701..ecec476b 100644 --- a/FA2sp/Ext/CFinalSunDlg/Body.ObjectBrowserControl.cpp +++ b/FA2sp/Ext/CFinalSunDlg/Body.ObjectBrowserControl.cpp @@ -197,7 +197,7 @@ HTREEITEM CViewObjectsExt::InsertString(const char* pString, DWORD dwItemData, auto& subTile = tile.TileBlockDatas[0]; FString fileName; - fileName.Format("%s-tile-%d-%d.bmp", CINI::CurrentDocument->GetString("Map", "Theater"), + fileName.Format("%s-tile-%d-%d.bmp", CINIExt::CurrentDocument->GetString("Map", "Theater"), InsertingTileIndex, ExtConfigs::TreeViewCameo_Size); std::string path = CFinalSunAppExt::ExePathExt(); @@ -246,7 +246,7 @@ HTREEITEM CViewObjectsExt::InsertString(const char* pString, DWORD dwItemData, case CLoadingExt::GameObjectType::Terrain: case CLoadingExt::GameObjectType::Smudge: imageName = CLoadingExt::GetImageName(InsertingObjectID, 0); - fileID = FString(CINI::CurrentDocument->GetString("Map", "Theater")) + "-" + + fileID = FString(CINIExt::CurrentDocument->GetString("Map", "Theater")) + "-" + CLoadingExt::GetExtension()->GetTerrainOrSmudgeFileID(InsertingObjectID); break; case CLoadingExt::GameObjectType::Vehicle: @@ -293,7 +293,7 @@ HTREEITEM CViewObjectsExt::InsertString(const char* pString, DWORD dwItemData, fileName.Format("%s-%d.bmp", fileID, ExtConfigs::TreeViewCameo_Size); if (InsertingOverlay > -1) { - fileName.Format("%s-overlay-%d-%d-%d.bmp", CINI::CurrentDocument->GetString("Map", "Theater"), + fileName.Format("%s-overlay-%d-%d-%d.bmp", CINIExt::CurrentDocument->GetString("Map", "Theater"), InsertingOverlay, InsertingOverlayData, ExtConfigs::TreeViewCameo_Size); } path += "\\"; @@ -922,7 +922,7 @@ void CViewObjectsExt::Redraw_Initialize() Owners.clear(); auto& fadata = CINI::FAData(); - auto& doc = CINI::CurrentDocument(); + auto& doc = CINIExt::CurrentDocument(); if (ExtConfigs::ObjectBrowser_GuessMode == 1) { auto loadOwner = []() @@ -1125,7 +1125,7 @@ void CViewObjectsExt::Redraw_Ground() if (hGround == NULL) return; InsertedTileIndices.clear(); - auto& doc = CINI::CurrentDocument(); + auto& doc = CINIExt::CurrentDocument(); auto theater = doc.GetString("Map", "Theater"); if (theater == "NEWURBAN") theater = "UBN"; @@ -1240,7 +1240,7 @@ void CViewObjectsExt::Redraw_Ground() auto allowed = STDHelpers::SplitString(CINI::FAData().GetString(pKey.second, "AllowedTheater", "")); if (allowed.size() > 0) for (auto& a : allowed) - if (a == CINI::CurrentDocument().GetString("Map", "Theater")) + if (a == CINIExt::CurrentDocument().GetString("Map", "Theater")) add = true; if (add) { @@ -1363,7 +1363,7 @@ void CViewObjectsExt::Redraw_Owner() } else { - if (auto pSection = CINI::CurrentDocument->GetSection("Houses")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Houses")) { auto& section = pSection->GetEntities(); size_t i = 0; @@ -1480,7 +1480,7 @@ void CViewObjectsExt::Redraw_Owner() } else { - if (auto pSection = CINI::CurrentDocument->GetSection("Houses")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Houses")) { auto& section = pSection->GetEntities(); size_t i = 0; @@ -1782,7 +1782,7 @@ void CViewObjectsExt::Redraw_Infantry() auto banned = STDHelpers::SplitString(CINI::FAData().GetString(pKey.second, "BannedTheater", "")); if (banned.size() > 0) for (auto& ban : banned) - if (ban == CINI::CurrentDocument().GetString("Map", "Theater")) + if (ban == CINIExt::CurrentDocument().GetString("Map", "Theater")) add = false; if (add) { @@ -1971,7 +1971,7 @@ void CViewObjectsExt::Redraw_Vehicle() auto banned = STDHelpers::SplitString(CINI::FAData().GetString(pKey.second, "BannedTheater", "")); if (banned.size() > 0) for (auto& ban : banned) - if (ban == CINI::CurrentDocument().GetString("Map", "Theater")) + if (ban == CINIExt::CurrentDocument().GetString("Map", "Theater")) add = false; if (add) { @@ -2159,7 +2159,7 @@ void CViewObjectsExt::Redraw_Aircraft() auto banned = STDHelpers::SplitString(CINI::FAData().GetString(pKey.second, "BannedTheater", "")); if (banned.size() > 0) for (auto& ban : banned) - if (ban == CINI::CurrentDocument().GetString("Map", "Theater")) + if (ban == CINIExt::CurrentDocument().GetString("Map", "Theater")) add = false; if (add) { @@ -2217,7 +2217,7 @@ void CViewObjectsExt::Redraw_Building() auto& fadata = CINI::FAData(); auto& art = CINI::Art(); - auto& doc = CINI::CurrentDocument(); + auto& doc = CINIExt::CurrentDocument(); int i = 0; if (auto sides = fadata.GetSection(ExtraWindow::GetTranslatedSectionName("Sides"))) @@ -2385,7 +2385,7 @@ void CViewObjectsExt::Redraw_Building() auto banned = STDHelpers::SplitString(CINI::FAData().GetString(pKey.second, "BannedTheater", "")); if (banned.size() > 0) for (auto& ban : banned) - if (ban == CINI::CurrentDocument().GetString("Map", "Theater")) + if (ban == CINIExt::CurrentDocument().GetString("Map", "Theater")) add = false; if (add) { @@ -2524,7 +2524,7 @@ void CViewObjectsExt::Redraw_Terrain() auto banned = STDHelpers::SplitString(CINI::FAData().GetString(pKey.second, "BannedTheater", "")); if (banned.size() > 0) for (auto& ban : banned) - if (ban == CINI::CurrentDocument().GetString("Map", "Theater")) + if (ban == CINIExt::CurrentDocument().GetString("Map", "Theater")) add = false; if (add) { @@ -2608,7 +2608,7 @@ void CViewObjectsExt::Redraw_Smudge() auto banned = STDHelpers::SplitString(CINI::FAData().GetString(pKey.second, "BannedTheater", "")); if (banned.size() > 0) for (auto& ban : banned) - if (ban == CINI::CurrentDocument().GetString("Map", "Theater")) + if (ban == CINIExt::CurrentDocument().GetString("Map", "Theater")) add = false; if (add) { @@ -2894,7 +2894,7 @@ void CViewObjectsExt::Redraw_Overlay() auto banned = STDHelpers::SplitString(CINI::FAData().GetString(pKey.second, "BannedTheater", "")); if (banned.size() > 0) for (auto& ban : banned) - if (ban == CINI::CurrentDocument().GetString("Map", "Theater")) + if (ban == CINIExt::CurrentDocument().GetString("Map", "Theater")) add = false; if (add) { @@ -3352,9 +3352,9 @@ void CViewObjectsExt::AddAnnotation(int X, int Y) CAnnotationDlg dlg; bool folded = false; - if (CINI::CurrentDocument->KeyExists("Annotations", key)) + if (CINIExt::CurrentDocument->KeyExists("Annotations", key)) { - auto atoms = STDHelpers::SplitString(CINI::CurrentDocument->GetString("Annotations", key), 6); + auto atoms = STDHelpers::SplitString(CINIExt::CurrentDocument->GetString("Annotations", key), 6); dlg.m_Text = atoms[5]; for (int i = 6; i < atoms.size() - 1; i++) { @@ -3388,7 +3388,7 @@ void CViewObjectsExt::AddAnnotation(int X, int Y) STDHelpers::ColorRefRGBToHexString(textColor), STDHelpers::ColorRefRGBToHexString(bgColor), dlg.m_Text); - CINI::CurrentDocument->WriteString("Annotations", key, value); + CINIExt::CurrentDocument->WriteString("Annotations", key, value); auto& cellExt = CMapDataExt::CellDataExts[CMapData::Instance->GetCoordIndex(X, Y)]; cellExt.HasAnnotation = true; @@ -3404,7 +3404,7 @@ void CViewObjectsExt::RemoveAnnotation(int X, int Y) auto& cellExt = CMapDataExt::CellDataExts[CMapData::Instance->GetCoordIndex(X, Y)]; cellExt.HasAnnotation = false; - if (CINI::CurrentDocument->KeyExists("Annotations", key)) + if (CINIExt::CurrentDocument->KeyExists("Annotations", key)) { deleteAnnotation = true; } @@ -3445,11 +3445,11 @@ void CViewObjectsExt::RemoveAnnotation(int X, int Y) if (deleteAnnotation) { - CINI::CurrentDocument->DeleteKey("Annotations", key); + CINIExt::CurrentDocument->DeleteKey("Annotations", key); } if (deleteGeometricAnnotation) { - if (auto pSection = CINI::CurrentDocument->GetSection("GeometricAnnotations")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("GeometricAnnotations")) { std::vector keysToDelete; for (auto& [key, value] : pSection->GetEntities()) @@ -3471,7 +3471,7 @@ void CViewObjectsExt::RemoveAnnotation(int X, int Y) for (const auto& key : keysToDelete) { - CINI::CurrentDocument->DeleteKey("GeometricAnnotations", key); + CINIExt::CurrentDocument->DeleteKey("GeometricAnnotations", key); } } } @@ -3511,16 +3511,16 @@ void CViewObjectsExt::SetWpTagColor(int X, int Y, bool isWp) { if (cell->Waypoint > -1) { - auto id = CINI::CurrentDocument->GetKeyAt("Waypoints", cell->Waypoint); + auto id = CINIExt::CurrentDocument->GetKeyAt("Waypoints", cell->Waypoint); if (!id.IsEmpty()) { CMapDataExt::CustomWaypointColors[id] = color; ppmfc::CString key = "Wp"; key += id; if (color != ExtConfigs::DisplayColor_Waypoint) - CINI::CurrentDocument->WriteString("FA2spColors", key, value); + CINIExt::CurrentDocument->WriteString("FA2spColors", key, value); else - CINI::CurrentDocument->DeleteKey("FA2spColors", key); + CINIExt::CurrentDocument->DeleteKey("FA2spColors", key); ::RedrawWindow(CFinalSunDlg::Instance->MyViewFrame.pIsoView->m_hWnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } } @@ -3529,16 +3529,16 @@ void CViewObjectsExt::SetWpTagColor(int X, int Y, bool isWp) { if (cell->CellTag > -1) { - auto id = CINI::CurrentDocument->GetStringAt("CellTags", cell->CellTag); + auto id = CINIExt::CurrentDocument->GetStringAt("CellTags", cell->CellTag); if (!id.IsEmpty()) { CMapDataExt::CustomCelltagColors[id] = color; ppmfc::CString key = "Tag"; key += id; if (color != ExtConfigs::DisplayColor_Celltag) - CINI::CurrentDocument->WriteString("FA2spColors", key, value); + CINIExt::CurrentDocument->WriteString("FA2spColors", key, value); else - CINI::CurrentDocument->DeleteKey("FA2spColors", key); + CINIExt::CurrentDocument->DeleteKey("FA2spColors", key); ::RedrawWindow(CFinalSunDlg::Instance->MyViewFrame.pIsoView->m_hWnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } } @@ -3553,11 +3553,11 @@ void CViewObjectsExt::RemoveWpTagColor(int X, int Y, bool isWp) { if (cell->Waypoint > -1) { - auto id = CINI::CurrentDocument->GetKeyAt("Waypoints", cell->Waypoint); + auto id = CINIExt::CurrentDocument->GetKeyAt("Waypoints", cell->Waypoint); CMapDataExt::CustomWaypointColors.erase(id); ppmfc::CString key = "Wp"; key += id; - CINI::CurrentDocument->DeleteKey("FA2spColors", key); + CINIExt::CurrentDocument->DeleteKey("FA2spColors", key); ::RedrawWindow(CFinalSunDlg::Instance->MyViewFrame.pIsoView->m_hWnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } } @@ -3565,11 +3565,11 @@ void CViewObjectsExt::RemoveWpTagColor(int X, int Y, bool isWp) { if (cell->CellTag > -1) { - auto id = CINI::CurrentDocument->GetStringAt("CellTags", cell->CellTag); + auto id = CINIExt::CurrentDocument->GetStringAt("CellTags", cell->CellTag); CMapDataExt::CustomCelltagColors.erase(id); ppmfc::CString key = "Tag"; key += id; - CINI::CurrentDocument->DeleteKey("FA2spColors", key); + CINIExt::CurrentDocument->DeleteKey("FA2spColors", key); ::RedrawWindow(CFinalSunDlg::Instance->MyViewFrame.pIsoView->m_hWnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } } @@ -3590,7 +3590,7 @@ void CViewObjectsExt::DeleteTube(int X, int Y) CMapDataExt::MakeObjectRecord(ObjectRecord::RecordType::Tunnel); once = true; } - CINI::CurrentDocument->DeleteKey("Tubes", tube.key); + CINIExt::CurrentDocument->DeleteKey("Tubes", tube.key); break; } } @@ -3602,7 +3602,7 @@ void CViewObjectsExt::DeleteTube(int X, int Y) void CViewObjectsExt::DeleteCelltag(int X, int Y) { auto pIsoView = CIsoViewExt::GetExtension(); - auto pSection = CINI::CurrentDocument->GetSection("CellTags"); + auto pSection = CINIExt::CurrentDocument->GetSection("CellTags"); if (!pSection) return; @@ -3631,7 +3631,7 @@ void CViewObjectsExt::DeleteCelltag(int X, int Y) { for (auto& key : keys) { - CINI::CurrentDocument->DeleteKey(pSection, key); + CINIExt::CurrentDocument->DeleteKey(pSection, key); } CMapData::Instance->UpdateFieldCelltagData(FALSE); ::RedrawWindow(CFinalSunDlg::Instance->MyViewFrame.pIsoView->m_hWnd, 0, 0, RDW_UPDATENOW | RDW_INVALIDATE); @@ -3650,7 +3650,7 @@ void CViewObjectsExt::MoveBaseNodeOrder(int X, int Y) char key[10]; sprintf(key, "%03d", cell->BaseNode.BasenodeID); - auto&& atoms = STDHelpers::SplitString(CINI::CurrentDocument->GetString(cell->BaseNode.House, key), 2); + auto&& atoms = STDHelpers::SplitString(CINIExt::CurrentDocument->GetString(cell->BaseNode.House, key), 2); const auto& ID = atoms[0]; targetIndex = cell->BaseNode.BasenodeID; @@ -3702,7 +3702,7 @@ void CViewObjectsExt::MoveBaseNode(int X, int Y) char key[10]; sprintf(key, "%03d", cell->BaseNode.BasenodeID); - auto&& atoms = STDHelpers::SplitString(CINI::CurrentDocument->GetString(cell->BaseNode.House, key), 2); + auto&& atoms = STDHelpers::SplitString(CINIExt::CurrentDocument->GetString(cell->BaseNode.House, key), 2); const auto& ID = atoms[0]; int bnX = atoi(atoms[2]); int bnY = atoi(atoms[1]); diff --git a/FA2sp/Ext/CFinalSunDlg/Body.PlaceConnectedTiles.cpp b/FA2sp/Ext/CFinalSunDlg/Body.PlaceConnectedTiles.cpp index 0e3f9e20..58e8326f 100644 --- a/FA2sp/Ext/CFinalSunDlg/Body.PlaceConnectedTiles.cpp +++ b/FA2sp/Ext/CFinalSunDlg/Body.PlaceConnectedTiles.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include "../../Helpers/Translations.h" #include "../../Helpers/STDHelpers.h" #include "../../Miscs/TheaterInfo.h" @@ -332,7 +333,7 @@ void CViewObjectsExt::ConnectedTile_Initialize() TreeView_ConnectedTileMap.clear(); CurrentConnectedTileType = -1; ConnectedTileSets.clear(); - auto thisTheater = CINI::CurrentDocument().GetString("Map", "Theater"); + auto thisTheater = CINIExt::CurrentDocument().GetString("Map", "Theater"); if (CMapDataExt::TileData) { std::string path = CFinalSunApp::Instance->ExePath(); @@ -545,7 +546,7 @@ void CViewObjectsExt::Redraw_ConnectedTile(CViewObjectsExt* pThis) subNodes.push_back(hCliff); subNodes.push_back(hRailroad); - auto thisTheater = CINI::CurrentDocument().GetString("Map", "Theater"); + auto thisTheater = CINIExt::CurrentDocument().GetString("Map", "Theater"); int i = -1; for (auto& ct : ConnectedTileSets) diff --git a/FA2sp/Ext/CFinalSunDlg/Body.cpp b/FA2sp/Ext/CFinalSunDlg/Body.cpp index 50842998..da584a5c 100644 --- a/FA2sp/Ext/CFinalSunDlg/Body.cpp +++ b/FA2sp/Ext/CFinalSunDlg/Body.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include "../../FA2sp.h" #include "../CIsoView/Body.h" @@ -798,7 +799,7 @@ BOOL CFinalSunDlgExt::OnCommandExt(WPARAM wParam, LPARAM lParam) { for (const auto& type : pSection->GetEntities()) { - auto thisTheater = CINI::CurrentDocument().GetString("Map", "Theater"); + auto thisTheater = CINIExt::CurrentDocument().GetString("Map", "Theater"); if (STDHelpers::SplitString(type.second)[0] == thisTheater) { found = true; @@ -949,7 +950,7 @@ BOOL CFinalSunDlgExt::OnCommandExt(WPARAM wParam, LPARAM lParam) break; } - auto thisTheater = CINI::CurrentDocument().GetString("Map", "Theater"); + auto thisTheater = CINIExt::CurrentDocument().GetString("Map", "Theater"); thisTheater.MakeUpper(); if (thisTheater == "NEWURBAN") thisTheater = "UBN"; diff --git a/FA2sp/Ext/CFinalSunDlg/Hooks.ObjectBrowserControl.cpp b/FA2sp/Ext/CFinalSunDlg/Hooks.ObjectBrowserControl.cpp index 1880dc13..c3bf481e 100644 --- a/FA2sp/Ext/CFinalSunDlg/Hooks.ObjectBrowserControl.cpp +++ b/FA2sp/Ext/CFinalSunDlg/Hooks.ObjectBrowserControl.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include #include @@ -1204,7 +1205,7 @@ DEFINE_HOOK(461766, CIsoView_OnLButtonDown_PropertyBrush, 5) continue; int intKey = gx * 1000 + gy; - CINI::CurrentDocument->WriteString("CellTags", std::to_string(intKey).c_str(), CIsoView::CurrentCommand->ObjectID); + CINIExt::CurrentDocument->WriteString("CellTags", std::to_string(intKey).c_str(), CIsoView::CurrentCommand->ObjectID); } } } diff --git a/FA2sp/Ext/CIsoView/Body.DrawObjects.cpp b/FA2sp/Ext/CIsoView/Body.DrawObjects.cpp index 76d979e9..880acd42 100644 --- a/FA2sp/Ext/CIsoView/Body.DrawObjects.cpp +++ b/FA2sp/Ext/CIsoView/Body.DrawObjects.cpp @@ -1583,14 +1583,14 @@ static void DrawMap() pasteBuildings.clear(); pasteBuildingFSs.clear(); if (CIsoViewExt::DrawCelltags) - if (auto pSection = CINI::CurrentDocument->GetSection("CellTags")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("CellTags")) { Celltags.reserve(pSection->GetEntities().size()); for (auto &[key, value] : pSection->GetEntities()) Celltags.push_back(&value); } if (CIsoViewExt::DrawWaypoints) - if (auto pSection = CINI::CurrentDocument->GetSection("Waypoints")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints")) { Waypoints.reserve(pSection->GetEntities().size()); for (auto &[key, value] : pSection->GetEntities()) @@ -1630,7 +1630,7 @@ static void DrawMap() if (INIIncludes::MapINIWarn) { - if (!CINI::CurrentDocument->GetBool("FA2spVersionControl", "MapIncludeWarned")) + if (!CINIExt::CurrentDocument->GetBool("FA2spVersionControl", "MapIncludeWarned")) { int result = MessageBox(CIsoView::GetInstance()->GetSafeHwnd(), Translations::TranslateOrDefault("MapIncludeWarningMessage", @@ -1640,7 +1640,7 @@ static void DrawMap() MB_OKCANCEL | MB_DEFBUTTON2 | MB_ICONEXCLAMATION); if (result == IDOK) - CINI::CurrentDocument->WriteBool("FA2spVersionControl", "MapIncludeWarned", true); + CINIExt::CurrentDocument->WriteBool("FA2spVersionControl", "MapIncludeWarned", true); } INIIncludes::MapINIWarn = false; } @@ -3549,7 +3549,7 @@ static void DrawMap() } if (CIsoViewExt::RockCells) { - auto thisTheater = CINI::CurrentDocument().GetString("Map", "Theater"); + auto thisTheater = CINIExt::CurrentDocument().GetString("Map", "Theater"); auto Map = &CMapData::Instance(); for (int i = 0; i < Map->CellDataCount; i++) { @@ -4045,7 +4045,7 @@ static void DrawMap() if (CIsoViewExt::DrawAnnotations) { - if (auto pSection = CINI::CurrentDocument->GetSection("Annotations")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Annotations")) { for (const auto &[key, value] : pSection->GetEntities()) { diff --git a/FA2sp/Ext/CIsoView/Body.OnMouseMove.cpp b/FA2sp/Ext/CIsoView/Body.OnMouseMove.cpp index 6006df77..6f03e574 100644 --- a/FA2sp/Ext/CIsoView/Body.OnMouseMove.cpp +++ b/FA2sp/Ext/CIsoView/Body.OnMouseMove.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include "../../FA2sp.h" #include @@ -567,10 +568,10 @@ void CIsoViewExt::DrawMouseMove(HDC hDC, const RECT &rect) int i = 1; int tab = 10; auto Map = &CMapData::Instance(); - auto &mapIni = CINI::CurrentDocument(); + auto &mapIni = CINIExt::CurrentDocument(); MultimapHelper mmh; mmh.AddINI(&CINI::Rules()); - mmh.AddINI(&CINI::CurrentDocument()); + mmh.AddINI(&CINIExt::CurrentDocument()); if (!CMapDataExt::IsCoordInFullMap(point.X, point.Y)) { @@ -2334,7 +2335,7 @@ void CIsoViewExt::DrawMouseMove(HDC hDC, const RECT &rect) if (cell->Waypoint != -1) { - auto pSection = CINI::CurrentDocument->GetSection("Waypoints"); + auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints"); auto pWP = pSection->GetKeyAt(cell->Waypoint); auto pVal = pSection->GetValueAt(cell->Waypoint); if (pWP && pVal) @@ -2478,7 +2479,7 @@ void CIsoViewExt::DrawMouseMove(HDC hDC, const RECT &rect) } } - if (auto pSection = CINI::CurrentDocument->GetSection("ScriptTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("ScriptTypes")) { for (auto &pair : pSection->GetEntities()) { @@ -2488,7 +2489,7 @@ void CIsoViewExt::DrawMouseMove(HDC hDC, const RECT &rect) { char id[10]; _itoa(i, id, 10); - auto line = CINI::CurrentDocument->GetString(pair.second, id); + auto line = CINIExt::CurrentDocument->GetString(pair.second, id); if (line == "") continue; @@ -2529,7 +2530,7 @@ void CIsoViewExt::DrawMouseMove(HDC hDC, const RECT &rect) { pSrc.Format(Translations::TranslateOrDefault("ObjectInfo.Waypoint.Script", "Script: %s (%s)"), - CINI::CurrentDocument->GetString(pair.second, "Name"), pair.second); + CINIExt::CurrentDocument->GetString(pair.second, "Name"), pair.second); if (ExtConfigs::DirectXRendering) { TextOutDirectX(drawX, drawY + lineHeight * i, pSrc, fontSize, true, 2); @@ -2544,7 +2545,7 @@ void CIsoViewExt::DrawMouseMove(HDC hDC, const RECT &rect) } } } - if (auto pSection = CINI::CurrentDocument->GetSection("TeamTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("TeamTypes")) { auto process = [](const char *s) { @@ -2563,15 +2564,15 @@ void CIsoViewExt::DrawMouseMove(HDC hDC, const RECT &rect) }; for (auto &pair : pSection->GetEntities()) { - auto wp = CINI::CurrentDocument->GetString(pair.second, "Waypoint"); - auto wp2 = CINI::CurrentDocument->GetString(pair.second, "TransportWaypoint"); + auto wp = CINIExt::CurrentDocument->GetString(pair.second, "Waypoint"); + auto wp2 = CINIExt::CurrentDocument->GetString(pair.second, "TransportWaypoint"); if (process(wp) == atoi(*pWP) - || (process(wp2) == atoi(*pWP) && CINI::CurrentDocument->GetBool(pair.second, "UseTransportOrigin"))) + || (process(wp2) == atoi(*pWP) && CINIExt::CurrentDocument->GetBool(pair.second, "UseTransportOrigin"))) { pSrc.Format(Translations::TranslateOrDefault("ObjectInfo.Waypoint.Team", "Team: %s (%s)"), - CINI::CurrentDocument->GetString(pair.second, "Name"), pair.second); + CINIExt::CurrentDocument->GetString(pair.second, "Name"), pair.second); if (ExtConfigs::DirectXRendering) { TextOutDirectX(drawX, drawY + lineHeight * i, pSrc, fontSize, true, 2); @@ -2650,13 +2651,13 @@ void CIsoViewExt::DrawMouseMove(HDC hDC, const RECT &rect) } else { - auto tag = FString::SplitString(CINI::CurrentDocument->GetString("Tags", currentTag)); + auto tag = FString::SplitString(CINIExt::CurrentDocument->GetString("Tags", currentTag)); if (tag.size() > 1) currentTag.Format("%s (%s)", currentTag, tag[1]); else currentTag.Format("%s", currentTag); } - auto tag = FString::SplitString(CINI::CurrentDocument->GetString("Tags", newTag)); + auto tag = FString::SplitString(CINIExt::CurrentDocument->GetString("Tags", newTag)); if (tag.size() > 1) newTag.Format("%s (%s)", newTag, tag[1]); else diff --git a/FA2sp/Ext/CIsoView/Body.cpp b/FA2sp/Ext/CIsoView/Body.cpp index 2a40ab1d..c9adab50 100644 --- a/FA2sp/Ext/CIsoView/Body.cpp +++ b/FA2sp/Ext/CIsoView/Body.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include "../../FA2sp.h" #include @@ -270,7 +271,7 @@ void CIsoViewExt::ConfirmTube(bool addReverse) value += direc; } value += ",-1"; - CINI::CurrentDocument->WriteString("Tubes", key, value); + CINIExt::CurrentDocument->WriteString("Tubes", key, value); if (addReverse) { @@ -283,7 +284,7 @@ void CIsoViewExt::ConfirmTube(bool addReverse) value += direc; } value += ",-1"; - CINI::CurrentDocument->WriteString("Tubes", key, value); + CINIExt::CurrentDocument->WriteString("Tubes", key, value); } CMapData::Instance->UpdateFieldTubeData(false); diff --git a/FA2sp/Ext/CIsoView/Hooks.cpp b/FA2sp/Ext/CIsoView/Hooks.cpp index f415ebd8..ed74cff6 100644 --- a/FA2sp/Ext/CIsoView/Hooks.cpp +++ b/FA2sp/Ext/CIsoView/Hooks.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include "../../FA2sp.h" #include @@ -404,17 +405,17 @@ DEFINE_HOOK(466DDE, CIsoView_OnLButtonUp_DragOthers, 7) int oldY = CMapData::Instance->GetYFromCoordIndex(m_id); ppmfc::CString key; key.Format("%d", oldX * 1000 + oldY); - if (CINI::CurrentDocument->KeyExists("Annotations", key)) + if (CINIExt::CurrentDocument->KeyExists("Annotations", key)) { - auto value = CINI::CurrentDocument->GetString("Annotations", key); + auto value = CINIExt::CurrentDocument->GetString("Annotations", key); if (nLButtonUpFlags != MK_SHIFT) { auto &cellExt = CMapDataExt::CellDataExts[CMapData::Instance->GetCoordIndex(oldX, oldY)]; cellExt.HasAnnotation = false; - CINI::CurrentDocument->DeleteKey("Annotations", key); + CINIExt::CurrentDocument->DeleteKey("Annotations", key); } key.Format("%d", X * 1000 + Y); - CINI::CurrentDocument->WriteString("Annotations", key, value); + CINIExt::CurrentDocument->WriteString("Annotations", key, value); auto &cellExt = CMapDataExt::CellDataExts[CMapData::Instance->GetCoordIndex(X, Y)]; cellExt.HasAnnotation = true; } @@ -427,30 +428,30 @@ DEFINE_HOOK(466DDE, CIsoView_OnLButtonUp_DragOthers, 7) CMapDataExt::MakeObjectRecord(ObjectRecord::RecordType::Basenode); char key[10]; sprintf(key, "%03d", m_id); - if (CINI::CurrentDocument->KeyExists(CIsoViewExt::CurrentCellObjectHouse, key)) + if (CINIExt::CurrentDocument->KeyExists(CIsoViewExt::CurrentCellObjectHouse, key)) { - auto atoms = STDHelpers::SplitString(CINI::CurrentDocument->GetString(CIsoViewExt::CurrentCellObjectHouse, key), 2); + auto atoms = STDHelpers::SplitString(CINIExt::CurrentDocument->GetString(CIsoViewExt::CurrentCellObjectHouse, key), 2); ppmfc::CString value; value.Format("%s,%d,%d", atoms[0], Y, X); if (nLButtonUpFlags == MK_SHIFT) { - int nodeCount = CINI::CurrentDocument->GetInteger(CIsoViewExt::CurrentCellObjectHouse, "NodeCount"); + int nodeCount = CINIExt::CurrentDocument->GetInteger(CIsoViewExt::CurrentCellObjectHouse, "NodeCount"); if (nodeCount < 1000) { for (int i = 0; i < 1000; ++i) { sprintf(key, "%03d", i); - if (!CINI::CurrentDocument->KeyExists(CIsoViewExt::CurrentCellObjectHouse, key)) + if (!CINIExt::CurrentDocument->KeyExists(CIsoViewExt::CurrentCellObjectHouse, key)) { break; } } char count[10]; sprintf(count, "%d", nodeCount + 1); - CINI::CurrentDocument->WriteString(CIsoViewExt::CurrentCellObjectHouse, "NodeCount", count); + CINIExt::CurrentDocument->WriteString(CIsoViewExt::CurrentCellObjectHouse, "NodeCount", count); } } - CINI::CurrentDocument->WriteString(CIsoViewExt::CurrentCellObjectHouse, key, value); + CINIExt::CurrentDocument->WriteString(CIsoViewExt::CurrentCellObjectHouse, key, value); CMapData::Instance->UpdateFieldBasenodeData(false); } m_id = -1; @@ -509,7 +510,7 @@ DEFINE_HOOK(466DDE, CIsoView_OnLButtonUp_DragOthers, 7) { FString size; size.Format("%d,%d,%d,%d", mpL, mpT, mpW, mpH); - CINI::CurrentDocument->WriteString("Map", "LocalSize", size); + CINIExt::CurrentDocument->WriteString("Map", "LocalSize", size); if (IsWindowVisible(CFinalSunDlg::Instance->MapD)) { auto dlg = GetDlgItem(CFinalSunDlg::Instance->MapD, 1045); @@ -870,11 +871,11 @@ DEFINE_HOOK(45EC1A, CIsoView_OnCommand_HandleProperty, A) { ppmfc::CString key; key.Format("%d", coord.X * 1000 + coord.Y); - if (CINI::CurrentDocument->KeyExists("Annotations", key)) + if (CINIExt::CurrentDocument->KeyExists("Annotations", key)) { if ((GetKeyState(VK_CONTROL) & 0x8000)) { - auto atoms = STDHelpers::SplitString(CINI::CurrentDocument->GetString("Annotations", key), 6); + auto atoms = STDHelpers::SplitString(CINIExt::CurrentDocument->GetString("Annotations", key), 6); ppmfc::CString value; bool folded = STDHelpers::IsTrue(atoms[2]); for (int i = 0; i < atoms.size(); ++i) @@ -891,7 +892,7 @@ DEFINE_HOOK(45EC1A, CIsoView_OnCommand_HandleProperty, A) value += "yes"; } } - CINI::CurrentDocument->WriteString("Annotations", key, value); + CINIExt::CurrentDocument->WriteString("Annotations", key, value); ::RedrawWindow(CFinalSunDlg::Instance->MyViewFrame.pIsoView->m_hWnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } else @@ -1793,7 +1794,7 @@ DEFINE_HOOK(45BFE1, CIsoView_OnMouseMove_Waypoint_Add, 8) { int i = 8; ppmfc::CString key = "8"; - while (CINI::CurrentDocument->KeyExists("Waypoints", key)) + while (CINIExt::CurrentDocument->KeyExists("Waypoints", key)) { i++; key.Format("%d", i); @@ -1821,14 +1822,14 @@ DEFINE_HOOK(45C0CF, CIsoView_OnMouseMove_Waypoint_AddPlayerLocation, 6) CMapDataExt::MakeObjectRecord(ObjectRecord::RecordType::Waypoint, true); auto deleteWaypoint = [](ppmfc::CString key) { - if (auto pSection = CINI::CurrentDocument->GetSection("Waypoints")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints")) { - if (CINI::CurrentDocument->KeyExists("Waypoints", key)) + if (CINIExt::CurrentDocument->KeyExists("Waypoints", key)) { auto &&value = pSection->GetString(key); int x = atoi(value) / 1000; int y = atoi(value) % 1000; - CINI::CurrentDocument->DeleteKey(pSection, key); + CINIExt::CurrentDocument->DeleteKey(pSection, key); CMapData::Instance->UpdateFieldWaypointData(false); if (CMapData::Instance->IsMultiOnly()) @@ -2184,16 +2185,16 @@ DEFINE_HOOK(469E70, CIsoView_UpdateStatusBar, 7) if (cell->CellTag > -1) { FString id = ""; - if (CINI::CurrentDocument->SectionExists("CellTags")) + if (CINIExt::CurrentDocument->SectionExists("CellTags")) { char tmp[10]; _itoa((X * 1000 + Y), tmp, 10); - id = CINI::CurrentDocument->GetString("CellTags", tmp); + id = CINIExt::CurrentDocument->GetString("CellTags", tmp); } if (id != "") { FString name = "MISSING"; - auto tag = CINI::CurrentDocument->GetString("Tags", id); + auto tag = CINIExt::CurrentDocument->GetString("Tags", id); auto atoms = FString::SplitString(tag); if (atoms.size() > 1) { diff --git a/FA2sp/Ext/CLighting/Body.cpp b/FA2sp/Ext/CLighting/Body.cpp index 0a3f97d5..40fe1281 100644 --- a/FA2sp/Ext/CLighting/Body.cpp +++ b/FA2sp/Ext/CLighting/Body.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include "../../Helpers/Translations.h" @@ -77,9 +78,9 @@ BOOL CLightingExt::PreTranslateMessageExt(MSG* pMsg) buffer = "0.000000"; pWnd->SetWindowText(buffer); } - if (CINI::CurrentDocument->GetString("Lighting", pKey) != buffer) + if (CINIExt::CurrentDocument->GetString("Lighting", pKey) != buffer) { - CINI::CurrentDocument->WriteString("Lighting", pKey, buffer); + CINIExt::CurrentDocument->WriteString("Lighting", pKey, buffer); if (edit) edited = true; } diff --git a/FA2sp/Ext/CLighting/Hooks.cpp b/FA2sp/Ext/CLighting/Hooks.cpp index caba9a1b..0f8e0381 100644 --- a/FA2sp/Ext/CLighting/Hooks.cpp +++ b/FA2sp/Ext/CLighting/Hooks.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include #include @@ -30,18 +31,18 @@ DEFINE_HOOK(478407, CLighting_UpdateDialog, 7) { GET(CLighting*, pThis, ESI); - pThis->SetDlgItemText(1068, CINI::CurrentDocument->GetString("Lighting", "DominatorAmbient", "0.850000")); - pThis->SetDlgItemText(1069, CINI::CurrentDocument->GetString("Lighting", "DominatorGreen", "0.300000")); - pThis->SetDlgItemText(1070, CINI::CurrentDocument->GetString("Lighting", "DominatorRed", "0.200000")); - pThis->SetDlgItemText(1071, CINI::CurrentDocument->GetString("Lighting", "DominatorBlue", "0.000000")); - pThis->SetDlgItemText(1072, CINI::CurrentDocument->GetString("Lighting", "DominatorLevel", "1.000000")); + pThis->SetDlgItemText(1068, CINIExt::CurrentDocument->GetString("Lighting", "DominatorAmbient", "0.850000")); + pThis->SetDlgItemText(1069, CINIExt::CurrentDocument->GetString("Lighting", "DominatorGreen", "0.300000")); + pThis->SetDlgItemText(1070, CINIExt::CurrentDocument->GetString("Lighting", "DominatorRed", "0.200000")); + pThis->SetDlgItemText(1071, CINIExt::CurrentDocument->GetString("Lighting", "DominatorBlue", "0.000000")); + pThis->SetDlgItemText(1072, CINIExt::CurrentDocument->GetString("Lighting", "DominatorLevel", "1.000000")); - pThis->SetDlgItemText(1073, CINI::CurrentDocument->GetString("Lighting", "Ground", "0.080000")); - pThis->SetDlgItemText(1074, CINI::CurrentDocument->GetString("Lighting", "IonGround", "0.000000")); - pThis->SetDlgItemText(1075, CINI::CurrentDocument->GetString("Lighting", "DominatorGround", "0.000000")); + pThis->SetDlgItemText(1073, CINIExt::CurrentDocument->GetString("Lighting", "Ground", "0.080000")); + pThis->SetDlgItemText(1074, CINIExt::CurrentDocument->GetString("Lighting", "IonGround", "0.000000")); + pThis->SetDlgItemText(1075, CINIExt::CurrentDocument->GetString("Lighting", "DominatorGround", "0.000000")); - pThis->SetDlgItemText(1076, CINI::CurrentDocument->GetString("Lighting", "NukeAmbientChangeRate", "1.500000")); - pThis->SetDlgItemText(1077, CINI::CurrentDocument->GetString("Lighting", "DominatorAmbientChangeRate", "0.000000")); + pThis->SetDlgItemText(1076, CINIExt::CurrentDocument->GetString("Lighting", "NukeAmbientChangeRate", "1.500000")); + pThis->SetDlgItemText(1077, CINIExt::CurrentDocument->GetString("Lighting", "DominatorAmbientChangeRate", "0.000000")); IsUpdatingDialog = false; diff --git a/FA2sp/Ext/CLoading/Hooks.LoadObjects.cpp b/FA2sp/Ext/CLoading/Hooks.LoadObjects.cpp index 5e9d128b..763829a3 100644 --- a/FA2sp/Ext/CLoading/Hooks.LoadObjects.cpp +++ b/FA2sp/Ext/CLoading/Hooks.LoadObjects.cpp @@ -150,7 +150,7 @@ DEFINE_HOOK(49D63A, CLoading_LoadMap_ReloadGame, 5) CINI::Desert().Release(); //CINI::FAData().Release(); //CINI::FALanguage().Release(); - CINI::CurrentDocument().Release(); + CINIExt::CurrentDocument().Release(); CLoading::Instance()->Release(); strcpy_s(CFinalSunApp::FilePath, 260, folder); @@ -251,7 +251,7 @@ DEFINE_HOOK(49D63A, CLoading_LoadMap_ReloadGame, 5) INIIncludes::SkipBracketFix = true; CMapDataExt::IsLoadingMapFile = true; - CINIOrderTracker::Clear(&CINI::CurrentDocument); + CINIOrderTracker::Clear(&CINIExt::CurrentDocument); CMapDataExt::MapIniSectionSorting.clear(); CMapDataExt::MapInlineComments.clear(); CMapDataExt::MapFrontlineComments.clear(); diff --git a/FA2sp/Ext/CMapData/Body.ResizeMap.cpp b/FA2sp/Ext/CMapData/Body.ResizeMap.cpp index 8f31a4c8..32359787 100644 --- a/FA2sp/Ext/CMapData/Body.ResizeMap.cpp +++ b/FA2sp/Ext/CMapData/Body.ResizeMap.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include #include "../../Helpers/Translations.h" #include "../../ExtraWindow/CMeasurementToolbox/CMeasurementToolbox.h" @@ -297,7 +298,7 @@ bool CMapDataExt::ResizeMapExt(MapRect* const pRect) } UpdateFieldBasenodeData(false); - if (auto pSection = CINI::CurrentDocument->GetSection("Tubes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Tubes")) { for (const auto& [key, value] : pSection->GetEntities()) { @@ -322,12 +323,12 @@ bool CMapDataExt::ResizeMapExt(MapRect* const pRect) val += ","; } val.Delete(val.GetLength() - 1, 1); - CINI::CurrentDocument->WriteString(pSection, key, val); + CINIExt::CurrentDocument->WriteString(pSection, key, val); } } UpdateFieldTubeData(false); - if (auto pSection = CINI::CurrentDocument->GetSection("Annotations")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Annotations")) { std::vector> annotations; for (const auto& [key, value] : pSection->GetEntities()) @@ -340,16 +341,16 @@ bool CMapDataExt::ResizeMapExt(MapRect* const pRect) buffer.Format("%d", y + x * 1000); annotations.push_back(std::make_pair(FString(buffer), FString(value))); } - CINI::CurrentDocument->DeleteSection("Annotations"); - pSection = CINI::CurrentDocument->AddSection("Annotations"); + CINIExt::CurrentDocument->DeleteSection("Annotations"); + pSection = CINIExt::CurrentDocument->AddSection("Annotations"); for (const auto& [key, value] : annotations) { - CINI::CurrentDocument->WriteString(pSection, key, value); + CINIExt::CurrentDocument->WriteString(pSection, key, value); } } CMapDataExt::UpdateAnnotation(); - if (auto pSection = CINI::CurrentDocument->GetSection("GeometricAnnotations")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("GeometricAnnotations")) { std::vector keysToDelete; for (auto& [key, value] : pSection->GetEntities()) @@ -372,7 +373,7 @@ bool CMapDataExt::ResizeMapExt(MapRect* const pRect) } for (auto& key : keysToDelete) { - CINI::CurrentDocument->DeleteKey(pSection, key); + CINIExt::CurrentDocument->DeleteKey(pSection, key); } } CMapDataExt::UpdateGeometricAnnotation(); diff --git a/FA2sp/Ext/CMapData/Body.cpp b/FA2sp/Ext/CMapData/Body.cpp index c0c64113..b99a7e77 100644 --- a/FA2sp/Ext/CMapData/Body.cpp +++ b/FA2sp/Ext/CMapData/Body.cpp @@ -1003,7 +1003,7 @@ BuildingPowers CMapDataExt::GetStructurePower(ppmfc::CString value) void CMapDataExt::GetBuildingDataByIniID(int bldID, CBuildingData& data) { - auto atoms = STDHelpers::SplitString(CINI::CurrentDocument->GetValueAt("Structures", bldID), 16); + auto atoms = STDHelpers::SplitString(CINIExt::CurrentDocument->GetValueAt("Structures", bldID), 16); data.House = atoms[0]; data.TypeID = atoms[1]; data.Health = atoms[2]; @@ -1053,7 +1053,7 @@ void CMapDataExt::AddCellTagExt(const char* lpTag, int dwPos) continue; int intKey = gx * 1000 + gy; - CINI::CurrentDocument->WriteString("CellTags", std::to_string(intKey).c_str(), lpTag); + CINIExt::CurrentDocument->WriteString("CellTags", std::to_string(intKey).c_str(), lpTag); } } @@ -1064,7 +1064,7 @@ void CMapDataExt::UpdateTriggers() { CMapDataExt::Triggers.clear(); FMap TagMap; - if (auto pSection = CINI::CurrentDocument().GetSection("Tags")) + if (auto pSection = CINIExt::CurrentDocument().GetSection("Tags")) { for (auto& kvp : pSection->GetEntities()) { @@ -1074,7 +1074,7 @@ void CMapDataExt::UpdateTriggers() TagMap[tagAtoms[2]] = kvp.first; } } - if (auto pSection = CINI::CurrentDocument->GetSection("Triggers")) { + if (auto pSection = CINIExt::CurrentDocument->GetSection("Triggers")) { for (const auto& pair : pSection->GetEntities()) { std::shared_ptr trigger(Trigger::create(pair.first, &TagMap)); if (!trigger) { @@ -1139,7 +1139,7 @@ void CMapDataExt::ReloadTrigger(const FString& id) { auto it = Triggers.find(id); if (it != Triggers.end()) { - auto atoms = FString::SplitString(CINI::CurrentDocument->GetString("Triggers", id)); + auto atoms = FString::SplitString(CINIExt::CurrentDocument->GetString("Triggers", id)); it->second->LoadFromMap(id, atoms); } } @@ -2022,7 +2022,7 @@ int CMapDataExt::GetRampIndex(int tileIndex, int rampType) void CMapDataExt::UpdateFieldStructureData_Index(int iniIndex, ppmfc::CString value, bool refreshCenter) { if (value == "") - value = CINI::CurrentDocument->GetValueAt("Structures", iniIndex); + value = CINIExt::CurrentDocument->GetValueAt("Structures", iniIndex); int cellIndex = StructureIndexMap.size(); if (cellIndex > SHRT_MAX && !CIsoView::IsMouseMoving) @@ -2143,7 +2143,7 @@ void CMapDataExt::UpdateFieldStructureData_Optimized() StructureIndexMap.clear(); BuildingRenderDatasFix.clear(); BuildingDatasExt.clear(); - if (auto sec = CINI::CurrentDocument->GetSection("Structures")) + if (auto sec = CINIExt::CurrentDocument->GetSection("Structures")) { i = 0; BuildingRenderDatasFix.reserve(sec->GetEntities().size()); @@ -2169,7 +2169,7 @@ std::vector CMapDataExt::GetStructureSize(ppmfc::CString structure) std::vector result; MultimapHelper mmh; mmh.AddINI(&CINI::Rules()); - mmh.AddINI(&CINI::CurrentDocument()); + mmh.AddINI(&CINIExt::CurrentDocument()); auto art = &CINI::Art(); auto image = mmh.GetString(structure, "Image", structure); std::string foundation = std::string(art->GetString(image, "Foundation", "1X1")); @@ -2278,7 +2278,7 @@ ppmfc::CString CMapDataExt::GetAvailableIndex(EIndexType type) type = EIndexType::Generic; auto v = VEHGuard(false); - auto& ini = CINI::CurrentDocument; + auto& ini = CINIExt::CurrentDocument; const int initNumber = 1000000; const char* suffix = ""; @@ -2372,19 +2372,19 @@ ppmfc::CString CMapDataExt::GetAvailableIndex(EIndexType type) void CMapDataExt::UpdateMapSectionIndicies(const ppmfc::CString& lpSection) { - if (auto pSection = CINI::CurrentDocument->GetSection(lpSection)) + if (auto pSection = CINIExt::CurrentDocument->GetSection(lpSection)) { std::vector> buffer; for (auto& [key, value] : pSection->GetEntities()) { buffer.push_back(std::make_pair(key, value)); } - CINI::CurrentDocument->DeleteSection(lpSection); - pSection = CINI::CurrentDocument->AddSection(lpSection); + CINIExt::CurrentDocument->DeleteSection(lpSection); + pSection = CINIExt::CurrentDocument->AddSection(lpSection); int index = 0; for (auto& [key, value] : buffer) { - CINI::CurrentDocument->WriteString(pSection, key, value); + CINIExt::CurrentDocument->WriteString(pSection, key, value); std::pair ins = std::make_pair((ppmfc::CString)key, index++); std::pair ret; @@ -2400,7 +2400,7 @@ void CMapDataExt::UpdateAnnotation() { cellExt.HasAnnotation = false; } - if (auto pSection = CINI::CurrentDocument->GetSection("Annotations")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Annotations")) { for (const auto& [key, value] : pSection->GetEntities()) { @@ -2420,7 +2420,7 @@ void CMapDataExt::UpdateGeometricAnnotation() CIsoViewExt::Circles_Annotation.clear(); CIsoViewExt::TempCircle_Annotation[0] = { 0, 0 }; CIsoViewExt::TempCircle_Annotation[1] = { 0, 0 }; - if (auto pSection = CINI::CurrentDocument->GetSection("GeometricAnnotations")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("GeometricAnnotations")) { for (const auto& [key, value] : pSection->GetEntities()) { @@ -2583,9 +2583,9 @@ int CMapDataExt::GetPlayerLocationCountAtCell(int x, int y) { FString key; key.Format("%d", i); - if (CINI::CurrentDocument->KeyExists("Waypoints", key)) + if (CINIExt::CurrentDocument->KeyExists("Waypoints", key)) { - auto value = CINI::CurrentDocument->GetInteger("Waypoints", key); + auto value = CINIExt::CurrentDocument->GetInteger("Waypoints", key); if (value >= 0) { int wx = value / 1000; @@ -3332,7 +3332,7 @@ void ObjectRecord::recover() { std::map oriWps; if (map->IsMultiOnly()) - if (auto pSection = CINI::CurrentDocument->GetSection("Waypoints")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints")) for (const auto& data : pSection->GetEntities()) oriWps[atoi(data.first)] = data.second; recoverIniMap("Waypoints", WaypointList); @@ -3379,7 +3379,7 @@ void ObjectRecord::recover() FString size; size.Format("%d,%d,%d,%d", bound.left, bound.top, bound.width, bound.height); - CINI::CurrentDocument->WriteString("Map", "LocalSize", size); + CINIExt::CurrentDocument->WriteString("Map", "LocalSize", size); if (IsWindowVisible(CFinalSunDlg::Instance->MapD)) { auto dlg = GetDlgItem(CFinalSunDlg::Instance->MapD, 1045); @@ -3630,7 +3630,7 @@ void CMapDataExt::UpdateFieldAircraftData_RedrawMinimap() void CMapDataExt::InitializeTileDataInfo() { auto pLoading = CLoadingExt::GetExtension(); - FString thisTheater = CINI::CurrentDocument().GetString("Map", "Theater"); + FString thisTheater = CINIExt::CurrentDocument().GetString("Map", "Theater"); thisTheater.MakeUpper(); if (thisTheater == "TEMPERATE") @@ -3792,7 +3792,7 @@ void CMapDataExt::InitializeTileDataInfo() if (auto pSection = CINI::FAData->GetSection("AutoShoreTypes")) { - auto thisTheater = CINI::CurrentDocument().GetString("Map", "Theater"); + auto thisTheater = CINIExt::CurrentDocument().GetString("Map", "Theater"); for (const auto& type : pSection->GetEntities()) { auto atoms = STDHelpers::SplitString(type.second, 3); @@ -3882,7 +3882,7 @@ void CMapDataExt::InitializeTileData() CMapDataExt::TileData = nullptr; CMapDataExt::TileBlockDataExt.clear(); - auto thisTheater = CINI::CurrentDocument().GetString("Map", "Theater"); + auto thisTheater = CINIExt::CurrentDocument().GetString("Map", "Theater"); thisTheater.MakeUpper(); if (thisTheater == "TEMPERATE" && CTileTypeInfo::Temperate().Datas) { @@ -5755,7 +5755,7 @@ void CMapDataExt::InitializeAllHdmEdition(bool updateMinimap, bool reloadCellDat if (atoms.size() >= 3) { std::vector group; - if (CINI::CurrentDocument().GetString("Map", "Theater") != atoms[0]) + if (CINIExt::CurrentDocument().GetString("Map", "Theater") != atoms[0]) continue; group.push_back(atoms[1]); group.push_back(atoms[2]); @@ -6155,30 +6155,30 @@ void CMapDataExt::InitializeAllHdmEdition(bool updateMinimap, bool reloadCellDat CustomWaypointColors.clear(); CustomCelltagColors.clear(); - if (auto pColors = CINI::CurrentDocument->GetSection("FA2spColors")) + if (auto pColors = CINIExt::CurrentDocument->GetSection("FA2spColors")) { - if (auto pSection = CINI::CurrentDocument->GetSection("Waypoints")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints")) { for (const auto& [key, value] : pSection->GetEntities()) { ppmfc::CString colorkey = "Wp"; colorkey += key; - if (CINI::CurrentDocument->KeyExists("FA2spColors", colorkey)) + if (CINIExt::CurrentDocument->KeyExists("FA2spColors", colorkey)) { - auto color = CINI::CurrentDocument->GetColor(pColors, colorkey, ExtConfigs::DisplayColor_Waypoint); + auto color = CINIExt::CurrentDocument->GetColor(pColors, colorkey, ExtConfigs::DisplayColor_Waypoint); CMapDataExt::CustomWaypointColors[key] = color; } } } - if (auto pSection = CINI::CurrentDocument->GetSection("CellTags")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("CellTags")) { for (const auto& [key, value] : pSection->GetEntities()) { ppmfc::CString colorkey = "Tag"; colorkey += value; - if (CINI::CurrentDocument->KeyExists("FA2spColors", colorkey)) + if (CINIExt::CurrentDocument->KeyExists("FA2spColors", colorkey)) { - auto color = CINI::CurrentDocument->GetColor(pColors, colorkey, ExtConfigs::DisplayColor_Celltag); + auto color = CINIExt::CurrentDocument->GetColor(pColors, colorkey, ExtConfigs::DisplayColor_Celltag); CMapDataExt::CustomCelltagColors[value] = color; } } @@ -6258,7 +6258,7 @@ void CMapDataExt::InitializeAllHdmEdition(bool updateMinimap, bool reloadCellDat }; for (int i = 0; i < 3; ++i) { - if (auto pSection = CINI::CurrentDocument->GetSection(WAESections[i])) + if (auto pSection = CINIExt::CurrentDocument->GetSection(WAESections[i])) { for (auto& [key, value] : pSection->GetEntities()) { diff --git a/FA2sp/Ext/CMapData/Hooks.cpp b/FA2sp/Ext/CMapData/Hooks.cpp index feb37249..95ffc6cf 100644 --- a/FA2sp/Ext/CMapData/Hooks.cpp +++ b/FA2sp/Ext/CMapData/Hooks.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include #include @@ -434,7 +435,7 @@ DEFINE_HOOK(4AC210, CMapData_AddInfantry, 7) std::vector availableAndEmptySubcells; auto& name = CMapData::Instance->TerrainDatas[cell->Terrain].TypeID; ppmfc::CString key = "TemperateOccupationBits"; - auto theaterIg = CINI::CurrentDocument->GetString("Map", "Theater"); + auto theaterIg = CINIExt::CurrentDocument->GetString("Map", "Theater"); if (theaterIg == "SNOW") key = "SnowOccupationBits"; @@ -924,7 +925,7 @@ DEFINE_HOOK(4A8FB0, CMapData_DeleteStructure, 7) GET_STACK(unsigned int, cellIndex, 0x4); auto& mapdata = CMapData::Instance(); - auto& ini = CINI::CurrentDocument; + auto& ini = CINIExt::CurrentDocument; if (!ini->SectionExists("Structures")) return 0x4A98AC; @@ -1098,7 +1099,7 @@ DEFINE_HOOK(4B9E38, CMapData_CreateMap_InitializeMapDataExt, 5) CMapDataExt::IsUTF8File = false; Logger::Debug("CMapData::CreateMap(): About to call InitializeAllHdmEdition()\n"); CMapDataExt::InitializeAllHdmEdition(); - CINIOrderTracker::Clear(&CINI::CurrentDocument); + CINIOrderTracker::Clear(&CINIExt::CurrentDocument); CMapDataExt::MapIniSectionSorting.clear(); CMapDataExt::MapInlineComments.clear(); CMapDataExt::MapFrontlineComments.clear(); @@ -1157,7 +1158,7 @@ DEFINE_HOOK(4A6040, CMapData_UpdateUnits, 6) CMapDataExt::UnitDatasExt.clear(); - if (auto pSection = CINI::CurrentDocument->GetSection("Units")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Units")) { CMapDataExt::UnitDatasExt.reserve(pSection->GetEntities().size()); int i = 0; @@ -1184,7 +1185,7 @@ DEFINE_HOOK(4A87A0, CMapData_DeleteUnit, 7) { GET(CMapData*, pThis, ECX); GET_STACK(int, index, 0x4); - if (auto pSection = CINI::CurrentDocument->GetSection("Units")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Units")) { if (index < pSection->GetEntities().size()) { @@ -1192,7 +1193,7 @@ DEFINE_HOOK(4A87A0, CMapData_DeleteUnit, 7) auto atoms = STDHelpers::SplitString(value, 4); int x = atoi(atoms[4]); int y = atoi(atoms[3]); - CINI::CurrentDocument->DeleteKey(pSection, *pSection->GetKeyAt(index)); + CINIExt::CurrentDocument->DeleteKey(pSection, *pSection->GetKeyAt(index)); pThis->UpdateFieldUnitData(false); if (!CMapDataExt::SkipUpdateMinimap) pThis->UpdateMapPreviewAt(x, y); @@ -1214,7 +1215,7 @@ DEFINE_HOOK(4A4270, CMapData_UpdateAircraft, 6) } CMapDataExt::AircraftDatasExt.clear(); - if (auto pSection = CINI::CurrentDocument->GetSection("Aircraft")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Aircraft")) { int i = 0; CMapDataExt::AircraftDatasExt.reserve(pSection->GetEntities().size()); @@ -1241,7 +1242,7 @@ DEFINE_HOOK(4A98B0, CMapData_DeleteAircraft, 7) { GET(CMapData*, pThis, ECX); GET_STACK(int, index, 0x4); - if (auto pSection = CINI::CurrentDocument->GetSection("Aircraft")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Aircraft")) { if (index < pSection->GetEntities().size()) { @@ -1249,7 +1250,7 @@ DEFINE_HOOK(4A98B0, CMapData_DeleteAircraft, 7) auto atoms = STDHelpers::SplitString(value, 4); int x = atoi(atoms[4]); int y = atoi(atoms[3]); - CINI::CurrentDocument->DeleteKey(pSection, *pSection->GetKeyAt(index)); + CINIExt::CurrentDocument->DeleteKey(pSection, *pSection->GetKeyAt(index)); pThis->UpdateFieldAircraftData(false); if (!CMapDataExt::SkipUpdateMinimap) pThis->UpdateMapPreviewAt(x, y); @@ -1270,7 +1271,7 @@ DEFINE_HOOK(4A67D0, CMapData_UpdateWaypoints, 6) pThis->CellDatas[i].Waypoint = -1; } - if (auto pSection = CINI::CurrentDocument->GetSection("Waypoints")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints")) { int i = 0; for (const auto& data : pSection->GetEntities()) @@ -1299,14 +1300,14 @@ DEFINE_HOOK(4A7CB0, CMapData_DeleteWaypoints, 7) { GET(CMapData*, pThis, ECX); GET_STACK(int, index, 0x4); - if (auto pSection = CINI::CurrentDocument->GetSection("Waypoints")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints")) { if (index < pSection->GetEntities().size()) { auto& value = *pSection->GetValueAt(index); int x = atoi(value) / 1000; int y = atoi(value) % 1000; - CINI::CurrentDocument->DeleteKey(pSection, *pSection->GetKeyAt(index)); + CINIExt::CurrentDocument->DeleteKey(pSection, *pSection->GetKeyAt(index)); pThis->UpdateFieldWaypointData(false); if (pThis->IsMultiOnly()) @@ -1344,11 +1345,11 @@ DEFINE_HOOK(4A6FB0, CMapData_UpdateFieldBasenodeData, 6) mapData->CellDatas[i].BaseNode.House = ""; } - if (auto pSection = CINI::CurrentDocument->GetSection("Houses")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Houses")) { for (const auto& [key, house] : pSection->GetEntities()) { - if (auto pHouse = CINI::CurrentDocument->GetSection(house)) + if (auto pHouse = CINIExt::CurrentDocument->GetSection(house)) { for (int j = 0; j < pHouse->GetInteger("NodeCount"); ++j) { @@ -1649,7 +1650,7 @@ DEFINE_HOOK(4AA111, CMapData_DeleteTerrain, 6) DEFINE_HOOK(4BA5F0, CMapData_UpdateFieldTubeData, 6) { CMapDataExt::Tubes.clear(); - if (auto pSection = CINI::CurrentDocument->GetSection("Tubes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Tubes")) { for (const auto& [key, value] : pSection->GetEntities()) { diff --git a/FA2sp/Ext/CMapValidator/Body.cpp b/FA2sp/Ext/CMapValidator/Body.cpp index 9497bc23..67a7c12e 100644 --- a/FA2sp/Ext/CMapValidator/Body.cpp +++ b/FA2sp/Ext/CMapValidator/Body.cpp @@ -23,7 +23,7 @@ void CMapValidatorExt::ProgramStartupInit() void CMapValidatorExt::ValidateOverlayLimit(BOOL& result) { - bool needNewIniFormat = CINI::CurrentDocument->GetInteger("Basic", "NewINIFormat", 4) > 4; + bool needNewIniFormat = CINIExt::CurrentDocument->GetInteger("Basic", "NewINIFormat", 4) > 4; if (!needNewIniFormat) { for (const auto& cellExt : CMapDataExt::CellDataExts) @@ -441,7 +441,7 @@ void CMapValidatorExt::ValidateEmptyTeamTrigger(BOOL& result) return param == "15" || param == "TeamTypes"; }; auto teamExists = [](ppmfc::CString team) { - if (auto pSection = CINI::CurrentDocument->GetSection("TeamTypes")) { + if (auto pSection = CINIExt::CurrentDocument->GetSection("TeamTypes")) { for (auto& pair : pSection->GetEntities()) { if (pair.second == team) return true; @@ -530,7 +530,7 @@ void CMapValidatorExt::ValidateEmptyTeamTrigger(BOOL& result) void CMapValidatorExt::ValidateTubes(BOOL& result) { CMapDataExt::Tubes.clear(); - if (auto pSection = CINI::CurrentDocument->GetSection("Tubes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Tubes")) { for (const auto& [key, value] : pSection->GetEntities()) { diff --git a/FA2sp/Ext/CPropertyAircraft/Hooks.cpp b/FA2sp/Ext/CPropertyAircraft/Hooks.cpp index 7d73d01e..7562e654 100644 --- a/FA2sp/Ext/CPropertyAircraft/Hooks.cpp +++ b/FA2sp/Ext/CPropertyAircraft/Hooks.cpp @@ -1,4 +1,5 @@ #include +#include "../../Miscs/Hooks.INI.h" #include "../../FA2sp/Helpers/Translations.h" #include "../../FA2sp/Helpers/Helper.h" #include "../../FA2sp/Ext/CMapData/Body.h" @@ -67,7 +68,7 @@ DEFINE_HOOK(4448F0, Miscs_LoadParams_Houses, 7) while(cb->DeleteString(0) != CB_ERR); - auto pHouse = CINI::CurrentDocument->GetSection("Houses"); + auto pHouse = CINIExt::CurrentDocument->GetSection("Houses"); INISection* pSecton = nullptr; if (CMapDataExt::IsInitingPropertyDialog) diff --git a/FA2sp/Ext/CRandomTree/Hooks.cpp b/FA2sp/Ext/CRandomTree/Hooks.cpp index 2d341767..2eb875a9 100644 --- a/FA2sp/Ext/CRandomTree/Hooks.cpp +++ b/FA2sp/Ext/CRandomTree/Hooks.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include #include @@ -43,7 +44,7 @@ DEFINE_HOOK(4D4150, CRandomTree_OnInitDialog, 7) } } - auto thisTheater = CINI::CurrentDocument().GetString("Map", "Theater"); + auto thisTheater = CINIExt::CurrentDocument().GetString("Map", "Theater"); thisTheater.MakeUpper(); thisTheater += "Limits"; int TreeMin = CINI::FAData->GetInteger(thisTheater, "TreeMin"); diff --git a/FA2sp/Ext/CSingleplayerSettings/Body.cpp b/FA2sp/Ext/CSingleplayerSettings/Body.cpp index bfbc1f0b..963c4e70 100644 --- a/FA2sp/Ext/CSingleplayerSettings/Body.cpp +++ b/FA2sp/Ext/CSingleplayerSettings/Body.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include #include @@ -27,7 +28,7 @@ BOOL CSingleplayerSettingsExt::PreTranslateMessageExt(MSG* pMsg) auto pWnd = (ppmfc::CWnd*)this->GetDlgItem(nID); ppmfc::CString buffer; pWnd->GetWindowText(buffer); - CINI::CurrentDocument->WriteString("Ranking", pKey, buffer); + CINIExt::CurrentDocument->WriteString("Ranking", pKey, buffer); }; auto processGeneral = [&pMsg, this](int nID, const char* pKey)// -> bool { @@ -35,9 +36,9 @@ BOOL CSingleplayerSettingsExt::PreTranslateMessageExt(MSG* pMsg) ppmfc::CString buffer; pWnd->GetWindowText(buffer); if (buffer == "") - CINI::CurrentDocument->DeleteKey("General", pKey); + CINIExt::CurrentDocument->DeleteKey("General", pKey); else - CINI::CurrentDocument->WriteString("General", pKey, buffer); + CINIExt::CurrentDocument->WriteString("General", pKey, buffer); }; if (pMsg->hwnd == pWnd->m_hWnd) diff --git a/FA2sp/Ext/CSingleplayerSettings/Hooks.cpp b/FA2sp/Ext/CSingleplayerSettings/Hooks.cpp index 1d105599..042615e3 100644 --- a/FA2sp/Ext/CSingleplayerSettings/Hooks.cpp +++ b/FA2sp/Ext/CSingleplayerSettings/Hooks.cpp @@ -1,4 +1,5 @@ #include "Body.h" +#include "../../Miscs/Hooks.INI.h" #include "../../Helpers/Translations.h" @@ -33,19 +34,19 @@ DEFINE_HOOK(4DA1A6, CSingleplayerSettings_UpdateDialog, 5) { GET(CSingleplayerSettings*, pThis, EDI); - pThis->SetDlgItemText(1356, CINI::CurrentDocument->GetString("Ranking", "ParTimeEasy")); - pThis->SetDlgItemText(1357, CINI::CurrentDocument->GetString("Ranking", "ParTimeMedium")); - pThis->SetDlgItemText(1358, CINI::CurrentDocument->GetString("Ranking", "ParTimeHard")); - pThis->SetDlgItemText(1359, CINI::CurrentDocument->GetString("Ranking", "OverParTitle")); - pThis->SetDlgItemText(1360, CINI::CurrentDocument->GetString("Ranking", "OverParMessage")); - pThis->SetDlgItemText(1361, CINI::CurrentDocument->GetString("Ranking", "UnderParTitle")); - pThis->SetDlgItemText(1362, CINI::CurrentDocument->GetString("Ranking", "UnderParMessage")); - pThis->SetDlgItemText(1366, CINI::CurrentDocument->GetString("General", "CampaignMoneyDeltaEasy")); - pThis->SetDlgItemText(1368, CINI::CurrentDocument->GetString("General", "CampaignMoneyDeltaHard")); - pThis->SetDlgItemText(1370, CINI::CurrentDocument->GetString("General", "SpyMoneyStealPercent")); - pThis->SetDlgItemText(1372, CINI::CurrentDocument->GetString("General", "TeamDelays")); - pThis->SetDlgItemText(1374, CINI::CurrentDocument->GetString("General", "PrismSupportModifier")); - pThis->SetDlgItemText(1376, CINI::CurrentDocument->GetString("General", "DefaultMirageDisguises")); + pThis->SetDlgItemText(1356, CINIExt::CurrentDocument->GetString("Ranking", "ParTimeEasy")); + pThis->SetDlgItemText(1357, CINIExt::CurrentDocument->GetString("Ranking", "ParTimeMedium")); + pThis->SetDlgItemText(1358, CINIExt::CurrentDocument->GetString("Ranking", "ParTimeHard")); + pThis->SetDlgItemText(1359, CINIExt::CurrentDocument->GetString("Ranking", "OverParTitle")); + pThis->SetDlgItemText(1360, CINIExt::CurrentDocument->GetString("Ranking", "OverParMessage")); + pThis->SetDlgItemText(1361, CINIExt::CurrentDocument->GetString("Ranking", "UnderParTitle")); + pThis->SetDlgItemText(1362, CINIExt::CurrentDocument->GetString("Ranking", "UnderParMessage")); + pThis->SetDlgItemText(1366, CINIExt::CurrentDocument->GetString("General", "CampaignMoneyDeltaEasy")); + pThis->SetDlgItemText(1368, CINIExt::CurrentDocument->GetString("General", "CampaignMoneyDeltaHard")); + pThis->SetDlgItemText(1370, CINIExt::CurrentDocument->GetString("General", "SpyMoneyStealPercent")); + pThis->SetDlgItemText(1372, CINIExt::CurrentDocument->GetString("General", "TeamDelays")); + pThis->SetDlgItemText(1374, CINIExt::CurrentDocument->GetString("General", "PrismSupportModifier")); + pThis->SetDlgItemText(1376, CINIExt::CurrentDocument->GetString("General", "DefaultMirageDisguises")); return 0; } \ No newline at end of file diff --git a/FA2sp/Ext/CTileSetBrowserFrame/TabPages/ScriptSort.cpp b/FA2sp/Ext/CTileSetBrowserFrame/TabPages/ScriptSort.cpp index cf49cb56..8eb9c599 100644 --- a/FA2sp/Ext/CTileSetBrowserFrame/TabPages/ScriptSort.cpp +++ b/FA2sp/Ext/CTileSetBrowserFrame/TabPages/ScriptSort.cpp @@ -1,4 +1,5 @@ #include "ScriptSort.h" +#include "../../../Miscs/Hooks.INI.h" #include "../../../FA2sp.h" #include "../../../Helpers/STDHelpers.h" @@ -18,7 +19,7 @@ void ScriptSort::LoadAllTriggers() // TODO : // Optimisze the efficiency SendMessage(this->GetHwnd(), WM_SETREDRAW, FALSE, 0); - if (auto pSection = CINI::CurrentDocument->GetSection("ScriptTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("ScriptTypes")) { for (auto& pair : pSection->GetEntities()) { @@ -51,7 +52,7 @@ BOOL ScriptSort::OnNotify(LPNMTREEVIEW lpNmTreeView) bool Success = false; if (IsWindowVisible(CNewScript::GetHandle())) { - auto pStr = CINI::CurrentDocument->GetString(pID, "Name"); + auto pStr = CINIExt::CurrentDocument->GetString(pID, "Name"); FString space1 = " ("; FString space2 = ")"; @@ -65,7 +66,7 @@ BOOL ScriptSort::OnNotify(LPNMTREEVIEW lpNmTreeView) } //else if (IsWindowVisible(CNewTeamTypes::GetHandle())) //{ - // auto pStr = CINI::CurrentDocument->GetString(pID, "Name"); + // auto pStr = CINIExt::CurrentDocument->GetString(pID, "Name"); // FString space1 = " ("; // FString space2 = ")"; // @@ -270,7 +271,7 @@ HTREEITEM ScriptSort::FindLabel(HTREEITEM hItemParent, LPCSTR pszLabel) const std::vector ScriptSort::GetGroup(FString triggerId, FString& name) const { - FString pSrc = CINI::CurrentDocument->GetString(triggerId, "Name", ""); + FString pSrc = CINIExt::CurrentDocument->GetString(triggerId, "Name", ""); auto ret = std::vector{}; int nStart = pSrc.Find('['); diff --git a/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TagSort.cpp b/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TagSort.cpp index 0a93f1ee..e69e316f 100644 --- a/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TagSort.cpp +++ b/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TagSort.cpp @@ -1,4 +1,5 @@ #include "TagSort.h" +#include "../../../Miscs/Hooks.INI.h" #include "../../../FA2sp.h" #include "../../../Helpers/STDHelpers.h" @@ -32,7 +33,7 @@ void TagSort::LoadAllTriggers() ExtConfigs::InitializeMap = false; this->Clear(); BuildingTags.clear(); - if (auto pObjSection = CINI::CurrentDocument->GetSection("Structures")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("Structures")) { for (auto& pair : pObjSection->GetEntities()) { @@ -42,7 +43,7 @@ void TagSort::LoadAllTriggers() } } AircraftTags.clear(); - if (auto pObjSection = CINI::CurrentDocument->GetSection("Aircraft")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("Aircraft")) { for (auto& pair : pObjSection->GetEntities()) { @@ -52,7 +53,7 @@ void TagSort::LoadAllTriggers() } } UnitTags.clear(); - if (auto pObjSection = CINI::CurrentDocument->GetSection("Units")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("Units")) { for (auto& pair : pObjSection->GetEntities()) { @@ -62,7 +63,7 @@ void TagSort::LoadAllTriggers() } } InfantryTags.clear(); - if (auto pObjSection = CINI::CurrentDocument->GetSection("Infantry")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("Infantry")) { for (auto& pair : pObjSection->GetEntities()) { @@ -72,19 +73,19 @@ void TagSort::LoadAllTriggers() } } TeamTags.clear(); - if (auto pObjSection = CINI::CurrentDocument->GetSection("TeamTypes")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("TeamTypes")) { for (auto& pair : pObjSection->GetEntities()) { - if (CINI::CurrentDocument->SectionExists(pair.second)) + if (CINIExt::CurrentDocument->SectionExists(pair.second)) { - auto tag = CINI::CurrentDocument->GetString(pair.second, "Tag"); + auto tag = CINIExt::CurrentDocument->GetString(pair.second, "Tag"); TeamTags[tag].push_back(pair.second); } } } CellTagTags.clear(); - if (auto pObjSection = CINI::CurrentDocument->GetSection("CellTags")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("CellTags")) { for (auto& pair : pObjSection->GetEntities()) { @@ -92,7 +93,7 @@ void TagSort::LoadAllTriggers() } } TriggerTags.clear(); - if (auto pObjSection = CINI::CurrentDocument->GetSection("Triggers")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("Triggers")) { for (auto& pair : pObjSection->GetEntities()) { @@ -114,7 +115,7 @@ void TagSort::LoadAllTriggers() } } TriggerTagsParent.clear(); - if (auto pObjSection = CINI::CurrentDocument->GetSection("Triggers")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("Triggers")) { for (auto& pair : pObjSection->GetEntities()) { @@ -127,14 +128,14 @@ void TagSort::LoadAllTriggers() } } TagTriggers.clear(); - if (auto pObjSection = CINI::CurrentDocument->GetSection("Tags")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("Tags")) { for (auto& pair : pObjSection->GetEntities()) { auto atoms = FString::SplitString(pair.second); if (atoms.size() > 2) { - if (auto pObjSection = CINI::CurrentDocument->GetSection("Triggers")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("Triggers")) { for (auto& pair2 : pObjSection->GetEntities()) { @@ -150,7 +151,7 @@ void TagSort::LoadAllTriggers() } SendMessage(this->GetHwnd(), WM_SETREDRAW, FALSE, 0); - if (auto pSection = CINI::CurrentDocument->GetSection("Tags")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Tags")) { for (auto& pair : pSection->GetEntities()) { @@ -193,7 +194,7 @@ BOOL TagSort::OnNotify(LPNMTREEVIEW lpNmTreeView) } if (IsWindowVisible(CNewTrigger::GetFirstValidInstance().GetHandle())) { - FString pStr = CINI::CurrentDocument->GetString("Triggers", pID); + FString pStr = CINIExt::CurrentDocument->GetString("Triggers", pID); auto results = FString::SplitString(pStr); if (results.size() > 3) { @@ -211,7 +212,7 @@ BOOL TagSort::OnNotify(LPNMTREEVIEW lpNmTreeView) } if (IsWindowVisible(CNewTeamTypes::GetHandle())) { - FString pStr = CINI::CurrentDocument->GetString(pID, "Name"); + FString pStr = CINIExt::CurrentDocument->GetString(pID, "Name"); FString space1 = " ("; FString space2 = ")"; @@ -249,7 +250,7 @@ BOOL TagSort::OnNotify(LPNMTREEVIEW lpNmTreeView) if (!finished) { - if (auto pSection = CINI::CurrentDocument->GetSection("CellTags")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("CellTags")) { for (auto& pairObj : pSection->GetEntities()) { @@ -472,7 +473,7 @@ HTREEITEM TagSort::FindLabel(HTREEITEM hItemParent, LPCSTR pszLabel) const std::vector TagSort::GetGroup(FString triggerId, FString& name) const { - FString pSrc = CINI::CurrentDocument->GetString("Tags", triggerId, ""); + FString pSrc = CINIExt::CurrentDocument->GetString("Tags", triggerId, ""); auto ret = FString::SplitString(pSrc, 1); pSrc = ret[1]; @@ -510,7 +511,7 @@ void TagSort::AddAttachedTrigger(HTREEITEM hParent, FString triggerID, FString p if (TriggerTags[triggerID] != "") if (HTREEITEM hNode = this->FindLabel(hParent, parentName)) { - FString pTrigger2 = CINI::CurrentDocument->GetString("Triggers", TriggerTags[triggerID], ""); + FString pTrigger2 = CINIExt::CurrentDocument->GetString("Triggers", TriggerTags[triggerID], ""); auto RET2 = FString::SplitString(pTrigger2, 2); pTrigger2 = RET2[2]; pTrigger2 = FString(Translations::TranslateOrDefault("Sort.AttachedTrigger", "Attached Trigger:")) + " " + pTrigger2; @@ -545,7 +546,7 @@ void TagSort::AddAttachedTriggerReverse(HTREEITEM hParent, FString triggerID, FS } } - FString pTrigger2 = CINI::CurrentDocument->GetString("Triggers", parentTrigger, ""); + FString pTrigger2 = CINIExt::CurrentDocument->GetString("Triggers", parentTrigger, ""); auto RET2 = FString::SplitString(pTrigger2, 2); pTrigger2 = RET2[2]; @@ -622,15 +623,15 @@ void TagSort::AddTrigger(std::vector group, FString name, FString id) c auto hTagItem = TreeViewHelper::InsertTreeItem(this->GetHwnd(), text, id, hParent); this->IndexAdd(hParent, text, hTagItem); - auto tag = CINI::CurrentDocument->GetString("Tags", id); + auto tag = CINIExt::CurrentDocument->GetString("Tags", id); auto atoms = FString::SplitString(tag); if (atoms.size() >= 3) { auto& triggerID = atoms[2]; - if (!CINI::CurrentDocument->SectionExists("Triggers")) + if (!CINIExt::CurrentDocument->SectionExists("Triggers")) return; - FString pSrc = CINI::CurrentDocument->GetString("Triggers", triggerID, ""); + FString pSrc = CINIExt::CurrentDocument->GetString("Triggers", triggerID, ""); if (pSrc == "") return; @@ -793,7 +794,7 @@ void TagSort::AddTrigger(std::vector group, FString name, FString id) c if (HTREEITEM hNode = this->FindLabel(hParentTeam, objList)) { - FString uiname = FString(CINI::CurrentDocument->GetString(teamID, "Name")) + " (" + teamID + ")"; + FString uiname = FString(CINIExt::CurrentDocument->GetString(teamID, "Name")) + " (" + teamID + ")"; hParent = hNode; auto hObjItem = TreeViewHelper::InsertTreeItem(this->GetHwnd(), uiname, teamID, hParent); diff --git a/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TaskForceSort.cpp b/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TaskForceSort.cpp index 6087517d..fc8af0cb 100644 --- a/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TaskForceSort.cpp +++ b/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TaskForceSort.cpp @@ -1,4 +1,5 @@ #include "TaskforceSort.h" +#include "../../../Miscs/Hooks.INI.h" #include "../../../FA2sp.h" #include "../../../Helpers/STDHelpers.h" @@ -17,7 +18,7 @@ void TaskforceSort::LoadAllTriggers() // TODO : // Optimisze the efficiency SendMessage(this->GetHwnd(), WM_SETREDRAW, FALSE, 0); - if (auto pSection = CINI::CurrentDocument->GetSection("TaskForces")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("TaskForces")) { for (auto& pair : pSection->GetEntities()) { @@ -49,7 +50,7 @@ BOOL TaskforceSort::OnNotify(LPNMTREEVIEW lpNmTreeView) bool Success = false; if (IsWindowVisible(CNewTaskforce::GetHandle())) { - auto pStr = CINI::CurrentDocument->GetString(pID, "Name"); + auto pStr = CINIExt::CurrentDocument->GetString(pID, "Name"); FString space1 = " ("; FString space2 = ")"; @@ -63,7 +64,7 @@ BOOL TaskforceSort::OnNotify(LPNMTREEVIEW lpNmTreeView) } //else if (IsWindowVisible(CNewTeamTypes::GetHandle())) //{ - // auto pStr = CINI::CurrentDocument->GetString(pID, "Name"); + // auto pStr = CINIExt::CurrentDocument->GetString(pID, "Name"); // FString space1 = " ("; // FString space2 = ")"; // @@ -267,7 +268,7 @@ HTREEITEM TaskforceSort::FindLabel(HTREEITEM hItemParent, LPCSTR pszLabel) const std::vector TaskforceSort::GetGroup(FString triggerId, FString& name) const { - FString pSrc = CINI::CurrentDocument->GetString(triggerId, "Name", ""); + FString pSrc = CINIExt::CurrentDocument->GetString(triggerId, "Name", ""); auto ret = std::vector{}; int nStart = pSrc.Find('['); diff --git a/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TeamSort.cpp b/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TeamSort.cpp index 9860a576..71a1e58a 100644 --- a/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TeamSort.cpp +++ b/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TeamSort.cpp @@ -1,4 +1,5 @@ #include "TeamSort.h" +#include "../../../Miscs/Hooks.INI.h" #include "../../../FA2sp.h" #include "../../../Helpers/STDHelpers.h" @@ -21,7 +22,7 @@ void TeamSort::LoadAllTriggers() // TODO : // Optimisze the efficiency SendMessage(this->GetHwnd(), WM_SETREDRAW, FALSE, 0); - if (auto pSection = CINI::CurrentDocument->GetSection("TeamTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("TeamTypes")) { for (auto& pair : pSection->GetEntities()) { @@ -53,7 +54,7 @@ BOOL TeamSort::OnNotify(LPNMTREEVIEW lpNmTreeView) bool Success = false; if (IsWindowVisible(CNewTeamTypes::GetHandle())) { - auto pStr = CINI::CurrentDocument->GetString(pID, "Name"); + auto pStr = CINIExt::CurrentDocument->GetString(pID, "Name"); FString space1 = " ("; FString space2 = ")"; @@ -68,7 +69,7 @@ BOOL TeamSort::OnNotify(LPNMTREEVIEW lpNmTreeView) } //else if (IsWindowVisible(CNewTrigger::GetHandle())) //{ - // auto pStr = CINI::CurrentDocument->GetString(pID, "Name"); + // auto pStr = CINIExt::CurrentDocument->GetString(pID, "Name"); // FString space = " - "; // for (int i = 0; i < EVENT_PARAM_COUNT; i++) // { @@ -283,7 +284,7 @@ HTREEITEM TeamSort::FindLabel(HTREEITEM hItemParent, LPCSTR pszLabel) const std::vector TeamSort::GetGroup(FString triggerId, FString& name) const { - FString pSrc = CINI::CurrentDocument->GetString(triggerId, "Name", ""); + FString pSrc = CINIExt::CurrentDocument->GetString(triggerId, "Name", ""); auto ret = std::vector{}; int nStart = pSrc.Find('['); diff --git a/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TriggerSort.cpp b/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TriggerSort.cpp index aea5f2ea..94b7f635 100644 --- a/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TriggerSort.cpp +++ b/FA2sp/Ext/CTileSetBrowserFrame/TabPages/TriggerSort.cpp @@ -1,4 +1,5 @@ #include "TriggerSort.h" +#include "../../../Miscs/Hooks.INI.h" #include "../../../FA2sp.h" #include "../../../Helpers/STDHelpers.h" @@ -29,7 +30,7 @@ void TriggerSort::LoadAllTriggers() { CMapDataExt::Triggers.clear(); FMap TagMap; - if (auto pSection = CINI::CurrentDocument().GetSection("Tags")) + if (auto pSection = CINIExt::CurrentDocument().GetSection("Tags")) { for (auto& kvp : pSection->GetEntities()) { @@ -40,7 +41,7 @@ void TriggerSort::LoadAllTriggers() TagMap[tagAtoms[2]] = kvp.first; } } - if (auto pSection = CINI::CurrentDocument->GetSection("Triggers")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Triggers")) { for (const auto& pair : pSection->GetEntities()) { @@ -314,7 +315,7 @@ void TriggerSort::AddAttachedTrigger(HTREEITEM hParent, FString triggerID, FStri if (TriggerTags[triggerID] != "") if (HTREEITEM hNode = this->FindLabel(hParent, parentName)) { - FString pTrigger2 = CINI::CurrentDocument->GetString("Triggers", TriggerTags[triggerID], ""); + FString pTrigger2 = CINIExt::CurrentDocument->GetString("Triggers", TriggerTags[triggerID], ""); auto RET2 = FString::SplitString(pTrigger2); if (RET2.size() > 2) { @@ -349,7 +350,7 @@ void TriggerSort::AddAttachedTriggerReverse(HTREEITEM hParent, FString triggerID } } - FString pTrigger2 = CINI::CurrentDocument->GetString("Triggers", parentTrigger, ""); + FString pTrigger2 = CINIExt::CurrentDocument->GetString("Triggers", parentTrigger, ""); auto RET2 = FString::SplitString(pTrigger2); if (RET2.size() > 2) { @@ -368,7 +369,7 @@ void TriggerSort::AddAttachedTriggerReverse(HTREEITEM hParent, FString triggerID std::vector TriggerSort::GetGroup(FString triggerId, FString& name) const { - FString pSrc = CINI::CurrentDocument->GetString("Triggers", triggerId, ""); + FString pSrc = CINIExt::CurrentDocument->GetString("Triggers", triggerId, ""); auto ret = FString::SplitString(pSrc, 2); pSrc = ret[2]; diff --git a/FA2sp/Ext/CTileSetBrowserFrame/TabPages/WaypointSort.cpp b/FA2sp/Ext/CTileSetBrowserFrame/TabPages/WaypointSort.cpp index 6ae798a8..e649ce76 100644 --- a/FA2sp/Ext/CTileSetBrowserFrame/TabPages/WaypointSort.cpp +++ b/FA2sp/Ext/CTileSetBrowserFrame/TabPages/WaypointSort.cpp @@ -1,4 +1,5 @@ #include "WaypointSort.h" +#include "../../../Miscs/Hooks.INI.h" #include "../../../FA2sp.h" #include "../../../Helpers/STDHelpers.h" @@ -150,7 +151,7 @@ void WaypointSort::LoadAllTriggers() InitCache(); - auto pSection = CINI::CurrentDocument->GetSection("Waypoints"); + auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints"); if (!pSection) { ExtConfigs::InitializeMap = true; @@ -235,7 +236,7 @@ void WaypointSort::LoadAllTriggers() } } - if (auto pScriptSection = CINI::CurrentDocument->GetSection("ScriptTypes")) + if (auto pScriptSection = CINIExt::CurrentDocument->GetSection("ScriptTypes")) { for (auto& pair : pScriptSection->GetEntities()) { @@ -245,7 +246,7 @@ void WaypointSort::LoadAllTriggers() { char id[10]; _itoa(i, id, 10); - auto line = CINI::CurrentDocument->GetString(pair.second, id); + auto line = CINIExt::CurrentDocument->GetString(pair.second, id); if (line == "") continue; @@ -261,7 +262,7 @@ void WaypointSort::LoadAllTriggers() { FString text; text.Format(Translations::TranslateOrDefault("ObjectInfo.Waypoint.Script", - "Script: %s (%s)"), CINI::CurrentDocument->GetString(pair.second, "Name"), pair.second); + "Script: %s (%s)"), CINIExt::CurrentDocument->GetString(pair.second, "Name"), pair.second); std::string textStr = text; std::string idStr = FString(pair.second); for (auto& wp : scriptWPs) @@ -270,19 +271,19 @@ void WaypointSort::LoadAllTriggers() } } - if (auto pTeamSection = CINI::CurrentDocument->GetSection("TeamTypes")) + if (auto pTeamSection = CINIExt::CurrentDocument->GetSection("TeamTypes")) { for (auto& pair : pTeamSection->GetEntities()) { - auto wp = CINI::CurrentDocument->GetString(pair.second, "Waypoint"); - auto wp2 = CINI::CurrentDocument->GetString(pair.second, "TransportWaypoint"); + auto wp = CINIExt::CurrentDocument->GetString(pair.second, "Waypoint"); + auto wp2 = CINIExt::CurrentDocument->GetString(pair.second, "TransportWaypoint"); int wpNum = ProcessWaypointLetter(wp); int wpNum2 = ProcessWaypointLetter(wp2); - if (wpNum >= 0 || wpNum2 >= 0 && CINI::CurrentDocument->GetBool(pair.second, "UseTransportOrigin")) + if (wpNum >= 0 || wpNum2 >= 0 && CINIExt::CurrentDocument->GetBool(pair.second, "UseTransportOrigin")) { FString text; text.Format(Translations::TranslateOrDefault("ObjectInfo.Waypoint.Team", - "Team: %s (%s)"), CINI::CurrentDocument->GetString(pair.second, "Name"), pair.second); + "Team: %s (%s)"), CINIExt::CurrentDocument->GetString(pair.second, "Name"), pair.second); std::string textStr = text; std::string idStr = FString(pair.second); @@ -361,7 +362,7 @@ BOOL WaypointSort::OnNotify(LPNMTREEVIEW lpNmTreeView) bool Success = false; if (strlen(pID) && ExtConfigs::InitializeMap) { - if (auto pCord = CINI::CurrentDocument->TryGetString("Waypoints", pID)) + if (auto pCord = CINIExt::CurrentDocument->TryGetString("Waypoints", pID)) { auto second = atoi(*pCord); if (second > 0) @@ -371,7 +372,7 @@ BOOL WaypointSort::OnNotify(LPNMTREEVIEW lpNmTreeView) } if (IsWindowVisible(CNewTrigger::GetFirstValidInstance().GetHandle())) { - FString pStr = CINI::CurrentDocument->GetString("Triggers", pID); + FString pStr = CINIExt::CurrentDocument->GetString("Triggers", pID); auto results = FString::SplitString(pStr); if (results.size() > 3) { @@ -389,7 +390,7 @@ BOOL WaypointSort::OnNotify(LPNMTREEVIEW lpNmTreeView) } if (IsWindowVisible(CNewScript::GetHandle())) { - FString pStr = CINI::CurrentDocument->GetString(pID, "Name"); + FString pStr = CINIExt::CurrentDocument->GetString(pID, "Name"); FString space1 = " ("; FString space2 = ")"; @@ -403,7 +404,7 @@ BOOL WaypointSort::OnNotify(LPNMTREEVIEW lpNmTreeView) } if (IsWindowVisible(CNewTeamTypes::GetHandle())) { - FString pStr = CINI::CurrentDocument->GetString(pID, "Name"); + FString pStr = CINIExt::CurrentDocument->GetString(pID, "Name"); FString space1 = " ("; FString space2 = ")"; @@ -549,7 +550,7 @@ HTREEITEM WaypointSort::FindLabel(HTREEITEM hItemParent, LPCSTR pszLabel) const std::vector WaypointSort::GetGroup(FString triggerId, FString& name) const { - FString pSrc = CINI::CurrentDocument->GetString(triggerId, "Name", ""); + FString pSrc = CINIExt::CurrentDocument->GetString(triggerId, "Name", ""); auto ret = std::vector{}; int nStart = pSrc.Find('['); @@ -691,7 +692,7 @@ void WaypointSort::AddTrigger(FString triggerId, int x, int y) const } } - if (auto pSection = CINI::CurrentDocument->GetSection("ScriptTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("ScriptTypes")) { for (auto& pair : pSection->GetEntities()) { @@ -701,7 +702,7 @@ void WaypointSort::AddTrigger(FString triggerId, int x, int y) const { char id[10]; _itoa(i, id, 10); - auto line = CINI::CurrentDocument->GetString(pair.second, id); + auto line = CINIExt::CurrentDocument->GetString(pair.second, id); if (line == "") continue; @@ -717,12 +718,12 @@ void WaypointSort::AddTrigger(FString triggerId, int x, int y) const { FString text; text.Format(Translations::TranslateOrDefault("ObjectInfo.Waypoint.Script", - "Script: %s (%s)"), CINI::CurrentDocument->GetString(pair.second, "Name"), pair.second); + "Script: %s (%s)"), CINIExt::CurrentDocument->GetString(pair.second, "Name"), pair.second); TreeViewHelper::InsertTreeItem(this->GetHwnd(), text, pair.second, hParent); } } } - if (auto pSection = CINI::CurrentDocument->GetSection("TeamTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("TeamTypes")) { auto process = [](const char* s) { @@ -740,15 +741,15 @@ void WaypointSort::AddTrigger(FString triggerId, int x, int y) const }; for (auto& pair : pSection->GetEntities()) { - auto wp = CINI::CurrentDocument->GetString(pair.second, "Waypoint"); - auto wp2 = CINI::CurrentDocument->GetString(pair.second, "TransportWaypoint"); + auto wp = CINIExt::CurrentDocument->GetString(pair.second, "Waypoint"); + auto wp2 = CINIExt::CurrentDocument->GetString(pair.second, "TransportWaypoint"); if (process(wp) == atoi(triggerId) - || (process(wp2) == atoi(triggerId) && CINI::CurrentDocument->GetBool(pair.second, "UseTransportOrigin"))) + || (process(wp2) == atoi(triggerId) && CINIExt::CurrentDocument->GetBool(pair.second, "UseTransportOrigin"))) { FString text; text.Format(Translations::TranslateOrDefault("ObjectInfo.Waypoint.Team", - "Team: %s (%s)"), CINI::CurrentDocument->GetString(pair.second, "Name"), pair.second); + "Team: %s (%s)"), CINIExt::CurrentDocument->GetString(pair.second, "Name"), pair.second); TreeViewHelper::InsertTreeItem(this->GetHwnd(), text, pair.second, hParent); } } diff --git a/FA2sp/ExtraWindow/CBatchTrigger/CBatchTrigger.cpp b/FA2sp/ExtraWindow/CBatchTrigger/CBatchTrigger.cpp index 381b84ff..ceaf7ae9 100644 --- a/FA2sp/ExtraWindow/CBatchTrigger/CBatchTrigger.cpp +++ b/FA2sp/ExtraWindow/CBatchTrigger/CBatchTrigger.cpp @@ -21,7 +21,7 @@ HWND CBatchTrigger::m_hwnd; CFinalSunDlg* CBatchTrigger::m_parent; -CINI& CBatchTrigger::map = CINI::CurrentDocument; +CINIExt& CBatchTrigger::map = CINIExt::CurrentDocument; MultimapHelper& CBatchTrigger::rules = Variables::RulesMap; HWND CBatchTrigger::hListbox; @@ -720,9 +720,9 @@ void CBatchTrigger::Update(bool afterInit, bool updateTrigger) tagNameIndex.clear(); teamNameIndex.clear(); - auto pTag = CINI::CurrentDocument().GetSection("Tags"); - auto pTrigger = CINI::CurrentDocument().GetSection("Triggers"); - auto pTeam = CINI::CurrentDocument().GetSection("TeamTypes"); + auto pTag = CINIExt::CurrentDocument().GetSection("Tags"); + auto pTrigger = CINIExt::CurrentDocument().GetSection("Triggers"); + auto pTeam = CINIExt::CurrentDocument().GetSection("TeamTypes"); objects.reserve( (pTag ? pTag->GetEntities().size() : 0) + diff --git a/FA2sp/ExtraWindow/CBatchTrigger/CBatchTrigger.h b/FA2sp/ExtraWindow/CBatchTrigger/CBatchTrigger.h index f1000c4d..8063b8c2 100644 --- a/FA2sp/ExtraWindow/CBatchTrigger/CBatchTrigger.h +++ b/FA2sp/ExtraWindow/CBatchTrigger/CBatchTrigger.h @@ -11,6 +11,7 @@ class Trigger; class HelpDlg; +class CINIExt; struct CellColor { int row; @@ -120,7 +121,7 @@ class CBatchTrigger private: static HWND m_hwnd; static CFinalSunDlg* m_parent; - static CINI& map; + static CINIExt& map; static MultimapHelper& rules; static HWND hListbox; diff --git a/FA2sp/ExtraWindow/CLuaConsole/CLuaConsole.cpp b/FA2sp/ExtraWindow/CLuaConsole/CLuaConsole.cpp index 52d82005..59bb6b3a 100644 --- a/FA2sp/ExtraWindow/CLuaConsole/CLuaConsole.cpp +++ b/FA2sp/ExtraWindow/CLuaConsole/CLuaConsole.cpp @@ -229,13 +229,13 @@ void CLuaConsole::InitializeLuaState() Lua.set_function("local_height", []() {return CMapData::Instance->LocalSize.Height; }); Lua.set_function("local_top", []() {return CMapData::Instance->LocalSize.Top; }); Lua.set_function("local_left", []() {return CMapData::Instance->LocalSize.Left; }); - Lua.set_function("waypoint_count", []() {return CINI::CurrentDocument->GetKeyCount("Waypoints"); }); - Lua.set_function("unit_count", []() {return CINI::CurrentDocument->GetKeyCount("Units"); }); - Lua.set_function("infantry_count", []() {return CINI::CurrentDocument->GetKeyCount("Infantry"); }); - Lua.set_function("building_count", []() {return CINI::CurrentDocument->GetKeyCount("Structures"); }); - Lua.set_function("aircraft_count", []() {return CINI::CurrentDocument->GetKeyCount("Aircraft"); }); - Lua.set_function("terrain_count", []() {return CINI::CurrentDocument->GetKeyCount("Terrain"); }); - Lua.set_function("smudge_count", []() {return CINI::CurrentDocument->GetKeyCount("Smudge"); }); + Lua.set_function("waypoint_count", []() {return CINIExt::CurrentDocument->GetKeyCount("Waypoints"); }); + Lua.set_function("unit_count", []() {return CINIExt::CurrentDocument->GetKeyCount("Units"); }); + Lua.set_function("infantry_count", []() {return CINIExt::CurrentDocument->GetKeyCount("Infantry"); }); + Lua.set_function("building_count", []() {return CINIExt::CurrentDocument->GetKeyCount("Structures"); }); + Lua.set_function("aircraft_count", []() {return CINIExt::CurrentDocument->GetKeyCount("Aircraft"); }); + Lua.set_function("terrain_count", []() {return CINIExt::CurrentDocument->GetKeyCount("Terrain"); }); + Lua.set_function("smudge_count", []() {return CINIExt::CurrentDocument->GetKeyCount("Smudge"); }); Lua.set_function("player_count", []() { if (CMapData::Instance->IsMultiOnly()) { @@ -244,7 +244,7 @@ void CLuaConsole::InitializeLuaState() { FString key; key.Format("%d", i); - if (CINI::CurrentDocument->TryGetString("Waypoints", key) != nullptr) + if (CINIExt::CurrentDocument->TryGetString("Waypoints", key) != nullptr) wp_count++; } return wp_count; @@ -254,35 +254,35 @@ void CLuaConsole::InitializeLuaState() return 1; } }); - Lua.set_function("house_count", []() { return CINI::CurrentDocument->GetKeyCount("Houses"); }); - Lua.set_function("country_count", []() { return CINI::CurrentDocument->GetKeyCount("Countries"); }); + Lua.set_function("house_count", []() { return CINIExt::CurrentDocument->GetKeyCount("Houses"); }); + Lua.set_function("country_count", []() { return CINIExt::CurrentDocument->GetKeyCount("Countries"); }); Lua.set_function("node_count", [](std::string house) { if (house == "") { - if (auto pSection = CINI::CurrentDocument->GetSection("Houses")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Houses")) { int count = 0; for (auto& [_, house] : pSection->GetEntities()) { - count += CINI::CurrentDocument->GetInteger(house, "NodeCount"); + count += CINIExt::CurrentDocument->GetInteger(house, "NodeCount"); } return count; } } - if (!CINI::CurrentDocument->TryGetString("Houses", house.c_str())) + if (!CINIExt::CurrentDocument->TryGetString("Houses", house.c_str())) { house += " House"; } - if (auto pSection = CINI::CurrentDocument->GetSection(house.c_str())) + if (auto pSection = CINIExt::CurrentDocument->GetSection(house.c_str())) { return pSection->GetInteger("NodeCount"); } return 0; }); - Lua.set_function("trigger_count", []() { return CINI::CurrentDocument->GetKeyCount("Triggers"); }); + Lua.set_function("trigger_count", []() { return CINIExt::CurrentDocument->GetKeyCount("Triggers"); }); Lua.set_function("tile_count", []() { return CMapDataExt::TileDataCount; }); Lua.set_function("tile_set_count", []() { return CMapDataExt::TileSet_starts.size() - 1; }); - Lua.set_function("tag_count", []() { return CINI::CurrentDocument->GetKeyCount("Tags"); }); - Lua.set_function("theater", []() {return CINI::CurrentDocument->GetString("Map", "Theater").GetString(); }); + Lua.set_function("tag_count", []() { return CINIExt::CurrentDocument->GetKeyCount("Tags"); }); + Lua.set_function("theater", []() {return CINIExt::CurrentDocument->GetString("Map", "Theater").GetString(); }); Lua.set_function("is_multiplay", []() {return CMapData::Instance->IsMultiOnly(); }); Lua.set_function("language", []() {return (std::string)FinalAlertConfig::Language; }); Lua.set_function("exe_path", []() {return (std::string)CFinalSunAppExt::ExePathExt; }); diff --git a/FA2sp/ExtraWindow/CLuaConsole/CMcpServer.cpp b/FA2sp/ExtraWindow/CLuaConsole/CMcpServer.cpp index dcbc70b0..52e58eab 100644 --- a/FA2sp/ExtraWindow/CLuaConsole/CMcpServer.cpp +++ b/FA2sp/ExtraWindow/CLuaConsole/CMcpServer.cpp @@ -112,7 +112,7 @@ static std::string GetRelativePath(const std::filesystem::path& full, const std: // --------------------------------------------------------------------------- static std::string GetIniSection(const std::string& section) { - auto& pMap = CINI::CurrentDocument; + auto& pMap = CINIExt::CurrentDocument; auto pSection = pMap->GetSection(section.c_str()); if (!pSection) return "Section \"" + section + "\" not found or empty."; @@ -965,7 +965,7 @@ bool CMcpServer::IsRunning() static std::string CaptureMapIniState() { std::ostringstream oss; - for (auto& section : CINI::CurrentDocument->Dict) + for (auto& section : CINIExt::CurrentDocument->Dict) { if (!strcmp(section.first, "Preview") || !strcmp(section.first, "PreviewPack") diff --git a/FA2sp/ExtraWindow/CLuaConsole/LuaFunctions.cpp b/FA2sp/ExtraWindow/CLuaConsole/LuaFunctions.cpp index 144c4004..37fc4a88 100644 --- a/FA2sp/ExtraWindow/CLuaConsole/LuaFunctions.cpp +++ b/FA2sp/ExtraWindow/CLuaConsole/LuaFunctions.cpp @@ -603,7 +603,7 @@ namespace LuaFunctions } ini->ClearAndLoad(GetINIPath()); presets.clear(); - auto currentTheater = CINI::CurrentDocument->GetString("Map", "Theater"); + auto currentTheater = CINIExt::CurrentDocument->GetString("Map", "Theater"); auto itr = ini->Dict.begin(); for (size_t i = 0, sz = ini->Dict.size(); i < sz; ++i, ++itr) { @@ -693,7 +693,7 @@ namespace LuaFunctions if (!ini->SectionExists(ID)) { ini->WriteString(ID, "Name", name.c_str()); ini->WriteString(ID, "Scale", "25"); - ini->WriteString(ID, "Theaters", CINI::CurrentDocument->GetString("Map", "Theater")); + ini->WriteString(ID, "Theaters", CINIExt::CurrentDocument->GetString("Map", "Theater")); auto preset = std::shared_ptr(TerrainGeneratorPreset::create(ID, ini->GetSection(ID))); presets[ID] = preset; current = preset; @@ -1277,13 +1277,13 @@ namespace LuaFunctions } void remove() const { - for (int i = 0; i < CINI::CurrentDocument->GetKeyCount("Infantry"); ++i) + for (int i = 0; i < CINIExt::CurrentDocument->GetKeyCount("Infantry"); ++i) { CInfantryData obj; CMapData::Instance->GetInfantryData(i, obj); if (*this == convert(obj)) { - //CINI::CurrentDocument->DeleteKey("Infantry", CINI::CurrentDocument->GetKeyAt("Infantry", i)); + //CINIExt::CurrentDocument->DeleteKey("Infantry", CINIExt::CurrentDocument->GetKeyAt("Infantry", i)); CMapData::Instance->DeleteInfantryData(i); CLuaConsole::needRedraw = true; CLuaConsole::updateInfantry = true; @@ -1386,13 +1386,13 @@ namespace LuaFunctions } void remove() const { - for (int i = 0; i < CINI::CurrentDocument->GetKeyCount("Units"); ++i) + for (int i = 0; i < CINIExt::CurrentDocument->GetKeyCount("Units"); ++i) { CUnitData obj; CMapData::Instance->GetUnitData(i, obj); if (*this == convert(obj)) { - CINI::CurrentDocument->DeleteKey("Units", CINI::CurrentDocument->GetKeyAt("Units", i)); + CINIExt::CurrentDocument->DeleteKey("Units", CINIExt::CurrentDocument->GetKeyAt("Units", i)); CLuaConsole::needRedraw = true; CLuaConsole::updateUnit = true; CLuaConsole::updateMinimap = true; @@ -1484,13 +1484,13 @@ namespace LuaFunctions } void remove() const { - for (int i = 0; i < CINI::CurrentDocument->GetKeyCount("Aircraft"); ++i) + for (int i = 0; i < CINIExt::CurrentDocument->GetKeyCount("Aircraft"); ++i) { CAircraftData obj; CMapData::Instance->GetAircraftData(i, obj); if (*this == convert(obj)) { - CINI::CurrentDocument->DeleteKey("Aircraft", CINI::CurrentDocument->GetKeyAt("Aircraft", i)); + CINIExt::CurrentDocument->DeleteKey("Aircraft", CINIExt::CurrentDocument->GetKeyAt("Aircraft", i)); CLuaConsole::needRedraw = true; CLuaConsole::updateAircraft = true; CLuaConsole::updateMinimap = true; @@ -1572,7 +1572,7 @@ namespace LuaFunctions this->PoweredOn, this->Upgrades, this->SpotLight, this->Upgrade1, this->Upgrade2, this->Upgrade3, this->AIRepairable, this->Nominal); - CINI::CurrentDocument->WriteString("Structures", id, value); + CINIExt::CurrentDocument->WriteString("Structures", id, value); CLuaConsole::needRedraw = true; CLuaConsole::updateBuilding = true; } @@ -1583,20 +1583,20 @@ namespace LuaFunctions if (this->X == -1 || this->Y == -1) return; auto cell = CMapData::Instance->TryGetCellAt(this->X, this->Y); - if (auto pHouse = CINI::CurrentDocument->GetSection(this->House.c_str())) + if (auto pHouse = CINIExt::CurrentDocument->GetSection(this->House.c_str())) { for (int i = 0; i < 1000; ++i) { FString key; key.Format("%03d", i); - if (!CINI::CurrentDocument->KeyExists(this->House.c_str(), key)) + if (!CINIExt::CurrentDocument->KeyExists(this->House.c_str(), key)) { FString count; FString value; count.Format("%d", i + 1); value.Format("%s,%d,%d", this->TypeID, this->Y, this->X); - CINI::CurrentDocument->WriteString(this->House.c_str(), "NodeCount", count); - CINI::CurrentDocument->WriteString(this->House.c_str(), key, value); + CINIExt::CurrentDocument->WriteString(this->House.c_str(), "NodeCount", count); + CINIExt::CurrentDocument->WriteString(this->House.c_str(), key, value); CLuaConsole::updateNode = true; CLuaConsole::needRedraw = true; if (deleteBuilding && cell->Structure > -1) @@ -1611,13 +1611,13 @@ namespace LuaFunctions } void remove() const { - for (int i = 0; i < CINI::CurrentDocument->GetKeyCount("Structures"); ++i) + for (int i = 0; i < CINIExt::CurrentDocument->GetKeyCount("Structures"); ++i) { CBuildingData obj; CMapDataExt::GetBuildingDataByIniID(i, obj); if (*this == convert(obj)) { - CINI::CurrentDocument->DeleteKey("Structures", CINI::CurrentDocument->GetKeyAt("Structures", i)); + CINIExt::CurrentDocument->DeleteKey("Structures", CINIExt::CurrentDocument->GetKeyAt("Structures", i)); CLuaConsole::needRedraw = true; CLuaConsole::updateBuilding = true; CLuaConsole::updateMinimap = true; @@ -1879,7 +1879,7 @@ namespace LuaFunctions type = EIndexType::Generic; auto v = VEHGuard(false); - auto& ini = CINI::CurrentDocument; + auto& ini = CINIExt::CurrentDocument; const int initNumber = 1000000; const char* suffix = ""; @@ -2152,7 +2152,7 @@ namespace LuaFunctions if (0 <= index && index < Tags.size()) { if (removeIni) - CINI::CurrentDocument->DeleteKey("Tags", Tags[index].ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("Tags", Tags[index].ID.c_str()); UsedINIIndices.erase(Tags[index].ID); Tags.erase(Tags.begin() + index); } @@ -2162,7 +2162,7 @@ namespace LuaFunctions for (int i = 0; i < Tags.size(); ++i) { if (removeIni) - CINI::CurrentDocument->DeleteKey("Tags", Tags[i].ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("Tags", Tags[i].ID.c_str()); UsedINIIndices.erase(Tags[i].ID); } Tags.clear(); @@ -2483,13 +2483,13 @@ namespace LuaFunctions FString trigger; trigger.Format("%s,%s,%s,%s,%s,%s,%s,%s", House.c_str(), AttachedTrigger.c_str(), Name.c_str(), Disabled ? "1" : "0", EasyEnabled ? "1" : "0", MediumEnabled ? "1" : "0", HardEnabled ? "1" : "0", Obsolete.c_str()); - CINI::CurrentDocument->WriteString("Triggers", ID.c_str(), trigger); + CINIExt::CurrentDocument->WriteString("Triggers", ID.c_str(), trigger); for (const auto& tag : Tags) { FString tagStr; tagStr.Format("%s,%s,%s", tag.RepeatType.c_str(), tag.Name.c_str(), ID.c_str()); - CINI::CurrentDocument->WriteString("Tags", tag.ID.c_str(), tagStr); + CINIExt::CurrentDocument->WriteString("Tags", tag.ID.c_str(), tagStr); } FString events; @@ -2499,7 +2499,7 @@ namespace LuaFunctions events += ","; events += e.c_str(); } - CINI::CurrentDocument->WriteString("Events", ID.c_str(), events); + CINIExt::CurrentDocument->WriteString("Events", ID.c_str(), events); FString actions; actions.Format("%d", Actions.size()); @@ -2513,21 +2513,21 @@ namespace LuaFunctions if (validate.GetLength() >= 512) write_lua_console(std::format("Warn: length of action {} exceeds 512.", ID)); - CINI::CurrentDocument->WriteString("Actions", ID.c_str(), actions); + CINIExt::CurrentDocument->WriteString("Actions", ID.c_str(), actions); CMapDataExt::AddTrigger(ID.c_str()); UsedINIIndices.insert(ID); CLuaConsole::updateTrigger = true; } void delete_trigger_self(bool keepTag) { - CINI::CurrentDocument->DeleteKey("Triggers", ID.c_str()); - CINI::CurrentDocument->DeleteKey("Events", ID.c_str()); - CINI::CurrentDocument->DeleteKey("Actions", ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("Triggers", ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("Events", ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("Actions", ID.c_str()); if (!keepTag) { for (const auto& tag : Tags) { - CINI::CurrentDocument->DeleteKey("Tags", tag.ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("Tags", tag.ID.c_str()); } } @@ -2537,13 +2537,13 @@ namespace LuaFunctions } static void delete_trigger(std::string ID, bool keepTag) { - CINI::CurrentDocument->DeleteKey("Triggers", ID.c_str()); - CINI::CurrentDocument->DeleteKey("Events", ID.c_str()); - CINI::CurrentDocument->DeleteKey("Actions", ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("Triggers", ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("Events", ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("Actions", ID.c_str()); if (!keepTag) { std::vector keys; - if (auto pSection = CINI::CurrentDocument->GetSection("Tags")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Tags")) { for (const auto& [key, value] : pSection->GetEntities()) { @@ -2553,7 +2553,7 @@ namespace LuaFunctions } } for (auto& key : keys) - CINI::CurrentDocument->DeleteKey("Tags", key); + CINIExt::CurrentDocument->DeleteKey("Tags", key); } CMapDataExt::DeleteTrigger(ID.c_str()); UsedINIIndices.erase(ID); @@ -2563,13 +2563,13 @@ namespace LuaFunctions { if (!keepTrigger) { - auto&& atoms = STDHelpers::SplitString(CINI::CurrentDocument->GetString("Tags", ID.c_str()), 2); - CINI::CurrentDocument->DeleteKey("Triggers", atoms[2]); - CINI::CurrentDocument->DeleteKey("Events", atoms[2]); - CINI::CurrentDocument->DeleteKey("Actions", atoms[2]); + auto&& atoms = STDHelpers::SplitString(CINIExt::CurrentDocument->GetString("Tags", ID.c_str()), 2); + CINIExt::CurrentDocument->DeleteKey("Triggers", atoms[2]); + CINIExt::CurrentDocument->DeleteKey("Events", atoms[2]); + CINIExt::CurrentDocument->DeleteKey("Actions", atoms[2]); CMapDataExt::DeleteTrigger(atoms[2]); } - CINI::CurrentDocument->DeleteKey("Tags", ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("Tags", ID.c_str()); CLuaConsole::updateTrigger = true; } static sol::object get_trigger(std::string ID) @@ -2585,7 +2585,7 @@ namespace LuaFunctions ret.EasyEnabled = t->EasyEnabled; ret.MediumEnabled = t->MediumEnabled; ret.HardEnabled = t->HardEnabled; - if (auto pSection = CINI::CurrentDocument->GetSection("Tags")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Tags")) { for (const auto& [key, value] : pSection->GetEntities()) { @@ -2632,7 +2632,7 @@ namespace LuaFunctions static std::vector get_triggers() { std::vector ret; - if (auto pSection = CINI::CurrentDocument->GetSection("Triggers")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Triggers")) { for (const auto& [key, value] : pSection->GetEntities()) { @@ -2726,11 +2726,11 @@ namespace LuaFunctions static sol::object get_team(std::string id) { bool found = false; - if (auto pSection = CINI::CurrentDocument->GetSection("TeamTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("TeamTypes")) { for (const auto& [key, value] : pSection->GetEntities()) { - if (value == id.c_str() && CINI::CurrentDocument->SectionExists(value)) + if (value == id.c_str() && CINIExt::CurrentDocument->SectionExists(value)) { found = true; break; @@ -2741,41 +2741,41 @@ namespace LuaFunctions { team ret; ret.ID = id; - ret.Name = CINI::CurrentDocument->GetString(id.c_str(), "Name", "New Teamtype").GetString(); - ret.House = CINI::CurrentDocument->GetString(id.c_str(), "House").GetString(); - ret.Taskforce = CINI::CurrentDocument->GetString(id.c_str(), "TaskForce").GetString(); - ret.Script = CINI::CurrentDocument->GetString(id.c_str(), "Script").GetString(); - ret.Tag = CINI::CurrentDocument->GetString(id.c_str(), "Tag").GetString(); - ret.VeteranLevel = CINI::CurrentDocument->GetString(id.c_str(), "VeteranLevel").GetString(); - ret.Priority = CINI::CurrentDocument->GetString(id.c_str(), "Priority").GetString(); - ret.Max = CINI::CurrentDocument->GetString(id.c_str(), "Max").GetString(); - ret.Techlevel = CINI::CurrentDocument->GetString(id.c_str(), "TechLevel").GetString(); - if (CINI::CurrentDocument->KeyExists(id.c_str(), "TransportWaypoint")) - ret.TransportWaypoint = STDHelpers::StringToWaypointStr(CINI::CurrentDocument->GetString(id.c_str(), "TransportWaypoint")).GetString(); - ret.Group = CINI::CurrentDocument->GetString(id.c_str(), "Group").GetString(); - ret.Waypoint = STDHelpers::StringToWaypointStr(CINI::CurrentDocument->GetString(id.c_str(), "Waypoint")).GetString(); - ret.MindControlDecision = CINI::CurrentDocument->GetString(id.c_str(), "MindControlDecision").GetString(); - ret.Full = CINI::CurrentDocument->GetBool(id.c_str(), "Full"); - ret.Whiner = CINI::CurrentDocument->GetBool(id.c_str(), "Whiner"); - ret.Droppod = CINI::CurrentDocument->GetBool(id.c_str(), "Droppod"); - ret.Suicide = CINI::CurrentDocument->GetBool(id.c_str(), "Suicide"); - ret.Loadable = CINI::CurrentDocument->GetBool(id.c_str(), "Loadable"); - ret.Prebuild = CINI::CurrentDocument->GetBool(id.c_str(), "Prebuild"); - ret.Annoyance = CINI::CurrentDocument->GetBool(id.c_str(), "Annoyance"); - ret.IonImmune = CINI::CurrentDocument->GetBool(id.c_str(), "IonImmune"); - ret.Recruiter = CINI::CurrentDocument->GetBool(id.c_str(), "Recruiter"); - ret.Reinforce = CINI::CurrentDocument->GetBool(id.c_str(), "Reinforce"); - ret.Aggressive = CINI::CurrentDocument->GetBool(id.c_str(), "Aggressive"); - ret.Autocreate = CINI::CurrentDocument->GetBool(id.c_str(), "Autocreate"); - ret.GuardSlower = CINI::CurrentDocument->GetBool(id.c_str(), "GuardSlower"); - ret.OnTransOnly = CINI::CurrentDocument->GetBool(id.c_str(), "OnTransOnly"); - ret.AvoidThreats = CINI::CurrentDocument->GetBool(id.c_str(), "AvoidThreats"); - ret.LooseRecruit = CINI::CurrentDocument->GetBool(id.c_str(), "LooseRecruit"); - ret.IsBaseDefense = CINI::CurrentDocument->GetBool(id.c_str(), "IsBaseDefense"); - ret.UseTransportOrigin = CINI::CurrentDocument->GetBool(id.c_str(), "UseTransportOrigin"); - ret.OnlyTargetHouseEnemy = CINI::CurrentDocument->GetBool(id.c_str(), "OnlyTargetHouseEnemy"); - ret.TransportsReturnOnUnload = CINI::CurrentDocument->GetBool(id.c_str(), "TransportsReturnOnUnload"); - ret.AreTeamMembersRecruitable = CINI::CurrentDocument->GetBool(id.c_str(), "AreTeamMembersRecruitable"); + ret.Name = CINIExt::CurrentDocument->GetString(id.c_str(), "Name", "New Teamtype").GetString(); + ret.House = CINIExt::CurrentDocument->GetString(id.c_str(), "House").GetString(); + ret.Taskforce = CINIExt::CurrentDocument->GetString(id.c_str(), "TaskForce").GetString(); + ret.Script = CINIExt::CurrentDocument->GetString(id.c_str(), "Script").GetString(); + ret.Tag = CINIExt::CurrentDocument->GetString(id.c_str(), "Tag").GetString(); + ret.VeteranLevel = CINIExt::CurrentDocument->GetString(id.c_str(), "VeteranLevel").GetString(); + ret.Priority = CINIExt::CurrentDocument->GetString(id.c_str(), "Priority").GetString(); + ret.Max = CINIExt::CurrentDocument->GetString(id.c_str(), "Max").GetString(); + ret.Techlevel = CINIExt::CurrentDocument->GetString(id.c_str(), "TechLevel").GetString(); + if (CINIExt::CurrentDocument->KeyExists(id.c_str(), "TransportWaypoint")) + ret.TransportWaypoint = STDHelpers::StringToWaypointStr(CINIExt::CurrentDocument->GetString(id.c_str(), "TransportWaypoint")).GetString(); + ret.Group = CINIExt::CurrentDocument->GetString(id.c_str(), "Group").GetString(); + ret.Waypoint = STDHelpers::StringToWaypointStr(CINIExt::CurrentDocument->GetString(id.c_str(), "Waypoint")).GetString(); + ret.MindControlDecision = CINIExt::CurrentDocument->GetString(id.c_str(), "MindControlDecision").GetString(); + ret.Full = CINIExt::CurrentDocument->GetBool(id.c_str(), "Full"); + ret.Whiner = CINIExt::CurrentDocument->GetBool(id.c_str(), "Whiner"); + ret.Droppod = CINIExt::CurrentDocument->GetBool(id.c_str(), "Droppod"); + ret.Suicide = CINIExt::CurrentDocument->GetBool(id.c_str(), "Suicide"); + ret.Loadable = CINIExt::CurrentDocument->GetBool(id.c_str(), "Loadable"); + ret.Prebuild = CINIExt::CurrentDocument->GetBool(id.c_str(), "Prebuild"); + ret.Annoyance = CINIExt::CurrentDocument->GetBool(id.c_str(), "Annoyance"); + ret.IonImmune = CINIExt::CurrentDocument->GetBool(id.c_str(), "IonImmune"); + ret.Recruiter = CINIExt::CurrentDocument->GetBool(id.c_str(), "Recruiter"); + ret.Reinforce = CINIExt::CurrentDocument->GetBool(id.c_str(), "Reinforce"); + ret.Aggressive = CINIExt::CurrentDocument->GetBool(id.c_str(), "Aggressive"); + ret.Autocreate = CINIExt::CurrentDocument->GetBool(id.c_str(), "Autocreate"); + ret.GuardSlower = CINIExt::CurrentDocument->GetBool(id.c_str(), "GuardSlower"); + ret.OnTransOnly = CINIExt::CurrentDocument->GetBool(id.c_str(), "OnTransOnly"); + ret.AvoidThreats = CINIExt::CurrentDocument->GetBool(id.c_str(), "AvoidThreats"); + ret.LooseRecruit = CINIExt::CurrentDocument->GetBool(id.c_str(), "LooseRecruit"); + ret.IsBaseDefense = CINIExt::CurrentDocument->GetBool(id.c_str(), "IsBaseDefense"); + ret.UseTransportOrigin = CINIExt::CurrentDocument->GetBool(id.c_str(), "UseTransportOrigin"); + ret.OnlyTargetHouseEnemy = CINIExt::CurrentDocument->GetBool(id.c_str(), "OnlyTargetHouseEnemy"); + ret.TransportsReturnOnUnload = CINIExt::CurrentDocument->GetBool(id.c_str(), "TransportsReturnOnUnload"); + ret.AreTeamMembersRecruitable = CINIExt::CurrentDocument->GetBool(id.c_str(), "AreTeamMembersRecruitable"); return sol::make_object(CLuaConsole::Lua, ret); } @@ -2787,92 +2787,92 @@ namespace LuaFunctions } void apply() { - if (auto pSection = CINI::CurrentDocument->GetSection("TeamTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("TeamTypes")) { for (const auto& [key, value] : pSection->GetEntities()) { if (value == ID.c_str()) { - CINI::CurrentDocument->DeleteKey("TeamTypes", key); + CINIExt::CurrentDocument->DeleteKey("TeamTypes", key); break; } } } - CINI::CurrentDocument->WriteString("TeamTypes", CINI::GetAvailableKey("TeamTypes"), ID.c_str()); + CINIExt::CurrentDocument->WriteString("TeamTypes", CINI::GetAvailableKey("TeamTypes"), ID.c_str()); - CINI::CurrentDocument->WriteString(ID.c_str(), "Name", Name.c_str()); - CINI::CurrentDocument->WriteString(ID.c_str(), "House", House.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "Name", Name.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "House", House.c_str()); if (Taskforce == "") - CINI::CurrentDocument->DeleteKey(ID.c_str(), "TaskForce"); + CINIExt::CurrentDocument->DeleteKey(ID.c_str(), "TaskForce"); else - CINI::CurrentDocument->WriteString(ID.c_str(), "TaskForce", Taskforce.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "TaskForce", Taskforce.c_str()); if (Script == "") - CINI::CurrentDocument->DeleteKey(ID.c_str(), "Script"); + CINIExt::CurrentDocument->DeleteKey(ID.c_str(), "Script"); else - CINI::CurrentDocument->WriteString(ID.c_str(), "Script", Script.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "Script", Script.c_str()); if (Tag == "") - CINI::CurrentDocument->DeleteKey(ID.c_str(), "Tag"); + CINIExt::CurrentDocument->DeleteKey(ID.c_str(), "Tag"); else - CINI::CurrentDocument->WriteString(ID.c_str(), "Tag", Tag.c_str()); - CINI::CurrentDocument->WriteString(ID.c_str(), "VeteranLevel", VeteranLevel.c_str()); - CINI::CurrentDocument->WriteString(ID.c_str(), "Priority", Priority.c_str()); - CINI::CurrentDocument->WriteString(ID.c_str(), "Max", Max.c_str()); - CINI::CurrentDocument->WriteString(ID.c_str(), "TechLevel", Techlevel.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "Tag", Tag.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "VeteranLevel", VeteranLevel.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "Priority", Priority.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "Max", Max.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "TechLevel", Techlevel.c_str()); if (TransportWaypoint == "") { UseTransportOrigin = false; - CINI::CurrentDocument->DeleteKey(ID.c_str(), "TransportWaypoint"); + CINIExt::CurrentDocument->DeleteKey(ID.c_str(), "TransportWaypoint"); } else { UseTransportOrigin = true; if (STDHelpers::IsNumber(TransportWaypoint.c_str())) - CINI::CurrentDocument->WriteString(ID.c_str(), "TransportWaypoint", STDHelpers::WaypointToString(atoi(TransportWaypoint.c_str()))); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "TransportWaypoint", STDHelpers::WaypointToString(atoi(TransportWaypoint.c_str()))); else - CINI::CurrentDocument->WriteString(ID.c_str(), "TransportWaypoint", TransportWaypoint.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "TransportWaypoint", TransportWaypoint.c_str()); } - CINI::CurrentDocument->WriteString(ID.c_str(), "Group", Group.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "Group", Group.c_str()); if (STDHelpers::IsNumber(Waypoint.c_str())) - CINI::CurrentDocument->WriteString(ID.c_str(), "Waypoint", STDHelpers::WaypointToString(atoi(Waypoint.c_str()))); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "Waypoint", STDHelpers::WaypointToString(atoi(Waypoint.c_str()))); else - CINI::CurrentDocument->WriteString(ID.c_str(), "Waypoint", Waypoint.c_str()); - CINI::CurrentDocument->WriteString(ID.c_str(), "MindControlDecision", MindControlDecision.c_str()); - - CINI::CurrentDocument->WriteBool(ID.c_str(), "Full", Full); - CINI::CurrentDocument->WriteBool(ID.c_str(), "Whiner", Whiner); - CINI::CurrentDocument->WriteBool(ID.c_str(), "Droppod", Droppod); - CINI::CurrentDocument->WriteBool(ID.c_str(), "Suicide", Suicide); - CINI::CurrentDocument->WriteBool(ID.c_str(), "Loadable", Loadable); - CINI::CurrentDocument->WriteBool(ID.c_str(), "Prebuild", Prebuild); - CINI::CurrentDocument->WriteBool(ID.c_str(), "Annoyance", Annoyance); - CINI::CurrentDocument->WriteBool(ID.c_str(), "IonImmune", IonImmune); - CINI::CurrentDocument->WriteBool(ID.c_str(), "Recruiter", Recruiter); - CINI::CurrentDocument->WriteBool(ID.c_str(), "Reinforce", Reinforce); - CINI::CurrentDocument->WriteBool(ID.c_str(), "Aggressive", Aggressive); - CINI::CurrentDocument->WriteBool(ID.c_str(), "Autocreate", Autocreate); - CINI::CurrentDocument->WriteBool(ID.c_str(), "GuardSlower", GuardSlower); - CINI::CurrentDocument->WriteBool(ID.c_str(), "OnTransOnly", OnTransOnly); - CINI::CurrentDocument->WriteBool(ID.c_str(), "AvoidThreats", AvoidThreats); - CINI::CurrentDocument->WriteBool(ID.c_str(), "LooseRecruit", LooseRecruit); - CINI::CurrentDocument->WriteBool(ID.c_str(), "IsBaseDefense", IsBaseDefense); - CINI::CurrentDocument->WriteBool(ID.c_str(), "UseTransportOrigin", UseTransportOrigin); - CINI::CurrentDocument->WriteBool(ID.c_str(), "OnlyTargetHouseEnemy", OnlyTargetHouseEnemy); - CINI::CurrentDocument->WriteBool(ID.c_str(), "TransportsReturnOnUnload", TransportsReturnOnUnload); - CINI::CurrentDocument->WriteBool(ID.c_str(), "AreTeamMembersRecruitable", AreTeamMembersRecruitable); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "Waypoint", Waypoint.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "MindControlDecision", MindControlDecision.c_str()); + + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "Full", Full); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "Whiner", Whiner); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "Droppod", Droppod); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "Suicide", Suicide); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "Loadable", Loadable); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "Prebuild", Prebuild); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "Annoyance", Annoyance); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "IonImmune", IonImmune); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "Recruiter", Recruiter); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "Reinforce", Reinforce); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "Aggressive", Aggressive); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "Autocreate", Autocreate); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "GuardSlower", GuardSlower); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "OnTransOnly", OnTransOnly); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "AvoidThreats", AvoidThreats); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "LooseRecruit", LooseRecruit); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "IsBaseDefense", IsBaseDefense); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "UseTransportOrigin", UseTransportOrigin); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "OnlyTargetHouseEnemy", OnlyTargetHouseEnemy); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "TransportsReturnOnUnload", TransportsReturnOnUnload); + CINIExt::CurrentDocument->WriteBool(ID.c_str(), "AreTeamMembersRecruitable", AreTeamMembersRecruitable); UsedINIIndices.insert(ID); CLuaConsole::updateTeam = true; } void delete_team_self() const { - CINI::CurrentDocument->DeleteSection(ID.c_str()); - if (auto pSection = CINI::CurrentDocument->GetSection("TeamTypes")) + CINIExt::CurrentDocument->DeleteSection(ID.c_str()); + if (auto pSection = CINIExt::CurrentDocument->GetSection("TeamTypes")) { for (const auto& [key, value] : pSection->GetEntities()) { if (value == ID.c_str()) { - CINI::CurrentDocument->DeleteKey("TeamTypes", key); + CINIExt::CurrentDocument->DeleteKey("TeamTypes", key); break; } } @@ -2882,14 +2882,14 @@ namespace LuaFunctions } static void delete_team(std::string id) { - CINI::CurrentDocument->DeleteSection(id.c_str()); - if (auto pSection = CINI::CurrentDocument->GetSection("TeamTypes")) + CINIExt::CurrentDocument->DeleteSection(id.c_str()); + if (auto pSection = CINIExt::CurrentDocument->GetSection("TeamTypes")) { for (const auto& [key, value] : pSection->GetEntities()) { if (value == id.c_str()) { - CINI::CurrentDocument->DeleteKey("TeamTypes", key); + CINIExt::CurrentDocument->DeleteKey("TeamTypes", key); break; } } @@ -2900,7 +2900,7 @@ namespace LuaFunctions static std::vector get_teams() { std::vector ret; - if (auto pSection = CINI::CurrentDocument->GetSection("TeamTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("TeamTypes")) { for (const auto& [key, value] : pSection->GetEntities()) { @@ -2992,11 +2992,11 @@ namespace LuaFunctions static sol::object get_task_force(std::string id) { bool found = false; - if (auto pSection = CINI::CurrentDocument->GetSection("TaskForces")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("TaskForces")) { for (const auto& [key, value] : pSection->GetEntities()) { - if (value == id.c_str() && CINI::CurrentDocument->SectionExists(value)) + if (value == id.c_str() && CINIExt::CurrentDocument->SectionExists(value)) { found = true; break; @@ -3007,15 +3007,15 @@ namespace LuaFunctions { task_force ret; ret.ID = id; - ret.Name = CINI::CurrentDocument->GetString(id.c_str(), "Name", "New task force").GetString(); - ret.Group = CINI::CurrentDocument->GetString(id.c_str(), "Group", "-1").GetString(); + ret.Name = CINIExt::CurrentDocument->GetString(id.c_str(), "Name", "New task force").GetString(); + ret.Group = CINIExt::CurrentDocument->GetString(id.c_str(), "Group", "-1").GetString(); FString key; for (int i = 0; i < 6; ++i) { key.Format("%d", i); - if (CINI::CurrentDocument->KeyExists(id.c_str(), key)) + if (CINIExt::CurrentDocument->KeyExists(id.c_str(), key)) { - auto atoms = STDHelpers::SplitString(CINI::CurrentDocument->GetString(id.c_str(), key, "1,E1"), 1); + auto atoms = STDHelpers::SplitString(CINIExt::CurrentDocument->GetString(id.c_str(), key, "1,E1"), 1); ret.Numbers.push_back(atoi(atoms[0])); ret.Units.push_back(atoms[1].GetString()); } @@ -3030,46 +3030,46 @@ namespace LuaFunctions } void apply() const { - if (auto pSection = CINI::CurrentDocument->GetSection("TaskForces")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("TaskForces")) { for (const auto& [key, value] : pSection->GetEntities()) { if (value == ID.c_str()) { - CINI::CurrentDocument->DeleteKey("TaskForces", key); + CINIExt::CurrentDocument->DeleteKey("TaskForces", key); break; } } } - CINI::CurrentDocument->WriteString("TaskForces", CINI::GetAvailableKey("TaskForces"), ID.c_str()); - CINI::CurrentDocument->WriteString(ID.c_str(), "Name", Name.c_str()); - CINI::CurrentDocument->WriteString(ID.c_str(), "Group", Group.c_str()); + CINIExt::CurrentDocument->WriteString("TaskForces", CINI::GetAvailableKey("TaskForces"), ID.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "Name", Name.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "Group", Group.c_str()); FString key; FString value; for (int i = 0; i < 6; ++i) { key.Format("%d", i); - CINI::CurrentDocument->DeleteKey(ID.c_str(), key); + CINIExt::CurrentDocument->DeleteKey(ID.c_str(), key); } for (int i = 0; i < Numbers.size(); ++i) { key.Format("%d", i); value.Format("%d,%s", Numbers[i], Units[i].c_str()); - CINI::CurrentDocument->WriteString(ID.c_str(), key, value); + CINIExt::CurrentDocument->WriteString(ID.c_str(), key, value); } UsedINIIndices.insert(ID); CLuaConsole::updateTaskforce = true; } void delete_task_force_self() const { - CINI::CurrentDocument->DeleteSection(ID.c_str()); - if (auto pSection = CINI::CurrentDocument->GetSection("TaskForces")) + CINIExt::CurrentDocument->DeleteSection(ID.c_str()); + if (auto pSection = CINIExt::CurrentDocument->GetSection("TaskForces")) { for (const auto& [key, value] : pSection->GetEntities()) { if (value == ID.c_str()) { - CINI::CurrentDocument->DeleteKey("TaskForces", key); + CINIExt::CurrentDocument->DeleteKey("TaskForces", key); break; } } @@ -3079,14 +3079,14 @@ namespace LuaFunctions } static void delete_task_force(std::string id) { - CINI::CurrentDocument->DeleteSection(id.c_str()); - if (auto pSection = CINI::CurrentDocument->GetSection("TaskForces")) + CINIExt::CurrentDocument->DeleteSection(id.c_str()); + if (auto pSection = CINIExt::CurrentDocument->GetSection("TaskForces")) { for (const auto& [key, value] : pSection->GetEntities()) { if (value == id.c_str()) { - CINI::CurrentDocument->DeleteKey("TaskForces", key); + CINIExt::CurrentDocument->DeleteKey("TaskForces", key); break; } } @@ -3097,7 +3097,7 @@ namespace LuaFunctions static std::vector get_task_forces() { std::vector ret; - if (auto pSection = CINI::CurrentDocument->GetSection("TaskForces")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("TaskForces")) { for (const auto& [key, value] : pSection->GetEntities()) { @@ -3170,11 +3170,11 @@ namespace LuaFunctions static sol::object get_script(std::string id) { bool found = false; - if (auto pSection = CINI::CurrentDocument->GetSection("ScriptTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("ScriptTypes")) { for (const auto& [key, value] : pSection->GetEntities()) { - if (value == id.c_str() && CINI::CurrentDocument->SectionExists(value)) + if (value == id.c_str() && CINIExt::CurrentDocument->SectionExists(value)) { found = true; break; @@ -3185,14 +3185,14 @@ namespace LuaFunctions { script ret; ret.ID = id; - ret.Name = CINI::CurrentDocument->GetString(id.c_str(), "Name", "New script").GetString(); + ret.Name = CINIExt::CurrentDocument->GetString(id.c_str(), "Name", "New script").GetString(); FString key; for (int i = 0; i < 50; ++i) { key.Format("%d", i); - if (CINI::CurrentDocument->KeyExists(id.c_str(), key)) + if (CINIExt::CurrentDocument->KeyExists(id.c_str(), key)) { - auto atoms = STDHelpers::SplitString(CINI::CurrentDocument->GetString(id.c_str(), key, "0,0"), 1); + auto atoms = STDHelpers::SplitString(CINIExt::CurrentDocument->GetString(id.c_str(), key, "0,0"), 1); ret.Actions.push_back(atoi(atoms[0])); ret.Params.push_back(atoi(atoms[1])); } @@ -3304,45 +3304,45 @@ namespace LuaFunctions void apply() const { - if (auto pSection = CINI::CurrentDocument->GetSection("ScriptTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("ScriptTypes")) { for (const auto& [key, value] : pSection->GetEntities()) { if (value == ID.c_str()) { - CINI::CurrentDocument->DeleteKey("ScriptTypes", key); + CINIExt::CurrentDocument->DeleteKey("ScriptTypes", key); break; } } } - CINI::CurrentDocument->WriteString("ScriptTypes", CINI::GetAvailableKey("ScriptTypes"), ID.c_str()); - CINI::CurrentDocument->WriteString(ID.c_str(), "Name", Name.c_str()); + CINIExt::CurrentDocument->WriteString("ScriptTypes", CINI::GetAvailableKey("ScriptTypes"), ID.c_str()); + CINIExt::CurrentDocument->WriteString(ID.c_str(), "Name", Name.c_str()); FString key; FString value; for (int i = 0; i < 50; ++i) { key.Format("%d", i); - CINI::CurrentDocument->DeleteKey(ID.c_str(), key); + CINIExt::CurrentDocument->DeleteKey(ID.c_str(), key); } for (int i = 0; i < Actions.size(); ++i) { key.Format("%d", i); value.Format("%d,%d", Actions[i], Params[i]); - CINI::CurrentDocument->WriteString(ID.c_str(), key, value); + CINIExt::CurrentDocument->WriteString(ID.c_str(), key, value); } UsedINIIndices.insert(ID); CLuaConsole::updateScript = true; } void delete_script_self() const { - CINI::CurrentDocument->DeleteSection(ID.c_str()); - if (auto pSection = CINI::CurrentDocument->GetSection("ScriptTypes")) + CINIExt::CurrentDocument->DeleteSection(ID.c_str()); + if (auto pSection = CINIExt::CurrentDocument->GetSection("ScriptTypes")) { for (const auto& [key, value] : pSection->GetEntities()) { if (value == ID.c_str()) { - CINI::CurrentDocument->DeleteKey("ScriptTypes", key); + CINIExt::CurrentDocument->DeleteKey("ScriptTypes", key); break; } } @@ -3352,14 +3352,14 @@ namespace LuaFunctions } static void delete_script(std::string id) { - CINI::CurrentDocument->DeleteSection(id.c_str()); - if (auto pSection = CINI::CurrentDocument->GetSection("ScriptTypes")) + CINIExt::CurrentDocument->DeleteSection(id.c_str()); + if (auto pSection = CINIExt::CurrentDocument->GetSection("ScriptTypes")) { for (const auto& [key, value] : pSection->GetEntities()) { if (value == id.c_str()) { - CINI::CurrentDocument->DeleteKey("ScriptTypes", key); + CINIExt::CurrentDocument->DeleteKey("ScriptTypes", key); break; } } @@ -3370,7 +3370,7 @@ namespace LuaFunctions static std::vector get_scripts() { std::vector ret; - if (auto pSection = CINI::CurrentDocument->GetSection("ScriptTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("ScriptTypes")) { for (const auto& [key, value] : pSection->GetEntities()) { @@ -3424,7 +3424,7 @@ namespace LuaFunctions } static sol::object get_ai_trigger(std::string id) { - auto atoms = STDHelpers::SplitString(CINI::CurrentDocument().GetString("AITriggerTypes", id.c_str())); + auto atoms = STDHelpers::SplitString(CINIExt::CurrentDocument().GetString("AITriggerTypes", id.c_str())); if (atoms.size() >= 18) { ai_trigger ret(id); @@ -3452,7 +3452,7 @@ namespace LuaFunctions ret.Amount = ret.Comparators[0]; ret.Comparator = std::to_string(ret.Comparators[1]); - ret.Enabled = CINI::CurrentDocument().GetBool("AITriggerTypesEnable", id.c_str()); + ret.Enabled = CINIExt::CurrentDocument().GetBool("AITriggerTypesEnable", id.c_str()); return sol::make_object(CLuaConsole::Lua, ret); } else @@ -3518,12 +3518,12 @@ namespace LuaFunctions EnabledInH ? "1" : "0" ); if (Enabled) { - CINI::CurrentDocument->WriteBool("AITriggerTypesEnable", ID.c_str(), Enabled); + CINIExt::CurrentDocument->WriteBool("AITriggerTypesEnable", ID.c_str(), Enabled); } else { - CINI::CurrentDocument->DeleteKey("AITriggerTypesEnable", ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("AITriggerTypesEnable", ID.c_str()); } - CINI::CurrentDocument->WriteString("AITriggerTypes", ID.c_str(), value); + CINIExt::CurrentDocument->WriteString("AITriggerTypes", ID.c_str(), value); UsedINIIndices.insert(ID); CLuaConsole::updateAITrigger = true; } @@ -3538,22 +3538,22 @@ namespace LuaFunctions } void delete_ai_trigger_self() const { - CINI::CurrentDocument->DeleteKey("AITriggerTypes", ID.c_str()); - CINI::CurrentDocument->DeleteKey("AITriggerTypesEnable", ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("AITriggerTypes", ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("AITriggerTypesEnable", ID.c_str()); UsedINIIndices.erase(ID); CLuaConsole::updateAITrigger = true; } static void delete_ai_trigger(std::string ID) { - CINI::CurrentDocument->DeleteKey("AITriggerTypes", ID.c_str()); - CINI::CurrentDocument->DeleteKey("AITriggerTypesEnable", ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("AITriggerTypes", ID.c_str()); + CINIExt::CurrentDocument->DeleteKey("AITriggerTypesEnable", ID.c_str()); UsedINIIndices.erase(ID); CLuaConsole::updateAITrigger = true; } static std::vector get_ai_triggers() { std::vector ret; - if (auto pSection = CINI::CurrentDocument->GetSection("AITriggerTypes")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("AITriggerTypes")) { for (const auto& [key, value] : pSection->GetEntities()) { @@ -3606,7 +3606,7 @@ namespace LuaFunctions { auto str = std::to_string(index); if (auto pValue = (is_global ? CINI::Rules->TryGetString("VariableNames", str.c_str()) - : CINI::CurrentDocument->TryGetString("VariableNames", str.c_str()))) + : CINIExt::CurrentDocument->TryGetString("VariableNames", str.c_str()))) { auto value = FString::GetParam(*pValue, 1); return atoi(value); @@ -3618,7 +3618,7 @@ namespace LuaFunctions { auto str = std::to_string(index); if (auto pValue = (is_global ? CINI::Rules->TryGetString("VariableNames", str.c_str()) - : CINI::CurrentDocument->TryGetString("VariableNames", str.c_str()))) + : CINIExt::CurrentDocument->TryGetString("VariableNames", str.c_str()))) { auto value = FString::GetParam(*pValue, 0); return value; @@ -3629,11 +3629,11 @@ namespace LuaFunctions static void set_variable_value(int index, int value) { auto str = std::to_string(index); - if (auto pValue = CINI::CurrentDocument->TryGetString("VariableNames", str.c_str())) + if (auto pValue = CINIExt::CurrentDocument->TryGetString("VariableNames", str.c_str())) { FString newValue = *pValue; newValue.SetParam(1, std::to_string(value)); - CINI::CurrentDocument->WriteString("VariableNames", str.c_str(), newValue); + CINIExt::CurrentDocument->WriteString("VariableNames", str.c_str(), newValue); CLuaConsole::updateVariable = true; } else @@ -3647,11 +3647,11 @@ namespace LuaFunctions static void set_variable_name(int index, std::string name) { auto str = std::to_string(index); - if (auto pValue = CINI::CurrentDocument->TryGetString("VariableNames", str.c_str())) + if (auto pValue = CINIExt::CurrentDocument->TryGetString("VariableNames", str.c_str())) { FString newValue = *pValue; newValue.SetParam(0, name); - CINI::CurrentDocument->WriteString("VariableNames", str.c_str(), newValue); + CINIExt::CurrentDocument->WriteString("VariableNames", str.c_str(), newValue); CLuaConsole::updateVariable = true; } else @@ -3667,7 +3667,7 @@ namespace LuaFunctions auto key = CINI::GetAvailableKey("VariableNames"); FString val; val.Format("%s,%d", name, value); - CINI::CurrentDocument->WriteString("VariableNames", key, val); + CINIExt::CurrentDocument->WriteString("VariableNames", key, val); CLuaConsole::updateVariable = true; int index = atoi(key); @@ -3919,20 +3919,20 @@ namespace LuaFunctions if (oldWp > -1) { write_lua_console(std::format("Waypoint {} already exists at ({},{}), abort.", - CINI::CurrentDocument->GetKeyAt("Waypoints", oldWp).GetString(), x, y)); - return atoi(CINI::CurrentDocument->GetKeyAt("Waypoints", oldWp)); + CINIExt::CurrentDocument->GetKeyAt("Waypoints", oldWp).GetString(), x, y)); + return atoi(CINIExt::CurrentDocument->GetKeyAt("Waypoints", oldWp)); } CLuaConsole::needRedraw = true; if (index < 0) { - index = atoi(CINI::CurrentDocument->GetAvailableKey("Waypoints")); + index = atoi(CINIExt::CurrentDocument->GetAvailableKey("Waypoints")); } FString key; FString value; key.Format("%d", index); value.Format("%d", x * 1000 + y); - CINI::CurrentDocument->WriteString("Waypoints", key, value); + CINIExt::CurrentDocument->WriteString("Waypoints", key, value); CMapData::Instance->UpdateFieldWaypointData(false); return index; } @@ -3940,16 +3940,16 @@ namespace LuaFunctions static void remove_waypoint(int index) { CLuaConsole::needRedraw = true; - if (auto pSection = CINI::CurrentDocument->GetSection("Waypoints")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints")) { FString key; key.Format("%d", index); - if (CINI::CurrentDocument->KeyExists("Waypoints", key)) + if (CINIExt::CurrentDocument->KeyExists("Waypoints", key)) { auto&& value = pSection->GetString(key); int x = atoi(value) / 1000; int y = atoi(value) % 1000; - CINI::CurrentDocument->DeleteKey(pSection, key); + CINIExt::CurrentDocument->DeleteKey(pSection, key); CMapData::Instance->UpdateFieldWaypointData(false); if (CMapData::Instance->IsMultiOnly()) @@ -3969,12 +3969,12 @@ namespace LuaFunctions return; int index = CMapData::Instance->GetCellAt(x, y)->Waypoint; if (index > -1) - remove_waypoint(atoi(CINI::CurrentDocument->GetKeyAt("Waypoints", index))); + remove_waypoint(atoi(CINIExt::CurrentDocument->GetKeyAt("Waypoints", index))); } static int get_waypoint(int index) { - if (auto pSection = CINI::CurrentDocument->GetSection("Waypoints")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints")) { if (auto pKey = pSection->GetKeyAt(index)) return atoi(pKey->GetString()); @@ -4317,27 +4317,27 @@ namespace LuaFunctions static void write_string(std::string section, std::string key, std::string value) { - CINI::CurrentDocument->WriteString(section.c_str(), key.c_str(), value.c_str()); + CINIExt::CurrentDocument->WriteString(section.c_str(), key.c_str(), value.c_str()); } static void delete_key(std::string section, std::string key) { - CINI::CurrentDocument->DeleteKey(section.c_str(), key.c_str()); + CINIExt::CurrentDocument->DeleteKey(section.c_str(), key.c_str()); } static void delete_section(std::string section) { - CINI::CurrentDocument->DeleteSection(section.c_str()); + CINIExt::CurrentDocument->DeleteSection(section.c_str()); } static std::string get_free_waypoint() { - return CINI::CurrentDocument->GetAvailableKey("Waypoints").GetString(); + return CINIExt::CurrentDocument->GetAvailableKey("Waypoints").GetString(); } static std::string get_free_key(std::string section) { - return CINI::CurrentDocument->GetAvailableKey(section.c_str()).GetString(); + return CINIExt::CurrentDocument->GetAvailableKey(section.c_str()).GetString(); } static std::string get_param(std::string section, std::string key, int index, std::string delimiter = ",", std::string loadFrom = "map") @@ -4661,7 +4661,7 @@ namespace LuaFunctions static std::vector get_buildings() { std::vector ret; - for (int i = 0; i < CINI::CurrentDocument->GetKeyCount("Structures"); ++i) + for (int i = 0; i < CINIExt::CurrentDocument->GetKeyCount("Structures"); ++i) { auto obj = get_building(i); if (!obj.TypeID.empty()) @@ -4747,7 +4747,7 @@ namespace LuaFunctions static std::vector get_aircrafts() { std::vector ret; - for (int i = 0; i < CINI::CurrentDocument->GetKeyCount("Aircraft"); ++i) + for (int i = 0; i < CINIExt::CurrentDocument->GetKeyCount("Aircraft"); ++i) { auto obj = get_aircraft(i); if (!obj.TypeID.empty()) @@ -4759,7 +4759,7 @@ namespace LuaFunctions static std::vector get_infantries() { std::vector ret; - for (int i = 0; i < CINI::CurrentDocument->GetKeyCount("Infantry"); ++i) + for (int i = 0; i < CINIExt::CurrentDocument->GetKeyCount("Infantry"); ++i) { auto obj = get_infantry(i); if (!obj.TypeID.empty()) @@ -4771,7 +4771,7 @@ namespace LuaFunctions static std::vector get_units() { std::vector ret; - for (int i = 0; i < CINI::CurrentDocument->GetKeyCount("Units"); ++i) + for (int i = 0; i < CINIExt::CurrentDocument->GetKeyCount("Units"); ++i) { auto obj = get_unit(i); if (!obj.TypeID.empty()) @@ -4801,7 +4801,7 @@ namespace LuaFunctions } else { - if (auto pSection = CINI::CurrentDocument->GetSection("Houses")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Houses")) { for (const auto& [key, value] : pSection->GetEntities()) { @@ -4816,13 +4816,13 @@ namespace LuaFunctions { FString key; key.Format("%d", x * 1000 + y); - if (CINI::CurrentDocument->KeyExists("CellTags", key)) + if (CINIExt::CurrentDocument->KeyExists("CellTags", key)) { write_lua_console(std::format("CellTag {} already exists at ({},{}), abort.", - CINI::CurrentDocument->GetString("CellTags", key).GetString(), x, y)); + CINIExt::CurrentDocument->GetString("CellTags", key).GetString(), x, y)); return; } - CINI::CurrentDocument->WriteString("CellTags", key, id.c_str()); + CINIExt::CurrentDocument->WriteString("CellTags", key, id.c_str()); CLuaConsole::needRedraw = true; CLuaConsole::updateCellTag = true; } @@ -4830,7 +4830,7 @@ namespace LuaFunctions static void remove_celltags(std::string id) { std::vector keys; - if (auto pSection = CINI::CurrentDocument->GetSection("CellTags")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("CellTags")) { for (const auto& [key, value] : pSection->GetEntities()) { @@ -4840,7 +4840,7 @@ namespace LuaFunctions } for (const auto& key : keys) { - CINI::CurrentDocument->DeleteKey("CellTags", key); + CINIExt::CurrentDocument->DeleteKey("CellTags", key); } CLuaConsole::needRedraw = true; CLuaConsole::updateCellTag = true; @@ -4850,7 +4850,7 @@ namespace LuaFunctions { FString key; key.Format("%d", x * 1000 + y); - CINI::CurrentDocument->DeleteKey("CellTags", key); + CINIExt::CurrentDocument->DeleteKey("CellTags", key); CLuaConsole::needRedraw = true; CLuaConsole::updateCellTag = true; } @@ -4862,7 +4862,7 @@ namespace LuaFunctions if (!CMapData::Instance->IsCoordInMap(x, y)) return; - if (auto pHouse = CINI::CurrentDocument->GetSection(house.c_str())) + if (auto pHouse = CINIExt::CurrentDocument->GetSection(house.c_str())) { FString value; value.Format("%s,%d,%d", type.c_str(), y, x); @@ -4872,12 +4872,12 @@ namespace LuaFunctions { FString key; key.Format("%03d", i); - if (!CINI::CurrentDocument->KeyExists(house.c_str(), key)) + if (!CINIExt::CurrentDocument->KeyExists(house.c_str(), key)) { FString count; count.Format("%d", i + 1); - CINI::CurrentDocument->WriteString(house.c_str(), "NodeCount", count); - CINI::CurrentDocument->WriteString(house.c_str(), key, value); + CINIExt::CurrentDocument->WriteString(house.c_str(), "NodeCount", count); + CINIExt::CurrentDocument->WriteString(house.c_str(), key, value); CLuaConsole::updateNode = true; CLuaConsole::needRedraw = true; break; @@ -4887,14 +4887,14 @@ namespace LuaFunctions else { std::vector nodes; - int nodeCount = CINI::CurrentDocument->GetInteger(house.c_str(), "NodeCount", 0); + int nodeCount = CINIExt::CurrentDocument->GetInteger(house.c_str(), "NodeCount", 0); for (int i = 0; i < nodeCount; ++i) { FString key; key.Format("%03d", i); - if (CINI::CurrentDocument->KeyExists(house.c_str(), key)) + if (CINIExt::CurrentDocument->KeyExists(house.c_str(), key)) { - nodes.push_back(CINI::CurrentDocument->GetString(house.c_str(), key)); + nodes.push_back(CINIExt::CurrentDocument->GetString(house.c_str(), key)); } } if (index > nodes.size()) index = nodes.size(); @@ -4904,12 +4904,12 @@ namespace LuaFunctions { FString key; key.Format("%03d", i); - CINI::CurrentDocument->WriteString(house.c_str(), key, node); + CINIExt::CurrentDocument->WriteString(house.c_str(), key, node); i++; } FString count; count.Format("%d", nodes.size()); - CINI::CurrentDocument->WriteString(house.c_str(), "NodeCount", count); + CINIExt::CurrentDocument->WriteString(house.c_str(), "NodeCount", count); CLuaConsole::updateNode = true; CLuaConsole::needRedraw = true; } @@ -5289,7 +5289,7 @@ namespace LuaFunctions CMapData::Instance->UpdateINIFile(SaveMapFlag::UpdateMapFieldData); - if (SaveMapExt::SaveMap(&CINI::CurrentDocument, CFinalSunDlg::Instance(), target, previewOption, false, false)) + if (SaveMapExt::SaveMap(&CINIExt::CurrentDocument, CFinalSunDlg::Instance(), target, previewOption, false, false)) { FString buffer = "Map saved as \"%1\""; Translations::GetTranslationItem("FileSaved", buffer); @@ -5365,7 +5365,7 @@ namespace LuaFunctions } auto& snapshot = snapshots[version]; Logger::Debug("Restoring map snapshot #%d, time point: %s\n", version, formatTime(snapshot.savedTime).c_str()); - if (CINI::CurrentDocument->GetString("Map", "Theater") != snapshot.INI["Map"]["Theater"]) + if (CINIExt::CurrentDocument->GetString("Map", "Theater") != snapshot.INI["Map"]["Theater"]) { write_lua_console(std::format("Cannot restore snapshot #{}, theater dismatch.", version)); return; @@ -5478,7 +5478,7 @@ namespace LuaFunctions { FString wp; wp.Format("%d", y); - auto pWP = CINI::CurrentDocument->GetString("Waypoints", wp, "-1"); + auto pWP = CINIExt::CurrentDocument->GetString("Waypoints", wp, "-1"); auto second = atoi(pWP); if (second >= 0) { diff --git a/FA2sp/ExtraWindow/CMeasurementToolbox/CMeasurementToolbox.cpp b/FA2sp/ExtraWindow/CMeasurementToolbox/CMeasurementToolbox.cpp index 52515678..639ec7a9 100644 --- a/FA2sp/ExtraWindow/CMeasurementToolbox/CMeasurementToolbox.cpp +++ b/FA2sp/ExtraWindow/CMeasurementToolbox/CMeasurementToolbox.cpp @@ -445,7 +445,7 @@ void CMeasurementToolbox::SetMeasurementToolbox(int X, int Y) CIsoView::CurrentCommand->Type == MeasurementTypes::LineSegment_Annotation ? "LineSegment" : "ArrowSegment", CIsoViewExt::TwoPointDistance_Annotation.back().Point1.X, CIsoViewExt::TwoPointDistance_Annotation.back().Point1.Y, CIsoViewExt::TwoPointDistance_Annotation.back().Point2.X, CIsoViewExt::TwoPointDistance_Annotation.back().Point2.Y); - CINI::CurrentDocument->WriteString("GeometricAnnotations", + CINIExt::CurrentDocument->WriteString("GeometricAnnotations", CINI::GetAvailableKey("GeometricAnnotations"), value ); @@ -586,7 +586,7 @@ void CMeasurementToolbox::SetMeasurementToolbox(int X, int Y) "Circle", CIsoViewExt::TempCircle_Annotation[0].X, CIsoViewExt::TempCircle_Annotation[0].Y, CIsoViewExt::TempCircle_Annotation[1].X, CIsoViewExt::TempCircle_Annotation[1].Y); - CINI::CurrentDocument->WriteString("GeometricAnnotations", + CINIExt::CurrentDocument->WriteString("GeometricAnnotations", CINI::GetAvailableKey("GeometricAnnotations"), value ); diff --git a/FA2sp/ExtraWindow/CMiscSettings/CMiscSettings.cpp b/FA2sp/ExtraWindow/CMiscSettings/CMiscSettings.cpp index e9cccc02..61f87189 100644 --- a/FA2sp/ExtraWindow/CMiscSettings/CMiscSettings.cpp +++ b/FA2sp/ExtraWindow/CMiscSettings/CMiscSettings.cpp @@ -15,7 +15,7 @@ namespace void LaunchRandomTree() { CRandomTreeExt randomTree; - auto mirageIni = CINI::CurrentDocument->GetString("General", "DefaultMirageDisguises"); + auto mirageIni = CINIExt::CurrentDocument->GetString("General", "DefaultMirageDisguises"); mirageIni.Trim(); randomTree.MirageDisguiseTrees = mirageIni; randomTree.LaunchingFromSingleplayerSettings = true; diff --git a/FA2sp/ExtraWindow/CNewAITrigger/CNewAITrigger.cpp b/FA2sp/ExtraWindow/CNewAITrigger/CNewAITrigger.cpp index 363524fe..6a27ec37 100644 --- a/FA2sp/ExtraWindow/CNewAITrigger/CNewAITrigger.cpp +++ b/FA2sp/ExtraWindow/CNewAITrigger/CNewAITrigger.cpp @@ -20,7 +20,7 @@ HWND CNewAITrigger::m_hwnd; CFinalSunDlg* CNewAITrigger::m_parent; -CINI& CNewAITrigger::map = CINI::CurrentDocument; +CINIExt& CNewAITrigger::map = CINIExt::CurrentDocument; MultimapHelper& CNewAITrigger::rules = Variables::RulesMap; CINI& CNewAITrigger::fadata = CINI::FAData; bool CNewAITrigger::AutoChangeName = false; diff --git a/FA2sp/ExtraWindow/CNewAITrigger/CNewAITrigger.h b/FA2sp/ExtraWindow/CNewAITrigger/CNewAITrigger.h index 72da31bb..1aaca8e6 100644 --- a/FA2sp/ExtraWindow/CNewAITrigger/CNewAITrigger.h +++ b/FA2sp/ExtraWindow/CNewAITrigger/CNewAITrigger.h @@ -1,6 +1,7 @@ #pragma once #include +#include "../../Miscs/Hooks.INI.h" #include #include #include @@ -11,6 +12,7 @@ #include "../../Helpers/FString.h" class VirtualComboBoxEx; +class CINIExt; class AITrigger { @@ -39,7 +41,7 @@ class AITrigger static std::unique_ptr create(const char* id) { - auto atoms = STDHelpers::SplitString(CINI::CurrentDocument().GetString("AITriggerTypes", id)); + auto atoms = STDHelpers::SplitString(CINIExt::CurrentDocument().GetString("AITriggerTypes", id)); if (atoms.size() < 18) return nullptr; return std::make_unique(id); @@ -55,7 +57,7 @@ class AITrigger } AITrigger(const char* id) { - auto atoms = FString::SplitString(CINI::CurrentDocument().GetString("AITriggerTypes", id), 17); + auto atoms = FString::SplitString(CINIExt::CurrentDocument().GetString("AITriggerTypes", id), 17); ID = id; Name = atoms[0]; Team1 = atoms[1]; @@ -78,7 +80,7 @@ class AITrigger EnabledInM = atoms[16] == "0" ? false : true; EnabledInH = atoms[17] == "0" ? false : true; - Enabled = CINI::CurrentDocument().GetBool("AITriggerTypesEnable", id); + Enabled = CINIExt::CurrentDocument().GetBool("AITriggerTypesEnable", id); } void Save() const @@ -123,12 +125,12 @@ class AITrigger EnabledInH ? "1" : "0" ); if (Enabled) { - CINI::CurrentDocument->WriteBool("AITriggerTypesEnable", ID, Enabled); + CINIExt::CurrentDocument->WriteBool("AITriggerTypesEnable", ID, Enabled); } else { - CINI::CurrentDocument->DeleteKey("AITriggerTypesEnable", ID); + CINIExt::CurrentDocument->DeleteKey("AITriggerTypesEnable", ID); } - CINI::CurrentDocument->WriteString("AITriggerTypes", ID, value); + CINIExt::CurrentDocument->WriteString("AITriggerTypes", ID, value); } private: @@ -240,7 +242,7 @@ class CNewAITrigger private: static HWND m_hwnd; static CFinalSunDlg* m_parent; - static CINI& map; + static CINIExt& map; static CINI& fadata; static MultimapHelper& rules; static bool AutoChangeName; diff --git a/FA2sp/ExtraWindow/CNewHouse/CNewHouse.cpp b/FA2sp/ExtraWindow/CNewHouse/CNewHouse.cpp index 540d41b1..159539b3 100644 --- a/FA2sp/ExtraWindow/CNewHouse/CNewHouse.cpp +++ b/FA2sp/ExtraWindow/CNewHouse/CNewHouse.cpp @@ -17,7 +17,7 @@ HWND CNewHouse::m_hwnd; CFinalSunDlg* CNewHouse::m_parent; -CINI& CNewHouse::map = CINI::CurrentDocument; +CINIExt& CNewHouse::map = CINIExt::CurrentDocument; MultimapHelper& CNewHouse::rules = Variables::RulesMap; HWND CNewHouse::hSelectedHouse; diff --git a/FA2sp/ExtraWindow/CNewHouse/CNewHouse.h b/FA2sp/ExtraWindow/CNewHouse/CNewHouse.h index a7f0c978..efdc70b0 100644 --- a/FA2sp/ExtraWindow/CNewHouse/CNewHouse.h +++ b/FA2sp/ExtraWindow/CNewHouse/CNewHouse.h @@ -78,7 +78,7 @@ class CNewHouse private: static HWND m_hwnd; static CFinalSunDlg* m_parent; - static CINI& map; + static CINIExt& map; static MultimapHelper& rules; public: static HWND hSelectedHouse; diff --git a/FA2sp/ExtraWindow/CNewINIEditor/CNewINIEditor.cpp b/FA2sp/ExtraWindow/CNewINIEditor/CNewINIEditor.cpp index a77f6f33..04a3cba6 100644 --- a/FA2sp/ExtraWindow/CNewINIEditor/CNewINIEditor.cpp +++ b/FA2sp/ExtraWindow/CNewINIEditor/CNewINIEditor.cpp @@ -23,7 +23,7 @@ HWND CNewINIEditor::m_hwnd; CFinalSunDlg* CNewINIEditor::m_parent; HWND CNewINIEditor::m_hwndImporter; -CINI& CNewINIEditor::map = CINI::CurrentDocument; +CINIExt& CNewINIEditor::map = CINIExt::CurrentDocument; CINI& CNewINIEditor::fadata = CINI::FAData; MultimapHelper& CNewINIEditor::rules = Variables::RulesMap; diff --git a/FA2sp/ExtraWindow/CNewINIEditor/CNewINIEditor.h b/FA2sp/ExtraWindow/CNewINIEditor/CNewINIEditor.h index 50d4ce37..5f4800aa 100644 --- a/FA2sp/ExtraWindow/CNewINIEditor/CNewINIEditor.h +++ b/FA2sp/ExtraWindow/CNewINIEditor/CNewINIEditor.h @@ -14,6 +14,8 @@ #include "SciLexer.h" #include "Lexilla.h" +class CINIExt; + // A static window class class CNewINIEditor { @@ -81,7 +83,7 @@ class CNewINIEditor static HWND m_hwnd; static CFinalSunDlg* m_parent; static HWND m_hwndImporter; - static CINI& map; + static CINIExt& map; static CINI& fadata; static MultimapHelper& rules; public: diff --git a/FA2sp/ExtraWindow/CNewLocalVariables/CNewLocalVariables.cpp b/FA2sp/ExtraWindow/CNewLocalVariables/CNewLocalVariables.cpp index a63d66d8..122b233b 100644 --- a/FA2sp/ExtraWindow/CNewLocalVariables/CNewLocalVariables.cpp +++ b/FA2sp/ExtraWindow/CNewLocalVariables/CNewLocalVariables.cpp @@ -11,7 +11,7 @@ HWND CNewLocalVariables::m_hwnd; CFinalSunDlg* CNewLocalVariables::m_parent; -CINI& CNewLocalVariables::map = CINI::CurrentDocument; +CINIExt& CNewLocalVariables::map = CINIExt::CurrentDocument; VirtualComboBoxEx CNewLocalVariables::vcbVariables; HWND CNewLocalVariables::hVariables; diff --git a/FA2sp/ExtraWindow/CNewLocalVariables/CNewLocalVariables.h b/FA2sp/ExtraWindow/CNewLocalVariables/CNewLocalVariables.h index 4cb081ec..0f7f240b 100644 --- a/FA2sp/ExtraWindow/CNewLocalVariables/CNewLocalVariables.h +++ b/FA2sp/ExtraWindow/CNewLocalVariables/CNewLocalVariables.h @@ -44,7 +44,7 @@ class CNewLocalVariables private: static HWND m_hwnd; static CFinalSunDlg* m_parent; - static CINI& map; + static CINIExt& map; static HWND hVariables; static HWND hName; diff --git a/FA2sp/ExtraWindow/CNewPropertyAircraft/CNewPropertyAircraft.cpp b/FA2sp/ExtraWindow/CNewPropertyAircraft/CNewPropertyAircraft.cpp index bc5fe199..daca0168 100644 --- a/FA2sp/ExtraWindow/CNewPropertyAircraft/CNewPropertyAircraft.cpp +++ b/FA2sp/ExtraWindow/CNewPropertyAircraft/CNewPropertyAircraft.cpp @@ -1,4 +1,5 @@ #include "CNewPropertyAircraft.h" +#include "../../Miscs/Hooks.INI.h" #include #include "../../FA2sp.h" #include "../../Ext/CFinalSunApp/Body.h" @@ -263,7 +264,7 @@ BOOL CNewPropertyAircraft::OnInitDialog(HWND hDlg) { FString name; name.Format("%s - %s", CString_Tag, - FString::GetParam(CINI::CurrentDocument->GetString("Tags", CString_Tag, "0,MISSING,01000000"), 1)); + FString::GetParam(CINIExt::CurrentDocument->GetString("Tags", CString_Tag, "0,MISSING,01000000"), 1)); index = m_comboBoxes[hTag]->FindStringExact(name); } else diff --git a/FA2sp/ExtraWindow/CNewPropertyBuilding/CNewPropertyBuilding.cpp b/FA2sp/ExtraWindow/CNewPropertyBuilding/CNewPropertyBuilding.cpp index 0c66de3c..bfd2c13c 100644 --- a/FA2sp/ExtraWindow/CNewPropertyBuilding/CNewPropertyBuilding.cpp +++ b/FA2sp/ExtraWindow/CNewPropertyBuilding/CNewPropertyBuilding.cpp @@ -1,4 +1,5 @@ #include "CNewPropertyBuilding.h" +#include "../../Miscs/Hooks.INI.h" #include #include "../../FA2sp.h" #include "../../Ext/CFinalSunApp/Body.h" @@ -363,7 +364,7 @@ BOOL CNewPropertyBuilding::OnInitDialog(HWND hDlg) { FString name; name.Format("%s - %s", CString_Tag, - FString::GetParam(CINI::CurrentDocument->GetString("Tags", CString_Tag, "0,MISSING,01000000"), 1)); + FString::GetParam(CINIExt::CurrentDocument->GetString("Tags", CString_Tag, "0,MISSING,01000000"), 1)); index = m_comboBoxes[hTag]->FindStringExact(name); } else diff --git a/FA2sp/ExtraWindow/CNewPropertyInfantry/CNewPropertyInfantry.cpp b/FA2sp/ExtraWindow/CNewPropertyInfantry/CNewPropertyInfantry.cpp index c9698b30..d9146691 100644 --- a/FA2sp/ExtraWindow/CNewPropertyInfantry/CNewPropertyInfantry.cpp +++ b/FA2sp/ExtraWindow/CNewPropertyInfantry/CNewPropertyInfantry.cpp @@ -1,4 +1,5 @@ #include "CNewPropertyInfantry.h" +#include "../../Miscs/Hooks.INI.h" #include #include "../../FA2sp.h" #include "../../Ext/CFinalSunApp/Body.h" @@ -267,7 +268,7 @@ BOOL CNewPropertyInfantry::OnInitDialog(HWND hDlg) { FString name; name.Format("%s - %s", CString_Tag, - FString::GetParam(CINI::CurrentDocument->GetString("Tags", CString_Tag, "0,MISSING,01000000"), 1)); + FString::GetParam(CINIExt::CurrentDocument->GetString("Tags", CString_Tag, "0,MISSING,01000000"), 1)); index = m_comboBoxes[hTag]->FindStringExact(name); } else diff --git a/FA2sp/ExtraWindow/CNewPropertyUnit/CNewPropertyUnit.cpp b/FA2sp/ExtraWindow/CNewPropertyUnit/CNewPropertyUnit.cpp index c6c7e168..6c556793 100644 --- a/FA2sp/ExtraWindow/CNewPropertyUnit/CNewPropertyUnit.cpp +++ b/FA2sp/ExtraWindow/CNewPropertyUnit/CNewPropertyUnit.cpp @@ -1,4 +1,5 @@ #include "CNewPropertyUnit.h" +#include "../../Miscs/Hooks.INI.h" #include #include "../../FA2sp.h" #include "../../Ext/CFinalSunApp/Body.h" @@ -266,7 +267,7 @@ BOOL CNewPropertyUnit::OnInitDialog(HWND hDlg) { FString name; name.Format("%s - %s", CString_Tag, - FString::GetParam(CINI::CurrentDocument->GetString("Tags", CString_Tag, "0,MISSING,01000000"), 1)); + FString::GetParam(CINIExt::CurrentDocument->GetString("Tags", CString_Tag, "0,MISSING,01000000"), 1)); index = m_comboBoxes[hTag]->FindStringExact(name); } else @@ -316,7 +317,7 @@ BOOL CNewPropertyUnit::OnInitDialog(HWND hDlg) auto vcb = std::make_unique(); vcb->Attach(hFollow, nullptr, true); vcb->AddString("-1 - None"); - if (auto pSection = CINI::CurrentDocument->GetSection("Units")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Units")) { int index = 0; FString text; diff --git a/FA2sp/ExtraWindow/CNewScript/CNewScript.cpp b/FA2sp/ExtraWindow/CNewScript/CNewScript.cpp index 880947a7..ee9ed5f5 100644 --- a/FA2sp/ExtraWindow/CNewScript/CNewScript.cpp +++ b/FA2sp/ExtraWindow/CNewScript/CNewScript.cpp @@ -1,4 +1,5 @@ #include "CNewScript.h" +#include "../../Miscs/Hooks.INI.h" #include "../../FA2sp.h" #include "../../Helpers/Translations.h" #include "../../Helpers/STDHelpers.h" @@ -24,7 +25,7 @@ HWND CNewScript::m_hwnd; CFinalSunDlg* CNewScript::m_parent; -CINI& CNewScript::map = CINI::CurrentDocument; +CINIExt& CNewScript::map = CINIExt::CurrentDocument; CINI& CNewScript::fadata = CINI::FAData; MultimapHelper& CNewScript::rules = Variables::RulesMap; @@ -1224,12 +1225,12 @@ void CNewScript::OnClickCloScript(HWND& hWnd) auto key = CINI::GetAvailableKey("ScriptTypes"); auto value = CMapDataExt::GetAvailableIndex(EIndexType::Script); - CINI::CurrentDocument->WriteString("ScriptTypes", key, value); + CINIExt::CurrentDocument->WriteString("ScriptTypes", key, value); - auto oldname = CINI::CurrentDocument->GetString(CurrentScriptID, "Name", "New script"); + auto oldname = CINIExt::CurrentDocument->GetString(CurrentScriptID, "Name", "New script"); FString newName = ExtraWindow::GetCloneName(oldname); - CINI::CurrentDocument->WriteString(value, "Name", newName); + CINIExt::CurrentDocument->WriteString(value, "Name", newName); CNewTeamTypes::ScriptListChanged = true; auto copyitem = [&value](FString key) @@ -1784,7 +1785,7 @@ void CNewScript::UpdateScriptPath() { if (!CIsoViewExt::DrawScriptPath ||CurrentScriptID.IsEmpty() - || !CINI::CurrentDocument->SectionExists(CurrentScriptID)) + || !CINIExt::CurrentDocument->SectionExists(CurrentScriptID)) return; CIsoViewExt::ScriptPath.clear(); @@ -1793,7 +1794,7 @@ void CNewScript::UpdateScriptPath() { FString key; key.Format("%d", i); - auto value = CINI::CurrentDocument->GetString(CurrentScriptID, key); + auto value = CINIExt::CurrentDocument->GetString(CurrentScriptID, key); auto atoms = FString::SplitString(value); if (atoms.size() < 2) break; auto& action = atoms[0]; @@ -1832,7 +1833,7 @@ void CNewScript::UpdateScriptPath() { if (param[3] == "1") // waypoints { - auto pos = CINI::CurrentDocument->GetInteger("Waypoints", actionParam); + auto pos = CINIExt::CurrentDocument->GetInteger("Waypoints", actionParam); int x = pos / 1000; int y = pos % 1000; CIsoViewExt::ScriptPath.push_back({ x,y }); @@ -1842,7 +1843,7 @@ void CNewScript::UpdateScriptPath() { if (param[1] == "1") // waypoints { - auto pos = CINI::CurrentDocument->GetInteger("Waypoints", actionParam); + auto pos = CINIExt::CurrentDocument->GetInteger("Waypoints", actionParam); int x = pos / 1000; int y = pos % 1000; CIsoViewExt::ScriptPath.push_back({ x,y }); @@ -1921,7 +1922,7 @@ void CNewScript::OnClickJumpButton(bool extra) if (type == ParamType::Waypoint) { FString::TrimIndex(value); - if (auto pCord = CINI::CurrentDocument->TryGetString("Waypoints", value)) + if (auto pCord = CINIExt::CurrentDocument->TryGetString("Waypoints", value)) { auto second = atoi(*pCord); if (second > 0) diff --git a/FA2sp/ExtraWindow/CNewScript/CNewScript.h b/FA2sp/ExtraWindow/CNewScript/CNewScript.h index 62648485..e60ddb6b 100644 --- a/FA2sp/ExtraWindow/CNewScript/CNewScript.h +++ b/FA2sp/ExtraWindow/CNewScript/CNewScript.h @@ -87,7 +87,7 @@ class CNewScript private: static HWND m_hwnd; static CFinalSunDlg* m_parent; - static CINI& map; + static CINIExt& map; static CINI& fadata; static MultimapHelper& rules; public: diff --git a/FA2sp/ExtraWindow/CNewTag/CNewTag.cpp b/FA2sp/ExtraWindow/CNewTag/CNewTag.cpp index 6106bece..e52d3f94 100644 --- a/FA2sp/ExtraWindow/CNewTag/CNewTag.cpp +++ b/FA2sp/ExtraWindow/CNewTag/CNewTag.cpp @@ -1,4 +1,5 @@ #include "CNewTag.h" +#include "../../Miscs/Hooks.INI.h" #include "../../FA2sp.h" #include "../../Helpers/Translations.h" #include "../../Helpers/STDHelpers.h" @@ -25,7 +26,7 @@ HWND CNewTag::m_hwnd; CFinalSunDlg* CNewTag::m_parent; -CINI& CNewTag::map = CINI::CurrentDocument; +CINIExt& CNewTag::map = CINIExt::CurrentDocument; MultimapHelper& CNewTag::rules = Variables::RulesMap; HWND CNewTag::hSelectedTag; @@ -1026,7 +1027,7 @@ void CNewTag::OnClickCloTag(HWND& hWnd) FString newName = ExtraWindow::GetCloneName(oldName); value.SetParam(1, newName); - CINI::CurrentDocument->WriteString("Tags", key, value); + CINIExt::CurrentDocument->WriteString("Tags", key, value); ExtraWindow::SetTriggerColor(key, ExtraWindow::GetTriggerColor(CurrentTagID)); SortTags(vcbSelectedTag, SelectedTagIndex, key); diff --git a/FA2sp/ExtraWindow/CNewTag/CNewTag.h b/FA2sp/ExtraWindow/CNewTag/CNewTag.h index 5b6d652b..e1e5382d 100644 --- a/FA2sp/ExtraWindow/CNewTag/CNewTag.h +++ b/FA2sp/ExtraWindow/CNewTag/CNewTag.h @@ -63,7 +63,7 @@ class CNewTag private: static HWND m_hwnd; static CFinalSunDlg* m_parent; - static CINI& map; + static CINIExt& map; static MultimapHelper& rules; public: static HWND hSelectedTag; diff --git a/FA2sp/ExtraWindow/CNewTaskforce/CNewTaskforce.cpp b/FA2sp/ExtraWindow/CNewTaskforce/CNewTaskforce.cpp index dd219569..a6096bc1 100644 --- a/FA2sp/ExtraWindow/CNewTaskforce/CNewTaskforce.cpp +++ b/FA2sp/ExtraWindow/CNewTaskforce/CNewTaskforce.cpp @@ -1,4 +1,5 @@ #include "CNewTaskforce.h" +#include "../../Miscs/Hooks.INI.h" #include "../../FA2sp.h" #include "../../Helpers/Translations.h" #include "../../Helpers/STDHelpers.h" @@ -24,7 +25,7 @@ HWND CNewTaskforce::m_hwnd; CFinalSunDlg* CNewTaskforce::m_parent; -CINI& CNewTaskforce::map = CINI::CurrentDocument; +CINIExt& CNewTaskforce::map = CINIExt::CurrentDocument; MultimapHelper& CNewTaskforce::rules = Variables::RulesMap; HWND CNewTaskforce::hSelectedTaskforce; @@ -876,12 +877,12 @@ void CNewTaskforce::OnClickCloTaskforce(HWND& hWnd) auto key = CINI::GetAvailableKey("TaskForces"); auto value = CMapDataExt::GetAvailableIndex(EIndexType::TaskForce); - CINI::CurrentDocument->WriteString("TaskForces", key, value); + CINIExt::CurrentDocument->WriteString("TaskForces", key, value); - auto oldname = CINI::CurrentDocument->GetString(CurrentTaskForceID, "Name", "New task force"); + auto oldname = CINIExt::CurrentDocument->GetString(CurrentTaskForceID, "Name", "New task force"); FString newName = ExtraWindow::GetCloneName(oldname); - CINI::CurrentDocument->WriteString(value, "Name", newName); + CINIExt::CurrentDocument->WriteString(value, "Name", newName); CNewTeamTypes::TaskforceListChanged = true; auto copyitem = [&value](FString key) diff --git a/FA2sp/ExtraWindow/CNewTaskforce/CNewTaskforce.h b/FA2sp/ExtraWindow/CNewTaskforce/CNewTaskforce.h index 3d9b3051..9b65a095 100644 --- a/FA2sp/ExtraWindow/CNewTaskforce/CNewTaskforce.h +++ b/FA2sp/ExtraWindow/CNewTaskforce/CNewTaskforce.h @@ -67,7 +67,7 @@ class CNewTaskforce private: static HWND m_hwnd; static CFinalSunDlg* m_parent; - static CINI& map; + static CINIExt& map; static MultimapHelper& rules; public: static HWND hSelectedTaskforce; diff --git a/FA2sp/ExtraWindow/CNewTeamTypes/CNewTeamTypes.cpp b/FA2sp/ExtraWindow/CNewTeamTypes/CNewTeamTypes.cpp index f24ca62f..43571ecd 100644 --- a/FA2sp/ExtraWindow/CNewTeamTypes/CNewTeamTypes.cpp +++ b/FA2sp/ExtraWindow/CNewTeamTypes/CNewTeamTypes.cpp @@ -1,4 +1,5 @@ #include "CNewTeamTypes.h" +#include "../../Miscs/Hooks.INI.h" #include "../CNewTaskforce/CNewTaskforce.h" #include "../CNewScript/CNewScript.h" #include "../CNewTrigger/CNewTrigger.h" @@ -27,7 +28,7 @@ HWND CNewTeamTypes::m_hwnd; CFinalSunDlg* CNewTeamTypes::m_parent; -CINI& CNewTeamTypes::map = CINI::CurrentDocument; +CINIExt& CNewTeamTypes::map = CINIExt::CurrentDocument; MultimapHelper& CNewTeamTypes::rules = Variables::RulesMap; HWND CNewTeamTypes::hSelectedTeam; HWND CNewTeamTypes::hNewTeam; @@ -369,7 +370,7 @@ void CNewTeamTypes::Update(HWND& hWnd) ExtraWindow::ClearComboKeepText(hWaypoint); ExtraWindow::ClearComboKeepText(hTransportWaypoint); vcbTransportWaypoint.AddString("None"); - if (auto pSection = CINI::CurrentDocument->GetSection("Waypoints")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints")) { FString output; for (auto& pair : pSection->GetEntities()) @@ -1863,7 +1864,7 @@ void CNewTeamTypes::OnClickTurnToTransportWaypoint() FString value = vcbTransportWaypoint.GetSelectedText(true); FString::TrimIndex(value); - if (auto pCord = CINI::CurrentDocument->TryGetString("Waypoints", value)) + if (auto pCord = CINIExt::CurrentDocument->TryGetString("Waypoints", value)) { auto second = atoi(*pCord); if (second > 0) @@ -1880,7 +1881,7 @@ void CNewTeamTypes::OnClickTurnToWaypoint() FString value = vcbWaypoint.GetSelectedText(true); FString::TrimIndex(value); - if (auto pCord = CINI::CurrentDocument->TryGetString("Waypoints", value)) + if (auto pCord = CINIExt::CurrentDocument->TryGetString("Waypoints", value)) { auto second = atoi(*pCord); if (second > 0) @@ -2026,12 +2027,12 @@ void CNewTeamTypes::OnClickCloTeam(HWND& hWnd) auto key = CINI::GetAvailableKey("TeamTypes"); auto value = CMapDataExt::GetAvailableIndex(EIndexType::Team); - CINI::CurrentDocument->WriteString("TeamTypes", key, value); + CINIExt::CurrentDocument->WriteString("TeamTypes", key, value); - auto oldname = CINI::CurrentDocument->GetString(CurrentTeamID, "Name", "New Teamtype"); + auto oldname = CINIExt::CurrentDocument->GetString(CurrentTeamID, "Name", "New Teamtype"); FString newName = ExtraWindow::GetCloneName(oldname); - CINI::CurrentDocument->WriteString(value, "Name", newName); + CINIExt::CurrentDocument->WriteString(value, "Name", newName); auto copyitem = [&value](FString key) { diff --git a/FA2sp/ExtraWindow/CNewTeamTypes/CNewTeamTypes.h b/FA2sp/ExtraWindow/CNewTeamTypes/CNewTeamTypes.h index 9e19b22e..a6d05deb 100644 --- a/FA2sp/ExtraWindow/CNewTeamTypes/CNewTeamTypes.h +++ b/FA2sp/ExtraWindow/CNewTeamTypes/CNewTeamTypes.h @@ -118,7 +118,7 @@ class CNewTeamTypes private: static HWND m_hwnd; static CFinalSunDlg* m_parent; - static CINI& map; + static CINIExt& map; static MultimapHelper& rules; public: static HWND hSelectedTeam; diff --git a/FA2sp/ExtraWindow/CNewTrigger/CNewTrigger.cpp b/FA2sp/ExtraWindow/CNewTrigger/CNewTrigger.cpp index be3620dd..3308cf34 100644 --- a/FA2sp/ExtraWindow/CNewTrigger/CNewTrigger.cpp +++ b/FA2sp/ExtraWindow/CNewTrigger/CNewTrigger.cpp @@ -1,4 +1,5 @@ #include "CNewTrigger.h" +#include "../../Miscs/Hooks.INI.h" #include "../../FA2sp.h" #include "../../Helpers/Translations.h" #include "../../Helpers/MultimapHelper.h" @@ -29,7 +30,7 @@ #include "../../Miscs/StringtableLoader.h" #include "../CNewTag/CNewTag.h" -CINI& CNewTrigger::map = CINI::CurrentDocument; +CINIExt& CNewTrigger::map = CINIExt::CurrentDocument; CINI& CNewTrigger::fadata = CINI::FAData; MultimapHelper& CNewTrigger::rules = Variables::RulesMap; CNewTrigger CNewTrigger::Instance[TRIGGER_EDITOR_MAX_COUNT]; @@ -3943,7 +3944,7 @@ void CNewTrigger::OnClickParamJump(bool isEvent, int index) if (type == ParamType::Waypoint) { FString::TrimIndex(value); - if (auto pCord = CINI::CurrentDocument->TryGetString("Waypoints", value)) + if (auto pCord = CINIExt::CurrentDocument->TryGetString("Waypoints", value)) { auto second = atoi(*pCord); if (second > 0) @@ -4150,7 +4151,7 @@ void CNewTrigger::OnClickParamJump(bool isEvent, int index) { FString wp = vcb->GetSelectedText(true); FString::TrimIndex(wp); - if (auto pCord = CINI::CurrentDocument->TryGetString("Waypoints", wp)) + if (auto pCord = CINIExt::CurrentDocument->TryGetString("Waypoints", wp)) { auto second = atoi(*pCord); if (second > 0) diff --git a/FA2sp/ExtraWindow/CNewTrigger/CNewTrigger.h b/FA2sp/ExtraWindow/CNewTrigger/CNewTrigger.h index 0559006a..70e7906f 100644 --- a/FA2sp/ExtraWindow/CNewTrigger/CNewTrigger.h +++ b/FA2sp/ExtraWindow/CNewTrigger/CNewTrigger.h @@ -61,7 +61,7 @@ class Trigger static Trigger* create(const char* id, FMap* pTagMap = nullptr) { - auto atoms = FString::SplitString(CINI::CurrentDocument().GetString("Triggers", id)); + auto atoms = FString::SplitString(CINIExt::CurrentDocument().GetString("Triggers", id)); if (atoms.size() < 8) return nullptr; return new Trigger(id, atoms, pTagMap); @@ -71,15 +71,15 @@ class Trigger FString trigger; trigger.Format("%s,%s,%s,%s,%s,%s,%s,%s", House, AttachedTrigger, Name, Disabled ? "1" : "0", EasyEnabled ? "1" : "0", MediumEnabled ? "1" : "0", HardEnabled ? "1" : "0", Obsolete); - CINI::CurrentDocument().WriteString("Triggers", ID, trigger); - auto tag = CINI::CurrentDocument().GetString("Tags", Tag, ""); + CINIExt::CurrentDocument().WriteString("Triggers", ID, trigger); + auto tag = CINIExt::CurrentDocument().GetString("Tags", Tag, ""); if (tag != "") { auto triggerId = FString::GetParam(tag, 2); if (triggerId == ID) { tag.Format("%s,%s,%s", RepeatType, TagName, triggerId); - CINI::CurrentDocument().WriteString("Tags", Tag, tag); + CINIExt::CurrentDocument().WriteString("Tags", Tag, tag); } } FString cEvent; @@ -93,7 +93,7 @@ class Trigger tmp.Format(",%s,%s,%s", thisEvent.EventNum, thisEvent.Params[0], thisEvent.Params[1]); cEvent += tmp; } - CINI::CurrentDocument().WriteString("Events", ID, cEvent); + CINIExt::CurrentDocument().WriteString("Events", ID, cEvent); FString cAction; cAction.Format("%d", ActionCount); @@ -105,7 +105,7 @@ class Trigger , thisAction.Params[4], thisAction.Params[5], thisAction.Params[6]); cAction += tmp; } - CINI::CurrentDocument().WriteString("Actions", ID, cAction); + CINIExt::CurrentDocument().WriteString("Actions", ID, cAction); } void LoadFromMap(const char* id, std::vector& atoms, FMap* pTagMap = nullptr) @@ -113,7 +113,7 @@ class Trigger if (atoms.size() < 8) return; - auto& doc = CINI::CurrentDocument(); + auto& doc = CINIExt::CurrentDocument(); ID = id; House = atoms[0]; @@ -594,7 +594,7 @@ class CNewTrigger HWND m_hwnd; CFinalSunDlg* m_parent; - static CINI& map; + static CINIExt& map; static CINI& fadata; static MultimapHelper& rules; public: diff --git a/FA2sp/ExtraWindow/CObjectSearch/CObjectSearch.cpp b/FA2sp/ExtraWindow/CObjectSearch/CObjectSearch.cpp index 2b26926e..0129fb49 100644 --- a/FA2sp/ExtraWindow/CObjectSearch/CObjectSearch.cpp +++ b/FA2sp/ExtraWindow/CObjectSearch/CObjectSearch.cpp @@ -1080,7 +1080,7 @@ void CObjectSearch::OnSearchButtonUp(HWND hWnd) wp = "0"; } wp = wp.substr(start, end - start); - auto pWP = CINI::CurrentDocument->GetString("Waypoints", wp.c_str(), "-1"); + auto pWP = CINIExt::CurrentDocument->GetString("Waypoints", wp.c_str(), "-1"); auto second = atoi(pWP); if (second >= 0) { @@ -1801,7 +1801,7 @@ void CObjectSearch::UpdateDetailsWaypoint(HWND hWnd) while (SendMessage(hListBox, LB_DELETESTRING, 0, NULL) != LB_ERR); CObjectSearch::ListBoxIndex = 0; CObjectSearch::ListBox_MapCoord.clear(); - if (auto pSection = CINI::CurrentDocument->GetSection("Waypoints")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints")) { for (auto& pair : pSection->GetEntities()) { diff --git a/FA2sp/ExtraWindow/CSearhReference/CSearhReference.cpp b/FA2sp/ExtraWindow/CSearhReference/CSearhReference.cpp index 15b50992..2bfa1bf3 100644 --- a/FA2sp/ExtraWindow/CSearhReference/CSearhReference.cpp +++ b/FA2sp/ExtraWindow/CSearhReference/CSearhReference.cpp @@ -19,7 +19,7 @@ HWND CSearhReference::m_hwnd; CFinalSunDlg* CSearhReference::m_parent; -CINI& CSearhReference::map = CINI::CurrentDocument; +CINIExt& CSearhReference::map = CINIExt::CurrentDocument; MultimapHelper& CSearhReference::rules = Variables::RulesMap; HWND CSearhReference::hListbox; @@ -479,7 +479,7 @@ void CSearhReference::Update(bool top) } } } - if (auto pObjSection = CINI::CurrentDocument->GetSection("Structures")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("Structures")) { for (auto& pair : pObjSection->GetEntities()) { @@ -506,7 +506,7 @@ void CSearhReference::Update(bool top) } } } - if (auto pObjSection = CINI::CurrentDocument->GetSection("Aircraft")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("Aircraft")) { for (auto& pair : pObjSection->GetEntities()) { @@ -533,7 +533,7 @@ void CSearhReference::Update(bool top) } } } - if (auto pObjSection = CINI::CurrentDocument->GetSection("Units")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("Units")) { for (auto& pair : pObjSection->GetEntities()) { @@ -560,7 +560,7 @@ void CSearhReference::Update(bool top) } } } - if (auto pObjSection = CINI::CurrentDocument->GetSection("Infantry")) + if (auto pObjSection = CINIExt::CurrentDocument->GetSection("Infantry")) { for (auto& pair : pObjSection->GetEntities()) { @@ -587,7 +587,7 @@ void CSearhReference::Update(bool top) } } } - if (auto pSection = CINI::CurrentDocument->GetSection("CellTags")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("CellTags")) { for (auto& pairObj : pSection->GetEntities()) { diff --git a/FA2sp/ExtraWindow/CSearhReference/CSearhReference.h b/FA2sp/ExtraWindow/CSearhReference/CSearhReference.h index 87311124..14830ea7 100644 --- a/FA2sp/ExtraWindow/CSearhReference/CSearhReference.h +++ b/FA2sp/ExtraWindow/CSearhReference/CSearhReference.h @@ -74,7 +74,7 @@ class CSearhReference private: static HWND m_hwnd; static CFinalSunDlg* m_parent; - static CINI& map; + static CINIExt& map; static MultimapHelper& rules; static HWND hListbox; diff --git a/FA2sp/ExtraWindow/CSelectAutoShore/CSelectAutoShore.cpp b/FA2sp/ExtraWindow/CSelectAutoShore/CSelectAutoShore.cpp index 6c595359..1b61bec2 100644 --- a/FA2sp/ExtraWindow/CSelectAutoShore/CSelectAutoShore.cpp +++ b/FA2sp/ExtraWindow/CSelectAutoShore/CSelectAutoShore.cpp @@ -38,7 +38,7 @@ BOOL CSelectAutoShore::OnInitDialog() if (auto pSection = CINI::FAData->GetSection("AutoShoreTypes")) { int index = 0; - auto thisTheater = CINI::CurrentDocument().GetString("Map", "Theater"); + auto thisTheater = CINIExt::CurrentDocument().GetString("Map", "Theater"); for (const auto& type : pSection->GetEntities()) { auto atoms = STDHelpers::SplitString(type.second, 3); diff --git a/FA2sp/ExtraWindow/CTechnoDialog/CTechnoDialog.cpp b/FA2sp/ExtraWindow/CTechnoDialog/CTechnoDialog.cpp index 0c63773c..cd6ce7fe 100644 --- a/FA2sp/ExtraWindow/CTechnoDialog/CTechnoDialog.cpp +++ b/FA2sp/ExtraWindow/CTechnoDialog/CTechnoDialog.cpp @@ -284,7 +284,7 @@ BOOL CTechnoDialog::OnInitDialog(HWND hDlg) { FString name; name.Format("%s - %s", m_strTag, - FString::GetParam(CINI::CurrentDocument->GetString("Tags", m_strTag, "0,MISSING,01000000"), 1)); + FString::GetParam(CINIExt::CurrentDocument->GetString("Tags", m_strTag, "0,MISSING,01000000"), 1)); index = m_comboBoxes[hTag]->FindStringExact(name); } else @@ -484,7 +484,7 @@ BOOL CTechnoDialog::OnInitDialog(HWND hDlg) auto vcb = std::make_unique(); vcb->Attach(hFollow, nullptr, true); vcb->AddString("-1 - None"); - if (auto pSection = CINI::CurrentDocument->GetSection("Units")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Units")) { int index = 0; FString text; diff --git a/FA2sp/ExtraWindow/CTerrainGenerator/CTerrainGenerator.cpp b/FA2sp/ExtraWindow/CTerrainGenerator/CTerrainGenerator.cpp index 4b27b70b..abfbc249 100644 --- a/FA2sp/ExtraWindow/CTerrainGenerator/CTerrainGenerator.cpp +++ b/FA2sp/ExtraWindow/CTerrainGenerator/CTerrainGenerator.cpp @@ -15,7 +15,7 @@ HWND CTerrainGenerator::m_hwnd; CFinalSunDlg* CTerrainGenerator::m_parent; -CINI& CTerrainGenerator::map = CINI::CurrentDocument; +CINIExt& CTerrainGenerator::map = CINIExt::CurrentDocument; std::unique_ptr> CTerrainGenerator::ini = nullptr; MultimapHelper& CTerrainGenerator::rules = Variables::RulesMap; HWND CTerrainGenerator::hTab; diff --git a/FA2sp/ExtraWindow/CTerrainGenerator/CTerrainGenerator.h b/FA2sp/ExtraWindow/CTerrainGenerator/CTerrainGenerator.h index 5ea6d022..a56af095 100644 --- a/FA2sp/ExtraWindow/CTerrainGenerator/CTerrainGenerator.h +++ b/FA2sp/ExtraWindow/CTerrainGenerator/CTerrainGenerator.h @@ -423,7 +423,7 @@ class CTerrainGenerator static bool bIgnoreLandtypes; static bool ProgrammaticallySettingText; - static CINI& map; + static CINIExt& map; static MultimapHelper& rules; static FMap> TerrainGeneratorPresets; static WNDPROC g_pOriginalTabPageProc; diff --git a/FA2sp/ExtraWindow/CTriggerAnnotation/CTriggerAnnotation.cpp b/FA2sp/ExtraWindow/CTriggerAnnotation/CTriggerAnnotation.cpp index 50507c55..5db1e29e 100644 --- a/FA2sp/ExtraWindow/CTriggerAnnotation/CTriggerAnnotation.cpp +++ b/FA2sp/ExtraWindow/CTriggerAnnotation/CTriggerAnnotation.cpp @@ -104,7 +104,7 @@ void CTriggerAnnotation::Update(const char* filter) text.Format(Translations::TranslateOrDefault("TriggerAnnotation.Text", "Current Object: %s"), name); SendMessage(hText, WM_SETTEXT, 0, text); - FString annotation = CINI::CurrentDocument->GetString("TriggerAnnotations", ID); + FString annotation = CINIExt::CurrentDocument->GetString("TriggerAnnotations", ID); if (!annotation.IsEmpty()) { size_t start = annotation.Find("START,"); @@ -236,7 +236,7 @@ void CTriggerAnnotation::OnEditchangeEdit() FString text(Buffer); if (text.IsEmpty()) { - CINI::CurrentDocument->DeleteKey("TriggerAnnotations", ID); + CINIExt::CurrentDocument->DeleteKey("TriggerAnnotations", ID); return; } text.Replace("\n\r", "\\n"); @@ -245,5 +245,5 @@ void CTriggerAnnotation::OnEditchangeEdit() text.Replace("\r", "\\n"); text = "START," + text; text = text + ",END"; - CINI::CurrentDocument->WriteString("TriggerAnnotations", ID, text); + CINIExt::CurrentDocument->WriteString("TriggerAnnotations", ID, text); } diff --git a/FA2sp/ExtraWindow/Common.cpp b/FA2sp/ExtraWindow/Common.cpp index 0787133d..2cb04e7e 100644 --- a/FA2sp/ExtraWindow/Common.cpp +++ b/FA2sp/ExtraWindow/Common.cpp @@ -28,7 +28,7 @@ #include #pragma comment(lib, "winmm.lib") -CINI& ExtraWindow::map = CINI::CurrentDocument; +CINIExt& ExtraWindow::map = CINIExt::CurrentDocument; CINI& ExtraWindow::fadata = CINI::FAData; MultimapHelper& ExtraWindow::rules = Variables::RulesMap; std::vector ExtraWindow::g_DropTargets; @@ -414,7 +414,7 @@ void ExtraWindow::LoadParams(VirtualComboBoxEx& vcb, FString idx, CNewTrigger* i { for (auto pINI : mmh.GetINIData()) { - if (pINI == &CINI::CurrentDocument) + if (pINI == &CINIExt::CurrentDocument) { // refresh indicies CMapDataExt::UpdateMapSectionIndicies(sectionName); @@ -525,7 +525,7 @@ void ExtraWindow::LoadParam_CountryList(VirtualComboBoxEx& vcb) { MultimapHelper mmh; mmh.AddINI(&CINI::Rules); - mmh.AddINI(&CINI::CurrentDocument); + mmh.AddINI(&CINIExt::CurrentDocument); int rIdx = 0; const auto& indicies = Variables::RulesMap.ParseIndicies("Countries", true); @@ -823,7 +823,7 @@ void ExtraWindow::LoadParams_Houses(VirtualComboBoxEx& vcb, bool multiOnly, bool players = false; auto pCountry = CINI::Rules->GetSection("Countries"); - auto pHouse = CINI::CurrentDocument->GetSection("Houses"); + auto pHouse = CINIExt::CurrentDocument->GetSection("Houses"); INISection* pSection = nullptr; if (CMapDataExt::IsInitingPropertyDialog) @@ -1404,7 +1404,7 @@ void ExtraWindow::LoadFrom(MultimapHelper& mmh, FString loadfrom) mmh = Variables::RulesMap; } else if (loadfrom == "3" || loadfrom == "map") - mmh.AddINI(&CINI::CurrentDocument); + mmh.AddINI(&CINIExt::CurrentDocument); else if (loadfrom == "4" || loadfrom == "art") mmh.AddINI(&CINI::Art); else if (loadfrom == "5" || loadfrom == "sound") @@ -1414,7 +1414,7 @@ void ExtraWindow::LoadFrom(MultimapHelper& mmh, FString loadfrom) else if (loadfrom == "7" || loadfrom == "ai+map") { mmh.AddINI(&CINI::Ai); - mmh.AddINI(&CINI::CurrentDocument); + mmh.AddINI(&CINIExt::CurrentDocument); } else if (loadfrom == "8" || loadfrom == "eva") mmh.AddINI(&CINI::Eva); @@ -4249,11 +4249,11 @@ BOOL CINIDialog::OnInitDialog() { if (info.Type == ControlType::CheckBox) { - CheckDlgButton(GetSafeHwnd(), id, CINI::CurrentDocument->GetBool(info.IniSection, info.IniKey) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(GetSafeHwnd(), id, CINIExt::CurrentDocument->GetBool(info.IniSection, info.IniKey) ? BST_CHECKED : BST_UNCHECKED); } else if (info.Type == ControlType::Edit) { - GetDlgItem(id)->SetWindowText(CINI::CurrentDocument->GetString(info.IniSection, info.IniKey)); + GetDlgItem(id)->SetWindowText(CINIExt::CurrentDocument->GetString(info.IniSection, info.IniKey)); } else if (info.Type == ControlType::Combobox) { @@ -4263,7 +4263,7 @@ BOOL CINIDialog::OnInitDialog() box->AddString(label); } ExtraWindow::AdjustDropdownWidth(box->GetSafeHwnd()); - auto text = CINI::CurrentDocument->GetString(info.IniSection, info.IniKey); + auto text = CINIExt::CurrentDocument->GetString(info.IniSection, info.IniKey); int idx = box->FindStringExact(0, text); if (idx != CB_ERR) { @@ -4318,7 +4318,7 @@ BOOL CINIDialog::OnCommand(WPARAM wParam, LPARAM lParam) if (info.Type == ControlType::CheckBox && nNotify == BN_CLICKED) { bool checked = (IsDlgButtonChecked(GetSafeHwnd(), nID) == BST_CHECKED); - CINI::CurrentDocument->WriteString(info.IniSection, info.IniKey, checked ? "yes" : "no"); + CINIExt::CurrentDocument->WriteString(info.IniSection, info.IniKey, checked ? "yes" : "no"); info.CallBack(); } else if (info.Type == ControlType::Edit && nNotify == EN_CHANGE) @@ -4327,9 +4327,9 @@ BOOL CINIDialog::OnCommand(WPARAM wParam, LPARAM lParam) GetDlgItem(nID)->GetWindowText(buffer); buffer.Trim(); if (!buffer.IsEmpty()) - CINI::CurrentDocument->WriteString(info.IniSection, info.IniKey, buffer); + CINIExt::CurrentDocument->WriteString(info.IniSection, info.IniKey, buffer); else - CINI::CurrentDocument->DeleteKey(info.IniSection, info.IniKey); + CINIExt::CurrentDocument->DeleteKey(info.IniSection, info.IniKey); info.CallBack(); } else if (info.Type == ControlType::Combobox && nNotify == CBN_SELCHANGE) @@ -4343,9 +4343,9 @@ BOOL CINIDialog::OnCommand(WPARAM wParam, LPARAM lParam) box->GetWindowText(buffer); buffer.Trim(); if (!buffer.IsEmpty()) - CINI::CurrentDocument->WriteString(info.IniSection, info.IniKey, buffer); + CINIExt::CurrentDocument->WriteString(info.IniSection, info.IniKey, buffer); else - CINI::CurrentDocument->DeleteKey(info.IniSection, info.IniKey); + CINIExt::CurrentDocument->DeleteKey(info.IniSection, info.IniKey); info.CallBack(); } else if (info.Type == ControlType::Combobox && nNotify == CBN_EDITCHANGE) @@ -4354,9 +4354,9 @@ BOOL CINIDialog::OnCommand(WPARAM wParam, LPARAM lParam) GetDlgItem(nID)->GetWindowText(buffer); buffer.Trim(); if (!buffer.IsEmpty()) - CINI::CurrentDocument->WriteString(info.IniSection, info.IniKey, buffer); + CINIExt::CurrentDocument->WriteString(info.IniSection, info.IniKey, buffer); else - CINI::CurrentDocument->DeleteKey(info.IniSection, info.IniKey); + CINIExt::CurrentDocument->DeleteKey(info.IniSection, info.IniKey); info.CallBack(); } else if (info.Type == ControlType::Button && nNotify == BN_CLICKED) diff --git a/FA2sp/ExtraWindow/Common.h b/FA2sp/ExtraWindow/Common.h index 1d4d21fe..a4897ef0 100644 --- a/FA2sp/ExtraWindow/Common.h +++ b/FA2sp/ExtraWindow/Common.h @@ -1,6 +1,7 @@ #pragma once #include "FA2PP.h" #include "../Helpers/MultimapHelper.h" +#include "../Miscs/Hooks.INI.h" #include class FString; @@ -202,7 +203,7 @@ class ExtraWindow }; static BOOL CALLBACK DisableOtherWindowsProc(HWND hEnum, LPARAM lParam); static std::vector s_disabledWindows; - static CINI& map; + static CINIExt& map; static CINI& fadata; static MultimapHelper& rules; }; diff --git a/FA2sp/FA2sp.cpp b/FA2sp/FA2sp.cpp index b2ce28e1..87109969 100644 --- a/FA2sp/FA2sp.cpp +++ b/FA2sp/FA2sp.cpp @@ -263,10 +263,10 @@ float ExtConfigs::IsoViewHeightPercentage = 0.5f; std::vector ExtConfigs::Options; -MultimapHelper Variables::RulesMap = {&CINI::Rules(), &CINI::CurrentDocument()}; +MultimapHelper Variables::RulesMap = {&CINI::Rules(), &CINIExt::CurrentDocument()}; MultimapHelper Variables::Rules = {&CINI::Rules()}; MultimapHelper Variables::FAData = {&CINI::FAData()}; -MultimapHelper Variables::Rules_FAData = {&CINI::Rules(), &CINI::CurrentDocument(), &CINI::FAData()}; +MultimapHelper Variables::Rules_FAData = {&CINI::Rules(), &CINIExt::CurrentDocument(), &CINI::FAData()}; void FA2sp::ExtConfigsInitialize() { diff --git a/FA2sp/Helpers/ControlHelpers.cpp b/FA2sp/Helpers/ControlHelpers.cpp index 6099abbb..87a25c00 100644 --- a/FA2sp/Helpers/ControlHelpers.cpp +++ b/FA2sp/Helpers/ControlHelpers.cpp @@ -4,6 +4,7 @@ #include "MultimapHelper.h" #include "../FA2sp.h" +#include "../Miscs/Hooks.INI.h" #include @@ -29,12 +30,12 @@ namespace ControlHelpers void ComboBox::LoadCountries(ppmfc::CComboBox& combobox, bool bShowIndex) { combobox.DeleteAllStrings(); - auto& doc = CINI::CurrentDocument(); + auto& doc = CINIExt::CurrentDocument(); MultimapHelper mmh; mmh.AddINI(&CINI::Rules()); - mmh.AddINI(&CINI::CurrentDocument()); + mmh.AddINI(&CINIExt::CurrentDocument()); auto&& entries = mmh.ParseIndicies("Countries", true); @@ -108,10 +109,10 @@ namespace ControlHelpers break; case 2: mmh.AddINI(&CINI::Rules()); - mmh.AddINI(&CINI::CurrentDocument()); + mmh.AddINI(&CINIExt::CurrentDocument()); break; case 3: - mmh.AddINI(&CINI::CurrentDocument()); + mmh.AddINI(&CINIExt::CurrentDocument()); break; case 4: mmh.AddINI(&CINI::Art()); @@ -119,7 +120,7 @@ namespace ControlHelpers case 5: mmh.AddINI(&CINI::FAData()); mmh.AddINI(&CINI::Rules()); - mmh.AddINI(&CINI::CurrentDocument()); + mmh.AddINI(&CINIExt::CurrentDocument()); break; } if (bUseStrictOrder) @@ -242,39 +243,39 @@ namespace ControlHelpers { if (bShowIndex) { - combobox.SetItemData(combobox.AddString("-1 - Ëæ»ú·ÇÖÐÁ¢ËùÊô·½"), -1); - combobox.SetItemData(combobox.AddString("-2 - µÚÒ»¸öÖÐÁ¢ËùÊô·½"), -2); - combobox.SetItemData(combobox.AddString("-3 - Ëæ»úÈËÀàÍæ¼Ò"), -3); + combobox.SetItemData(combobox.AddString("-1 - éš�机é�žä¸­ç«‹æ‰€å±žæ–¹"), -1); + combobox.SetItemData(combobox.AddString("-2 - 第一个中立所属方"), -2); + combobox.SetItemData(combobox.AddString("-3 - éš�机人类玩家"), -3); } else { - combobox.SetItemData(combobox.AddString("Ëæ»ú·ÇÖÐÁ¢ËùÊô·½"), -1); - combobox.SetItemData(combobox.AddString("µÚÒ»¸öÖÐÁ¢ËùÊô·½"), -2); - combobox.SetItemData(combobox.AddString("Ëæ»úÈËÀàÍæ¼Ò"), -3); + combobox.SetItemData(combobox.AddString("éš�机é�žä¸­ç«‹æ‰€å±žæ–¹"), -1); + combobox.SetItemData(combobox.AddString("第一个中立所属方"), -2); + combobox.SetItemData(combobox.AddString("éš�机人类玩家"), -3); } } void ComboBox::LoadHousesAddon2(ppmfc::CComboBox& combobox, bool bShowIndex) { if (bShowIndex) { - combobox.SetItemData(combobox.AddString("-1 - ÈÎÒâËùÊô·½"), -1); - combobox.SetItemData(combobox.AddString("-2 - ´¥·¢ËùÊô·½"), -2); + combobox.SetItemData(combobox.AddString("-1 - ä»»æ„�所属方"), -1); + combobox.SetItemData(combobox.AddString("-2 - 触å�‘所属方"), -2); } else { - combobox.SetItemData(combobox.AddString("ÈÎÒâËùÊô·½"), -1); - combobox.SetItemData(combobox.AddString("´¥·¢ËùÊô·½"), -2); + combobox.SetItemData(combobox.AddString("ä»»æ„�所属方"), -1); + combobox.SetItemData(combobox.AddString("触å�‘所属方"), -2); } } void ComboBox::LoadHousesAddon3(ppmfc::CComboBox& combobox, bool bShowIndex) { if (bShowIndex) { - combobox.SetItemData(combobox.AddString("-1 - ÈÎÒâËùÊô·½"), -1); + combobox.SetItemData(combobox.AddString("-1 - ä»»æ„�所属方"), -1); } else { - combobox.SetItemData(combobox.AddString("ÈÎÒâËùÊô·½"), -1); + combobox.SetItemData(combobox.AddString("ä»»æ„�所属方"), -1); } } void ComboBox::LoadHousesAddonMulti(ppmfc::CComboBox& combobox, bool bShowIndex) diff --git a/FA2sp/Helpers/TheaterHelpers.h b/FA2sp/Helpers/TheaterHelpers.h index ef846dfc..450afef4 100644 --- a/FA2sp/Helpers/TheaterHelpers.h +++ b/FA2sp/Helpers/TheaterHelpers.h @@ -8,6 +8,7 @@ #include #include +#include "../Miscs/Hooks.INI.h" #include #include @@ -67,7 +68,7 @@ class TheaterHelpers if (!CMapData::Instance->MapWidthPlusHeight) return ""; - return GetSuffix(CINI::CurrentDocument->GetString("Map", "Theater")); + return GetSuffix(CINIExt::CurrentDocument->GetString("Map", "Theater")); } static bool IsAllowedTheaterName(ppmfc::CString theaterName) diff --git a/FA2sp/Miscs/CopyPaste.cpp b/FA2sp/Miscs/CopyPaste.cpp index 7be86718..4c66878b 100644 --- a/FA2sp/Miscs/CopyPaste.cpp +++ b/FA2sp/Miscs/CopyPaste.cpp @@ -101,7 +101,7 @@ void CopyPaste::Copy(const std::set& coords) auto it = structures.begin(); std::advance(it, 0); int iniIndex = CMapDataExt::StructureIndexMap[it->first]; - ppmfc::CString value = CINI::CurrentDocument->GetValueAt("Structures", iniIndex); + ppmfc::CString value = CINIExt::CurrentDocument->GetValueAt("Structures", iniIndex); auto atoms = STDHelpers::SplitString(value, 16); if (coords.X == atoi(atoms[4]) && coords.Y == atoi(atoms[3])) { @@ -114,7 +114,7 @@ void CopyPaste::Copy(const std::set& coords) auto it = structures.begin(); std::advance(it, 1); int iniIndex = CMapDataExt::StructureIndexMap[it->first]; - ppmfc::CString value = CINI::CurrentDocument->GetValueAt("Structures", iniIndex); + ppmfc::CString value = CINIExt::CurrentDocument->GetValueAt("Structures", iniIndex); auto atoms = STDHelpers::SplitString(value, 16); if (coords.X == atoi(atoms[4]) && coords.Y == atoi(atoms[3])) { @@ -127,7 +127,7 @@ void CopyPaste::Copy(const std::set& coords) auto it = structures.begin(); std::advance(it, 2); int iniIndex = CMapDataExt::StructureIndexMap[it->first]; - ppmfc::CString value = CINI::CurrentDocument->GetValueAt("Structures", iniIndex); + ppmfc::CString value = CINIExt::CurrentDocument->GetValueAt("Structures", iniIndex); auto atoms = STDHelpers::SplitString(value, 16); if (coords.X == atoi(atoms[4]) && coords.Y == atoi(atoms[3])) { @@ -137,29 +137,29 @@ void CopyPaste::Copy(const std::set& coords) } if (pCell->Aircraft > -1) { - ppmfc::CString value = CINI::CurrentDocument->GetValueAt("Aircraft", pCell->Aircraft); + ppmfc::CString value = CINIExt::CurrentDocument->GetValueAt("Aircraft", pCell->Aircraft); pushString(value.GetString(), item.AircraftData); objectMask |= ObjectRecord::RecordType::Aircraft; } if (pCell->Infantry[0] > -1) { - ppmfc::CString value = CINI::CurrentDocument->GetValueAt("Infantry", pCell->Infantry[0]); + ppmfc::CString value = CINIExt::CurrentDocument->GetValueAt("Infantry", pCell->Infantry[0]); pushString(value.GetString(), item.InfantryData_1); objectMask |= ObjectRecord::RecordType::Infantry; } if (pCell->Infantry[1] > -1) { - ppmfc::CString value = CINI::CurrentDocument->GetValueAt("Infantry", pCell->Infantry[1]); + ppmfc::CString value = CINIExt::CurrentDocument->GetValueAt("Infantry", pCell->Infantry[1]); pushString(value.GetString(), item.InfantryData_2); objectMask |= ObjectRecord::RecordType::Infantry; } if (pCell->Infantry[2] > -1) { - ppmfc::CString value = CINI::CurrentDocument->GetValueAt("Infantry", pCell->Infantry[2]); + ppmfc::CString value = CINIExt::CurrentDocument->GetValueAt("Infantry", pCell->Infantry[2]); pushString(value.GetString(), item.InfantryData_3); objectMask |= ObjectRecord::RecordType::Infantry; } if (pCell->Unit > -1) { - ppmfc::CString value = CINI::CurrentDocument->GetValueAt("Units", pCell->Unit); + ppmfc::CString value = CINIExt::CurrentDocument->GetValueAt("Units", pCell->Unit); pushString(value.GetString(), item.UnitData); objectMask |= ObjectRecord::RecordType::Unit; } diff --git a/FA2sp/Miscs/Exception.cpp b/FA2sp/Miscs/Exception.cpp index 216e227e..5f195052 100644 --- a/FA2sp/Miscs/Exception.cpp +++ b/FA2sp/Miscs/Exception.cpp @@ -1,5 +1,6 @@ #include "Exception.h" #include "SaveMap.h" +#include "Hooks.INI.h" #include "../FA2sp.h" #include "../FA2sp.Constants.h" @@ -208,7 +209,7 @@ LONG CALLBACK Exception::ExceptionFilter(PEXCEPTION_POINTERS const pExs) CINI::Temperate->Release(); CINI::Snow->Release(); CINI::Urban->Release(); - CINI::CurrentDocument->Release(); + CINIExt::CurrentDocument->Release(); CINI::Sound->Release(); CINI::Turtorial->Release(); CINI::FAData->Release(); diff --git a/FA2sp/Miscs/Hooks.INI.cpp b/FA2sp/Miscs/Hooks.INI.cpp index a23616e0..6545ac34 100644 --- a/FA2sp/Miscs/Hooks.INI.cpp +++ b/FA2sp/Miscs/Hooks.INI.cpp @@ -158,6 +158,23 @@ INISection* CINIExt::AddOrGetSection(ppmfc::CString pSectionName) return pSection; } +bool CINIExt::WriteBool(ppmfc::CString pSection, ppmfc::CString pKey, bool pValue) +{ + return WriteString(pSection, pKey, pValue ? "yes" : "no"); +} + +int CINIExt::ClearAndLoad(const char* lpPath, int bTrimSpace) +{ + CINIOrderTracker::Clear(this); + return CINI::ClearAndLoad(lpPath, bTrimSpace); +} + +void CINIExt::Release() +{ + CINIOrderTracker::Clear(this); + CINI::Release(); +} + using INIPair = std::pair; void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, bool bClear, bool bTrimSpace, bool bAllowInclude, std::vector* parentIncludeInis) @@ -207,7 +224,7 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, } bool findTargetSection = false; bool firstLine = true; - bool keepComment = this == &CINI::CurrentDocument && ExtConfigs::SaveMap_KeepComments; + bool keepComment = this == &CINIExt::CurrentDocument && ExtConfigs::SaveMap_KeepComments; std::istringstream iss(content); FString line; @@ -441,7 +458,7 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, const char* includeSection = IsLoadingFAini ? "Include" : (ExtConfigs::IncludeType ? "$Include" : "#include"); auto pIncludeSection = GetSection(includeSection); if (pIncludeSection || parentIncludeInis) { - if (this == &CINI::CurrentDocument) { + if (this == &CINIExt::CurrentDocument) { INIIncludes::MapINIWarn = true; } std::set includedInis; @@ -552,7 +569,7 @@ void CINIExt::LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, } } - if (CMapDataExt::IsLoadingMapFile && this == &CINI::CurrentDocument) { + if (CMapDataExt::IsLoadingMapFile && this == &CINIExt::CurrentDocument) { if (loadAsUTF8) { Logger::Debug("CINIExt::LoadINIExt(): Load map file using UTF8 encoding.\n"); CMapDataExt::IsUTF8File = true; diff --git a/FA2sp/Miscs/Hooks.INI.h b/FA2sp/Miscs/Hooks.INI.h index 4c52a556..a66bcbd9 100644 --- a/FA2sp/Miscs/Hooks.INI.h +++ b/FA2sp/Miscs/Hooks.INI.h @@ -35,11 +35,14 @@ class NOVTABLE CINIExt : public CINI bool WriteString(ppmfc::CString pSection, ppmfc::CString pKey, ppmfc::CString pValue); bool WriteString(INISection* pSection, ppmfc::CString pKey, ppmfc::CString pValue); + bool WriteBool(ppmfc::CString pSection, ppmfc::CString pKey, bool pValue); bool DeleteKey(ppmfc::CString pSection, ppmfc::CString pKey); bool DeleteKey(INISection* pSection, ppmfc::CString pKey); bool DeleteSection(ppmfc::CString pSection); INISection* AddSection(ppmfc::CString pSectionName); INISection* AddOrGetSection(ppmfc::CString pSectionName); + void Release(); + int ClearAndLoad(const char* lpPath, int bTrimSpace = 0); void LoadINIExt(uint8_t* pFile, size_t fileSize, const char* lpSection, bool bClear, bool bTrimSpace, bool bAllowInclude, std::vector>* parentIncludeInis = nullptr); @@ -50,6 +53,9 @@ class NOVTABLE CINIExt : public CINI static constexpr reference const CurrentDocument{}; }; +// Global proxy instance representing the map document (maps to 0x7ACC80) +inline constexpr reference const CurrentDocument{}; + struct CINIInfo { FString Name; diff --git a/FA2sp/Miscs/Hooks.UserScripts.cpp b/FA2sp/Miscs/Hooks.UserScripts.cpp index e578cb24..d594d971 100644 --- a/FA2sp/Miscs/Hooks.UserScripts.cpp +++ b/FA2sp/Miscs/Hooks.UserScripts.cpp @@ -208,7 +208,7 @@ DEFINE_HOOK(516974, CUserScripts_NewFunction_SwitchID, 8) break; } MultimapHelper mmh; - mmh.AddINI(&CINI::CurrentDocument); + mmh.AddINI(&CINIExt::CurrentDocument); if (UserScriptExt::ParamCount > 4) { mmh.Clear(); auto loadfrom = UserScriptExt::GetParam(Params, 4); @@ -237,7 +237,7 @@ DEFINE_HOOK(516974, CUserScripts_NewFunction_SwitchID, 8) break; } CNewComboUInputDlg dlg; - dlg.mmh.AddINI(&CINI::CurrentDocument); + dlg.mmh.AddINI(&CINIExt::CurrentDocument); if (UserScriptExt::ParamCount > 4) { dlg.mmh.Clear(); auto loadfrom = UserScriptExt::GetParam(Params, 4); @@ -282,7 +282,7 @@ DEFINE_HOOK(516974, CUserScripts_NewFunction_SwitchID, 8) break; } MultimapHelper mmh; - mmh.AddINI(&CINI::CurrentDocument); + mmh.AddINI(&CINIExt::CurrentDocument); if (UserScriptExt::ParamCount > 3) { mmh.Clear(); auto loadfrom = UserScriptExt::GetParam(Params, 3); @@ -588,7 +588,7 @@ DEFINE_HOOK(516974, CUserScripts_NewFunction_SwitchID, 8) } } else { - auto pSection = CINI::CurrentDocument->GetSection(section); + auto pSection = CINIExt::CurrentDocument->GetSection(section); if (auto pStr = pSection->GetKeyAt(index)) { UserScriptExt::Temps.push_back(*pStr); UserScriptExt::EditVaribale = true; @@ -626,7 +626,7 @@ DEFINE_HOOK(516974, CUserScripts_NewFunction_SwitchID, 8) } } else { - auto pSection = CINI::CurrentDocument->GetSection(section); + auto pSection = CINIExt::CurrentDocument->GetSection(section); if (auto pStr = pSection->GetValueAt(index)) { UserScriptExt::Temps.push_back(*pStr); UserScriptExt::EditVaribale = true; diff --git a/FA2sp/Miscs/Palettes.cpp b/FA2sp/Miscs/Palettes.cpp index 24532ac5..99da8fff 100644 --- a/FA2sp/Miscs/Palettes.cpp +++ b/FA2sp/Miscs/Palettes.cpp @@ -1,4 +1,5 @@ #include "Palettes.h" +#include "Hooks.INI.h" #include #include @@ -277,28 +278,28 @@ LightingStruct LightingStruct::GetCurrentLighting() switch (CFinalSunDlgExt::CurrentLighting) { case 31001: - CurrentLighting.Red = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "Red", 1.0)); - CurrentLighting.Green = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "Green", 1.0)); - CurrentLighting.Blue = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "Blue", 0.5)); - CurrentLighting.Ambient = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "Ambient", 1.0)); - CurrentLighting.Ground = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "Ground", 0.008)); - CurrentLighting.Level = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "Level", 0.087)); + CurrentLighting.Red = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "Red", 1.0)); + CurrentLighting.Green = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "Green", 1.0)); + CurrentLighting.Blue = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "Blue", 0.5)); + CurrentLighting.Ambient = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "Ambient", 1.0)); + CurrentLighting.Ground = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "Ground", 0.008)); + CurrentLighting.Level = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "Level", 0.087)); return CurrentLighting; case 31002: - CurrentLighting.Red = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "IonRed", 1.0)); - CurrentLighting.Green = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "IonGreen", 1.0)); - CurrentLighting.Blue = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "IonBlue", 0.5)); - CurrentLighting.Ambient = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "IonAmbient", 1.0)); - CurrentLighting.Ground = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "IonGround", 0.008)); - CurrentLighting.Level = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "IonLevel", 0.087)); + CurrentLighting.Red = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "IonRed", 1.0)); + CurrentLighting.Green = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "IonGreen", 1.0)); + CurrentLighting.Blue = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "IonBlue", 0.5)); + CurrentLighting.Ambient = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "IonAmbient", 1.0)); + CurrentLighting.Ground = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "IonGround", 0.008)); + CurrentLighting.Level = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "IonLevel", 0.087)); return CurrentLighting; case 31003: - CurrentLighting.Red = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "DominatorRed", 1.0)); - CurrentLighting.Green = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "DominatorGreen", 1.0)); - CurrentLighting.Blue = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "DominatorBlue", 0.5)); - CurrentLighting.Ambient = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "DominatorAmbient", 1.0)); - CurrentLighting.Ground = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "DominatorGround", 0.008)); - CurrentLighting.Level = static_cast(CINI::CurrentDocument->GetDouble("Lighting", "DominatorLevel", 0.087)); + CurrentLighting.Red = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "DominatorRed", 1.0)); + CurrentLighting.Green = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "DominatorGreen", 1.0)); + CurrentLighting.Blue = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "DominatorBlue", 0.5)); + CurrentLighting.Ambient = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "DominatorAmbient", 1.0)); + CurrentLighting.Ground = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "DominatorGround", 0.008)); + CurrentLighting.Level = static_cast(CINIExt::CurrentDocument->GetDouble("Lighting", "DominatorLevel", 0.087)); return CurrentLighting; } CurrentLighting = LightingStruct::NoLighting; @@ -441,7 +442,7 @@ void LightingSourceTint::CalculateMapLamps() CMapDataExt::LightingSources.clear(); CMapDataExt::LightingBuildingTypes.clear(); const float TOLERANCE = 0.001f; - if (auto pSection = CINI::CurrentDocument->GetSection("Structures")) + if (auto pSection = CINIExt::CurrentDocument->GetSection("Structures")) { for (const auto& [key,value] : pSection->GetEntities()) { diff --git a/FA2sp/Miscs/SaveMap.cpp b/FA2sp/Miscs/SaveMap.cpp index a842751b..14d8d36b 100644 --- a/FA2sp/Miscs/SaveMap.cpp +++ b/FA2sp/Miscs/SaveMap.cpp @@ -186,7 +186,7 @@ DEFINE_HOOK(42B2EA, CFinalSunDlg_SaveMap_SkipStringDTOR, C) bool SaveMapExt::SaveMapSilent(FString filepath, bool panic) { - auto ini = &CINI::CurrentDocument; + auto ini = &CINIExt::CurrentDocument; FString buffer; FString buffer2; @@ -367,7 +367,7 @@ bool SaveMapExt::SaveMap(CINI* pINI, CFinalSunDlg* pFinalSun, FString filepath, pINI->DeleteSection("Preview"); pINI->DeleteSection("PreviewPack"); - auto& map = CINI::CurrentDocument(); + auto& map = CINIExt::CurrentDocument(); auto thisTheater = map.GetString("Map", "Theater"); auto tiledata = CMapDataExt::TileData; @@ -422,7 +422,7 @@ bool SaveMapExt::SaveMap(CINI* pINI, CFinalSunDlg* pFinalSun, FString filepath, if (mapData.IsMultiOnly() && cell.Waypoint != -1) { - auto pSection = CINI::CurrentDocument->GetSection("Waypoints"); + auto pSection = CINIExt::CurrentDocument->GetSection("Waypoints"); auto& pWP = *pSection->GetKeyAt(cell.Waypoint); if (atoi(pWP) < 8) { @@ -1020,7 +1020,7 @@ void SaveMapExt::RemoveEarlySaves() }; std::map m; - auto mapName = CINI::CurrentDocument->GetString("Basic", "Name", "No Name"); + auto mapName = CINIExt::CurrentDocument->GetString("Basic", "Name", "No Name"); /* * Fix : Windows file name cannot begin with space and cannot have following characters: @@ -1097,7 +1097,7 @@ void CALLBACK SaveMapExt::SaveMapCallback(HWND hwnd, UINT message, UINT iTimerID SYSTEMTIME time; GetLocalTime(&time); - auto mapName = CINI::CurrentDocument->GetString("Basic", "Name", "No Name"); + auto mapName = CINIExt::CurrentDocument->GetString("Basic", "Name", "No Name"); /* * Fix : Windows file name cannot begin with space and cannot have following characters: From 771ee5566b6652bd2ec9447ae7928b67a26fec7e Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Thu, 8 Oct 2026 00:18:09 -0400 Subject: [PATCH 21/24] docs(ini): add design motivation and developer guideline comments for CINIExt::CurrentDocument --- FA2sp/Miscs/Hooks.INI.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/FA2sp/Miscs/Hooks.INI.h b/FA2sp/Miscs/Hooks.INI.h index a66bcbd9..c22bc9d8 100644 --- a/FA2sp/Miscs/Hooks.INI.h +++ b/FA2sp/Miscs/Hooks.INI.h @@ -50,10 +50,25 @@ class NOVTABLE CINIExt : public CINI void InheritSectionRecursive(const ppmfc::CString& sectionName, std::set& visited); static bool IsLoadingFAini; + // ========================================================================================= + // MOTIVATION & DESIGN RATIONALE: + // FinalAlert 2's host process stores the global active map document at 0x7ACC80. + // To support adaptive key/section order tracking (CINIOrderTracker) without altering the + // untouched FA2pp submodule or hooking deep red-black tree internals, CINIExt acts as a + // zero-overhead proxy wrapper over CINI sharing the identical memory layout (sizeof == 80). + // + // CRITICAL NOTICE FOR FUTURE DEVELOPERS: + // ALWAYS operate on this instance (`CINIExt::CurrentDocument` or the namespace/global alias + // `CurrentDocument`) instead of `CINI::CurrentDocument` throughout all FA2sp components. + // Directly invoking `CINI::CurrentDocument` will bypass CINIExt's tracking overrides + // (`WriteString`, `DeleteKey`, `AddSection`, etc.) and break Westwood-style numeric + // order preservation when saving maps! + // ========================================================================================= static constexpr reference const CurrentDocument{}; }; -// Global proxy instance representing the map document (maps to 0x7ACC80) +// Global proxy instance representing the map document (maps to 0x7ACC80). +// Shortcut alias for CINIExt::CurrentDocument. Always use this instead of CINI::CurrentDocument. inline constexpr reference const CurrentDocument{}; struct CINIInfo From 9cfbc4d9cc74829fad5b11a8f4e59199f50f45ca Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Thu, 8 Oct 2026 00:26:44 -0400 Subject: [PATCH 22/24] refactor(ini): remove redundant global CurrentDocument alias and keep strictly CINIExt::CurrentDocument --- FA2sp/Miscs/Hooks.INI.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/FA2sp/Miscs/Hooks.INI.h b/FA2sp/Miscs/Hooks.INI.h index c22bc9d8..d819728b 100644 --- a/FA2sp/Miscs/Hooks.INI.h +++ b/FA2sp/Miscs/Hooks.INI.h @@ -58,8 +58,8 @@ class NOVTABLE CINIExt : public CINI // zero-overhead proxy wrapper over CINI sharing the identical memory layout (sizeof == 80). // // CRITICAL NOTICE FOR FUTURE DEVELOPERS: - // ALWAYS operate on this instance (`CINIExt::CurrentDocument` or the namespace/global alias - // `CurrentDocument`) instead of `CINI::CurrentDocument` throughout all FA2sp components. + // ALWAYS operate on this instance (`CINIExt::CurrentDocument`) instead of `CINI::CurrentDocument` + // throughout all FA2sp components. // Directly invoking `CINI::CurrentDocument` will bypass CINIExt's tracking overrides // (`WriteString`, `DeleteKey`, `AddSection`, etc.) and break Westwood-style numeric // order preservation when saving maps! @@ -67,10 +67,6 @@ class NOVTABLE CINIExt : public CINI static constexpr reference const CurrentDocument{}; }; -// Global proxy instance representing the map document (maps to 0x7ACC80). -// Shortcut alias for CINIExt::CurrentDocument. Always use this instead of CINI::CurrentDocument. -inline constexpr reference const CurrentDocument{}; - struct CINIInfo { FString Name; From 441f76255c01f1a6e6c9009ff5151d1db750e79f Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Thu, 8 Oct 2026 00:51:41 -0400 Subject: [PATCH 23/24] chore(rn): set UTF8Support.AlwaysSaveAsUTF8=true in RN FAData.ini --- Supplementary/RevengeNow/FAData.ini | 2 +- Supplementary/RevengeNow/README.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Supplementary/RevengeNow/FAData.ini b/Supplementary/RevengeNow/FAData.ini index dd14bb6a..261f7500 100644 --- a/Supplementary/RevengeNow/FAData.ini +++ b/Supplementary/RevengeNow/FAData.ini @@ -209,7 +209,7 @@ UTF8Support.InferEncoding=true ; BOOLEAN ; Always save maps using UTF-8 encoding ; BOOLEAN ; 是å�¦æ€»æ˜¯ä»¥UTF8ç¼–ç �ä¿�存地图, 默认为 false -UTF8Support.AlwaysSaveAsUTF8=false +UTF8Support.AlwaysSaveAsUTF8=true ; BOOLEAN ; Enable automatic map saves ; BOOLEAN ; 是å�¦è‡ªåЍä¿�存地图 diff --git a/Supplementary/RevengeNow/README.md b/Supplementary/RevengeNow/README.md index 95f91492..d23920c1 100644 --- a/Supplementary/RevengeNow/README.md +++ b/Supplementary/RevengeNow/README.md @@ -11,10 +11,11 @@ - **RN 专属触å�‘系统**:完整ä¿�ç•™ RN 的触å�‘动作(`[ActionsRA2]` / `[Chinese-ActionsRA2]` å…± 157 项,å�« Ares 动作 150~154 å�Šå�‚数微调)ã€�事件(`[EventsRA2]` / `[Chinese-EventsRA2]`)ã€�脚本(`[ScriptsRA2]` / `[Chinese-ScriptsRA2]`)ã€�å�‚数定义(`[ParamTypes]`ã€�`[ScriptParams]`ã€�`[PT_CrateTypes]` 等)以å�Š `[ScriptTemplates]`ã€�`[TeamTemplates]`。 - **RN 阵è�¥ä¸Žæ¨¡å¼�**:ä¿�ç•™ `[Sides]`(12 个作战方定义)ã€�`[GameModes]`ã€�`[ForceUnitPalettePrefix]` 等。 - **FA2sp 现代兼容层**:ä¿�ç•™ `[Include]` 引用链(加载 `FAData_ObjectBrowser.ini` ä¿�è¯�物件æµ�览器中文分类与完整æ�¡ç›®æ­£å¸¸æ˜¾ç¤ºï¼‰ä¸Ž `[ExtConfigs]`ã€�现代剧场与图å�—管ç�†å®šä¹‰ã€‚ - - å�¯ç”¨äº†é�¢å�‘ RN 对é½�ä¿�存所需的ä¿�åº�é…�置: + - å�¯ç”¨äº†é�¢å�‘ RN 对é½�ä¿�存所需的ä¿�åº�与编ç �é…�置: - `SaveMap.PreserveINISorting=true`:ä¿�存地图时ä¿�æŒ�所有 INI å°�节原有的出现顺åº�。 - `SaveMap.AdaptiveSorting=true`:ä¿�存地图时自适应ä¿�æŒ�键值排布(数字索引å°�节自然å�‡åº�,常规属性å°�节维æŒ�原åº�)。 - `SaveMap.KeepComments=false`:ä¸�ä¿�留注释(符å�ˆ RN è¦�求)。 + - `UTF8Support.AlwaysSaveAsUTF8=true`:总是以 UTF-8 ç¼–ç �ä¿�存地图(符å�ˆ RN è¦�求)。 --- From 56965e75f43a2d298830173967d46e294bcb4931 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Thu, 8 Oct 2026 01:27:41 -0400 Subject: [PATCH 24/24] docs: update ini_key_sorting_alignment_plan with UT architecture, CI workflows, and release packaging strategy --- .../plans/ini_key_sorting_alignment_plan.md | 254 +++++++++++++----- 1 file changed, 184 insertions(+), 70 deletions(-) diff --git a/doc/agents/plans/ini_key_sorting_alignment_plan.md b/doc/agents/plans/ini_key_sorting_alignment_plan.md index 6013fb8f..4d16d323 100644 --- a/doc/agents/plans/ini_key_sorting_alignment_plan.md +++ b/doc/agents/plans/ini_key_sorting_alignment_plan.md @@ -1,81 +1,195 @@ -# Implementation Plan - Align INI Section & Key Sorting Behavior with YR_RN_Mission_Editor +# INI 键值与å°�节顺åº�对é½�实施方案与完æˆ�报告 (Alignment Plan & Architecture Report) -## Goal Description -In the current repository (`FA2Copy`, branch `enhance/rn-version-alignment`), INI sections and keys use `std::map` (`FAMap` for sections and `FAMap` for key-value pairs). Because `std::map` naturally orders keys using `INISectionEntriesComparator` (shorter strings first, then alphabetical via `strcmp`), saving an INI or map file forces both sections and keys within each section to be reordered. +> **目标**:在 `FA2Copy`(分支 `enhance/rn-version-alignment`)中实现 INI ä¿�存时ä¿�æŒ�原始å°�节顺åº�与å°�节内原始键值对顺åº�(支æŒ�自适应纯数/多段数字自然排åº�),实现与 [`YR_RN_Mission_Editor`](file:///D:/Developments/RevengeNow/Codes/YR_RN_Mission_Editor) 行为全é�¢å¯¹é½�ï¼›æ��供模å�—化é…�置项 `SaveMap.AdaptiveSorting` / `SaveMap.PreserveINISorting`,以 **CINIExt 动æ€�函数指针零开销切æ�¢æœºåˆ¶** 包办所有 INI å�˜æ›´æ“�作;并建立完整的å�•元测试体系 (UT)ã€�æŒ�续集æˆ�æµ�水线 (CI) 与多版本å�‘包分拣脚本。 -In the target editor [`YR_RN_Mission_Editor`](file:///D:/Developments/RevengeNow/Codes/YR_RN_Mission_Editor), INI management was refactored (`CIniFileSection` uses sequenced `Container value_pairs` / `std::vector>` and `map value_pos`), preserving the original file key order and appending newly created keys to the end. +--- + +## 一ã€�方案核心架构设计 + +### 1.1 é›¶ç ´å��解耦设计 (Decoupled Sidecar Design) +由于旧版 32 ä½� `FinalSun.exe` / `FinalAlert2YR.dat` 核心逻辑与 `CINI` / `INISection` 的二进制结构存在紧耦å�ˆï¼ˆIDA 逆å�‘å·²è¯�实 `EntitiesDictionary` 与 `IndicesDictionary` 具有固定内存å��移),任何直接修改 `sizeof(INISection)` 或改å�˜å†…部 `std::map` 类型的改动都会引å�‘主程åº�崩溃。 + +因此采用**外置侧车追踪器 (`CINIOrderTracker`)**: +- 内部核心数æ�®ç»“构为 **`SequencedKeyList`**,采用 **$O(1)$ Multi-Index å�Œç´¢å¼•模型**: + $$\text{SequencedKeyList} = \text{std::list} \;+\; \text{std::unordered\_map}$$ +- **å¤�æ�‚度表现**: + - **æ�’å…¥ (Add)**:$O(1)$,若已存在则忽略,ä¸�存在则尾æ�’并记录迭代器。 + - **删除 (Remove)**:$O(1)$,通过哈希表直接定ä½�链表迭代器擦除,é�¿å…� `std::vector` çš„ $O(N)$ 元素æ�¬ç§»å¼€é”€ã€‚ + - **查询/存在性检查 (Contains)**:$O(1)$。 + - **é��历 (Iteration)**:严格按照自然æ�’入顺åº�顺åº�é��历。 + +### 1.2 自适应键排åº� (Adaptive Sorting) +针对红警地图逻辑中具有严苛顺åº�è¦�求的特殊 Section(例如脚本动作åº�å�· `0, 1, 2...`ã€�å�•ä½�结构列表 `[Units]`, `[Structures]`ã€�触å�‘ `[TeamTypes]`): +- **文本键(é�žæ•°å­—)**:严格ä¿�æŒ�文件读å�–与创建时的æ�’入自然队列顺åº�(FIFO 语义)。 +- **纯数字 / 多段数字键**:在删除å†�新增时,采用 Westwood æ ¼å¼�自然数值排åº�器(`WestwoodNumericKeyCompare`),é�¿å…�å°†é‡�新添加的编å�·é”®æŒ¤åŽ‹åˆ° Section 末尾导致地图解æž�逻辑错乱。 + +### 1.3 CINIExt 代ç�†ä¸ŽåЍæ€�函数指针零开销切æ�¢æœºåˆ¶ (Dynamic Function Pointer Dispatch) +为了æ�œç»�在业务代ç �或å�•元测试中到处“手动补充调用 `RecordKey` / `RemoveKey`â€�的别扭耦å�ˆï¼Œå�Œæ—¶é�¿å…�在热点写入路径上产生ä¸�å¿…è¦�的分支判断: +1. **全局é�™æ€�å�•例包装**: + - 声明 `CINIExt` 继承自 `CINI`(`sizeof(CINIExt) == sizeof(CINI) == 80` 字节,零新增æˆ�员å�˜é‡�,确ä¿�直接é‡�映射 `0x7ACC80` æ—¶ä¸�会踩è¸�相邻结构 `CMapData::Size`)。 + - æ��ä¾› `CINIExt::CurrentDocument` 全局引用,并在注释中严格规范所有开å�‘者统一使用该实例。 +2. **函数指针动æ€�切æ�¢**: + - 内部é�™æ€�函数指针:`FnRecordKey`ã€�`FnRemoveKey`ã€�`FnRecordSection`ã€�`FnRemoveSection`。 + - 当 `AdaptiveSorting` / `PreserveINISorting` å�¯ç”¨æ—¶ï¼šå‡½æ•°æŒ‡é’ˆæŒ‡å�‘真实的 `CINIOrderTracker::RecordKey` / `RecordSection`。 + - 当未å�¯ç”¨æ—¶ï¼šå‡½æ•°æŒ‡é’ˆåœ¨ `SetAdaptiveSorting(false)` 时直接切æ�¢ä¸ºå†…部 `static void NoOp(...) noexcept {}` 空函数。 + - **æž�致性能**:关闭功能时无任何分支æ�¡ä»¶åˆ¤æ–­ (`if`),直接调用空函数内è�”或直接返回,开销趋近于 0。 + +--- + +## 二ã€�å�•元测试 (UT) 架构与用例矩阵 + +### 2.1 In-Process 进程内测试架构 +传统å�•元测试难以覆盖与 `FinalAlert2YR.dat` 二进制宿主高度绑定的 INI 内存与钩å­�逻辑。为此设计并实现了进程内挂钩测试架构: +- **测试工程**:ä½�于 `FA2sp.UnitTest/`,编译生æˆ� 32 ä½�动æ€�链接库 `Supplementary/FA2sp.UnitTest.dll`。 +- **Syringe 动æ€�挂钩**: + - 测试 DLL 利用 Syringe 挂钩宿主程åº�å…¥å�£ `CFinalSunApp::InitInstance`(地å�€ `0x41FAD0`)。 + - å…¥å�£åŠ«æŒ�:在宿主创建任何 MFC GUI 窗å�£ä¹‹å‰�接管控制æ�ƒã€‚ +- **输出é‡�定å�‘与干净退出**: + - å°† stdout / stderr é‡�定å�‘到 `Supplementary/UnitTest.log`,并通过 GoogleTest 导出 `Supplementary/UnitTest.xml`。 + - 将命令行å�‚数转å�‘ç»™ `testing::InitGoogleTest(&argc, argv)`,执行 `RUN_ALL_TESTS()`。 + - 测试执行完毕å�Žåˆ·æ–°ç¼“冲区并直接调用 `ExitProcess(res)` 退出,æ�œç»�弹出主界é�¢é˜»å¡ž CI 无人值守环境。 + +### 2.2 è¿�行隔离机制 (Strict Isolation Mechanism) +- è¿�行测试时,宿主目录下如果å�Œæ—¶å­˜åœ¨ç”Ÿäº§ DLL `FA2sp.dll`,会导致 Hook 符å�·ä¸Ž Syringe 注入表å�‘生冲çª�。 +- å�¯åŠ¨è„šæœ¬ [`Scripts/RunUnitTest.bat`](file:///D:/Developments/RevengeNow/Codes/FA2Copy/Scripts/RunUnitTest.bat) 实现了自动化隔离: + 1. 检查并将 `FA2sp.dll` 临时é‡�命å��为 `FA2sp.dll.isolated`ï¼› + 2. 调用 `Syringe.exe FinalAlert2YR.dat` 注入 `FA2sp.UnitTest.dll` 执行测试; + 3. æ�•获退出ç �ï¼› + 4. 无论测试æˆ�功还是异常退出,å�‡åœ¨ `finally` 阶段无æ�¡ä»¶è¿˜åŽŸ `FA2sp.dll`ï¼› + 5. 返回真实退出ç �,确ä¿�自动化æµ�程æ�•获断言失败。 + +### 2.3 å�•元测试覆盖矩阵 (21 Tests) +在 [`FA2sp.UnitTest/CINIOrderTrackerTest.cpp`](file:///D:/Developments/RevengeNow/Codes/FA2Copy/FA2sp.UnitTest/CINIOrderTrackerTest.cpp) 中构建了 21 个自动化测试用例,覆盖所有排列组å�ˆä¸Žè¾¹ç•Œæƒ…况: + +| 测试套件 | 测试用例å��ç§° | 核心验è¯�内容 | +| :--- | :--- | :--- | +| **SequencedKeyListTest** | `PreservesInsertionOrder` | 验è¯�多键按æ�’入顺åº�ä¾�次存储与输出 | +| | `IgnoresDuplicateAdditions` | é‡�å¤�æ�’入相å�Œé”®æ—¶å¿½ç•¥ï¼Œä¸�改å�˜åŽŸæœ‰é“¾è¡¨ä½�ç½® | +| | `ReAddAfterRemovePushedToTailQueueSemantics` | 模拟 FIFO 队列语义:删除å�Žå†�æ�’入排至队尾 | +| | `RemoveHeadAndTail` | 链表头节点与尾节点删除的边界处ç�† | +| | `ClearResetsState` | 清空链表与哈希表,状æ€�完全é‡�ç½® | +| **CINIOrderTrackerTest** | `SectionOrderTrackingAndQueueSemantics` | Section 维度的æ�’å…¥ä¿�åº�与删除å†�加尾部追加语义 | +| | `KeyOrderTrackingAndQueueSemantics` | Section 内部 Key 维度的æ�’å…¥ä¿�åº�与顺åº�追踪 | +| | `RealCINICrudKeyOperations` | 结å�ˆçœŸå®ž `CINIExt` çš„ `WriteString` / `DeleteKey` é€�明追踪 | +| | `RealCINICrudSectionOperations` | 结å�ˆçœŸå®ž `CINIExt` çš„ `AddSection` / `DeleteSection` é€�明追踪 | +| | `RealCINIAutoTrackingUntrackedItems` | 未显å¼�通过 `RecordKey` 录入的新键在é��历时自动æ�•获 | +| | `RealCINIDeletedItemsOmittedDuringIterationEvenWithoutUntrack` | 被 CINI 删除的键å�³ä½¿ Tracker 未å�Œæ­¥ä¹Ÿä¼šåœ¨è¿­ä»£æ—¶è‡ªåЍ剔除 | +| | `RealCINIPreserveOrderTrueVsNaturalMapOrder` | 对比测试:开å�¯ä¿�åº�输出 vs 未开å�¯æ—¶ `std::map` å­—æ¯�åº�输出 | +| | `RealCINIComplexMapLifecycleSimulation` | 模拟å¤�æ�‚地图加载ã€�增删修改ã€�ä¿�å­˜é‡�构全生命周期 | +| | `RealCINISameKeyDeletedAndReaddedHeadMiddleTailCombinations` | å�• Section 内头ã€�中ã€�å°¾ä¸�å�Œä½�ç½® Key 删除å†�添加组å�ˆ | +| | `RealCINISameSectionDeletedAndReaddedHeadMiddleTailCombinations` | 多个 Section 头ã€�中ã€�å°¾ä¸�å�Œä½�置删除å†�添加组å�ˆ | +| | `RealCINIInterleavedKeyAndSectionDeleteReaddStressTest` | 节与键高频交替增删的æž�端压力场景 | +| | `AdaptiveSortingNumericKeysPreserveNaturalOrderOnDeleteAndReadd` | **核心自适应排åº�**:删除中间数字键(如 1)å†�添加时,自动维æŒ� `0, 1, 2, 3` 自然数字å�‡åº�而é�žæŽ’到末尾 | +| | `AdaptiveSortingWestwoodNumericComparatorMultiDigit` | **Westwood 自然数值比较**:验è¯�多ä½�æ•°å�‡åº�排åº�(如 `0..9, 10, 11` 正确排在 9 之å�Žï¼Œè€Œé�žæŒ‰ ASCII 字符排在 1 之å�Žï¼‰ | +| | `AdaptiveSortingMixedSectionPreservesTextHeaderAndOrdersNumericArray` | **æ··å�ˆå°�节测试**:头部元数æ�®æ–‡æœ¬é¡¹ç»´æŒ�原åº�,尾部数字动作阵列自适应å�‡åº� | +| | `AdaptiveSortingUntrackedKeyWithoutManualRecordKeyAutoSorted` | 真实地图加载场景下,直接载入未追踪文本段å�Œæ ·æŒ‰è§„则正确排布 | +| | `DynamicFunctionPointerSwitchingAdaptiveSortingToggle` | **动æ€�函数指针切æ�¢éªŒè¯�**:关闭自适应排åº�时指å�‘ `NoOp`(零开销无记录),开å�¯å�Žå®žæ—¶æŒ‚接追踪 | + +--- + +## 三ã€�æŒ�续集æˆ� (CI) 工作æµ�改动 + +CI æž¶æž„é‡�构为基于 GitHub Actions 的模å�—化ã€�多触å�‘点æµ�水线体系: + +```mermaid +flowchart TD + PR[Pull Request] --> MSBuildWF[msbuild.yml] + Merge[Master Push / Merged PR] --> ReleaseWF[release.yml] + Dispatch[workflow_dispatch 手动触å�‘] --> ReleaseWF + + MSBuildWF --> Reusable[reusable-build-and-test.yml] + ReleaseWF --> Reusable + + subgraph ReusableJob ["reusable-build-and-test.yml (windows-2022)"] + Checkout[递归拉å�–代ç �与å­�模å�— lfs] --> NuGet[还原 NuGet ä¾�èµ–] + NuGet --> Build[MSBuild 编译 FA2sp.sln x86 Release] + Build --> DeployBin[部署产物至 Supplementary] + DeployBin --> RunUT[执行 Scripts/RunUnitTest.bat] + RunUT --> UploadLogs[上传 UT 日志与 XML 报告] + UploadLogs --> UploadArtifacts[上传构建产物 FA2sp.dll / pdb] + end + + ReusableJob --> PackageMatrix["package 任务 (矩阵: YR, MO, RN)"] + PackageMatrix --> DownloadBin[下载编译构建产物] + DownloadBin --> ScriptPkg["./Scripts/PackageRelease.ps1"] + ScriptPkg --> GHRelease[å�‘布至 GitHub Releases] +``` + +### 3.1 å�¯å¤�用构建与测试工作æµ� ([`reusable-build-and-test.yml`](file:///D:/Developments/RevengeNow/Codes/FA2Copy/.github/workflows/reusable-build-and-test.yml)) +- **è¿�行环境**:`windows-2022` 虚拟机。 +- **å­�模å�—与大文件处ç�†**:é…�ç½® `submodules: recursive` 与 `lfs: true`,确ä¿� `FA2pp`ã€�`MFC42`ã€�`googletest`ã€�`lexilla`ã€�`scintilla` 完整克隆。 +- **ä¾�赖还原与并å�‘编译**: + - 自动通过 `nuget restore FA2sp.sln` 还原项目第三方ä¾�赖(如 `lua`ã€�`openssl`)。 + - 执行 `msbuild /m /p:Configuration=Release /p:Platform=x86 FA2sp.sln`,一次性并å�‘编译主工程与 UT 工程。 +- **自动化测试执行与日志ä¿�å…¨**: + - æ— ç¼�调用 `Scripts\RunUnitTest.bat` è¿�行测试套件。 + - 采用 `if: always()` 策略,无论测试æˆ�功还是失败,å�‡å®Œæ•´æ”¶é›†å¹¶ä¸Šä¼  `UnitTest.log`ã€�`UnitTest.xml` å�Š `syringe.log`(ä¿�ç•™ 7 天),便于远端å¤�现和排查断言错误。 -Our objective is to: -1. Enable `FA2Copy` to **preserve both INI section sequence and key sequence** when saving, matching `YR_RN_Mission_Editor`. -2. Use an **$O(1)$ Multi-Index design (`std::list` + `std::unordered_map`)** for both section order and key order to ensure top performance on massive maps (avoiding $O(N^2)$ lookups or $O(N)$ index shifts on deletions). -3. Introduce a configuration option (`SaveMap.AdaptiveSorting` / `ExtConfigs::SaveMap_AdaptiveSorting`) so that vanilla behavior remains intact for upstream compatibility when disabled. -4. Adapt a dedicated configuration suite for **Revenge Now (RN)** (similar to `Supplementary/MentalOmega`) with this feature enabled, incorporating RN-specific configurations from `YR_RN_Mission_Editor/dist/FinalRevenge`. +### 3.2 PR 校验æµ�水线 ([`msbuild.yml`](file:///D:/Developments/RevengeNow/Codes/FA2Copy/.github/workflows/msbuild.yml)) +- 监å�¬æ‰€æœ‰åˆ†æ”¯çš„ PR 创建与更新(过滤图片和文档å�˜åŠ¨ï¼‰ï¼Œè°ƒç”¨ `reusable-build-and-test.yml` 进行严格的零警告ã€�全绿测试å�¡ç‚¹éªŒè¯�,防止任何破å��性改动å�ˆå¹¶å…¥ä¸»å¹²ã€‚ + +### 3.3 自动å�‘版æµ�水线 ([`release.yml`](file:///D:/Developments/RevengeNow/Codes/FA2Copy/.github/workflows/release.yml)) +- 监å�¬ `master` 分支的 PR å�ˆå¹¶æˆ–手动调度。 +- 自动计算æµ�æ°´å�·ç‰ˆæœ¬ï¼ˆå¦‚ `v1.6.x`)或接å�—自定义 Tag。 +- å�¯åЍ `matrix: [YR, MO, RN]` 矩阵任务,并行调用å�‘包脚本分å�‘三ç§�针对性架构的 ZIP 包。 --- -## Technical Design: Dual-Level `SequencedKeyList` - -### 1. `SequencedKeyList` Container -A reusable multi-index ordered set: -```cpp -class SequencedKeyList -{ -public: - using ListType = std::list; - using MapType = std::unordered_map; - - void Add(const ppmfc::CString& key); // O(1) - bool Remove(const ppmfc::CString& key); // O(1) - bool Contains(const ppmfc::CString& key) const; // O(1) - void Clear(); // O(1) - const ListType& GetOrder() const; -private: - ListType m_order; - MapType m_lookup; -}; +## å››ã€�Release 脚本分拣与打包æ€�è·¯ + +打包脚本 [`Scripts/PackageRelease.ps1`](file:///D:/Developments/RevengeNow/Codes/FA2Copy/Scripts/PackageRelease.ps1) 承担了本地å�‘布模拟与 CI 矩阵打包的核心è�Œèƒ½ã€‚其设计ç�†å¿µä¸ºï¼š**分层覆盖 (Layered Overlay) + 白å��å�•/黑å��å�•清洗 (Sanitization)**。 + +### 4.1 分层覆盖分拣æµ�程 +æ¯�个å�‘行版(Edition)的打包æµ�水线严格é�µå¾ªä»¥ä¸‹é˜¶æ®µï¼š + +```mermaid +flowchart LR + Base[Supplementary/ 基础公共文件] --> Staging[临时暂存区 staging_TARGET] + Custom[Supplementary/TARGET/ 专属é…�ç½®] -->|覆盖写入| Staging + Bin[bin_output/ 最新 FA2sp.dll / pdb] -->|注入| Staging + Clean[清洗剔除: UnitTest.dll, *.log, *.xml] --> Staging + Staging --> Compress[Compress-Archive 生æˆ� FA2sp-TARGET-Version.zip] ``` -### 2. Dual-Level Sidecar Structure in `CINIManager` -For each `CINI*` instance: -- **`SequencedKeyList SectionOrder;`**: Tracks the sequence of sections (`[Header]`, `[Basic]`, `[Triggers]`, etc.). -- **`std::unordered_map KeyOrder;`**: Tracks the sequence of keys within each section. - -### 3. Lifecycle Integration -1. **On Load (`CINIExt::LoadINIExt`)**: - - Section headers: `SectionOrder.Add(CurrentSectionName)` - - Key-value pairs: `KeyOrder[CurrentSectionName].Add(key)` -2. **On Modification (`WriteString`)**: - - `SectionOrder.Add(section)` - - `KeyOrder[section].Add(key)` (if key already existed, position is unchanged!) -3. **On Deletion (`DeleteKey`, `DeleteSection`)**: - - `DeleteKey`: `KeyOrder[section].Remove(key)` - - `DeleteSection`: `KeyOrder.erase(section)`, `SectionOrder.Remove(section)` -4. **On Save (`SaveMapExt::SaveMap` & `CINI_WriteToFile`)**: - When `SaveMap_PreserveINIKeySorting` is true: - - Iterate sections in `SectionOrder.GetOrder()`, followed by any untracked sections in `Dict`. - - For each section, iterate keys in `KeyOrder[section].GetOrder()`, followed by any untracked keys in `EntitiesDictionary`. - - When false, maintain existing behavior. +1. **第一层:基底拷è´� (Base Tree)** + - å°† `Supplementary/` 下的所有通用编辑器è¿�行资æº�(`FinalAlert2YR.dat`ã€�核心 CSF 语言包ã€�公共图å�—ã€�Syringe è¿�行库等)全é‡�克隆到暂存区 `staging_$t`。 +2. **第二层:版本差异化分拣与覆盖 (Edition Customization)** + - **`YR` (原版尤里å¤�仇)**: + - 直接删除暂存区中的 `MentalOmega/` 与 `RevengeNow/` 目录。 + - ä¿�留默认的 `FAData.ini` å�ŠåŽŸç”Ÿ YR 触å�‘/å°�队/动作é…�置。 + - **`MO` (心ç�µç»ˆç»“ Mental Omega)**: + - 递归读å�– `staging/MentalOmega/` 下的文件,é€�项覆盖到暂存区根目录(如 MO 专属 `FAData.ini`ã€�CSF 与定制库)。 + - 删除多余的 `MentalOmega/` 与 `RevengeNow/` å­�目录。 + - **`RN` (å¤�仇时刻 Revenge Now)**: + - 递归读å�– `staging/RevengeNow/` 下的文件,é€�项覆盖到暂存区根目录。 + - 注入 RN 专属é…�置: + - `SaveMap.PreserveINISorting=true`(ä¿�æŒ�å°�节物ç�†å‡ºçŽ°é¡ºåº�); + - `SaveMap.AdaptiveSorting=true`(自适应数字键递增排åº�与文本键ä¿�åº�); + - `SaveMap.KeepComments=false`(ä¸�ä¿�留注释); + - `UTF8Support.AlwaysSaveAsUTF8=true`(**总是以 UTF-8 ç¼–ç �ä¿�存地图**); + - 157 项定制 Ares 动作与完整 RN 阵è�¥å®šä¹‰ã€‚ + - 删除多余的 `MentalOmega/` 与 `RevengeNow/` å­�目录。 +3. **第三层:编译二进制注入 (Binary Injection)** + - 自动探测 `bin_output/` 或 `Release/` 目录,将最新编译的 `FA2sp.dll` 与符å�·æ–‡ä»¶ `FA2sp.pdb` å¤�制到暂存区。 +4. **第四层:研å�‘与测试产物深度清洗 (Sanitization)** + - 严格剔除开å�‘/CI 产生的中间文件,防止污染用户包: + - 删除 `FA2sp.UnitTest.dll`ï¼› + - 删除 `RunUnitTest.bat`ï¼› + - 删除所有日志 `*.log`ã€�报告 `*.xml`ï¼› + - 删除隔离标记文件 `*.isolated`。 +5. **第五层:归档与统计** + - 使用 PowerShell 原生 `Compress-Archive` 输出标准å�‘布包:`FA2sp-{Target}-{Version}.zip`。 + - 打å�°ç”Ÿæˆ�的归档大å°�并清ç�†æš‚存工作区。 --- -## Execution Steps - -1. **Implement `SequencedKeyList`**: - - Add helper class in `FA2sp/Helpers/SequencedKeyList.h`. -2. **Integrate with `CINIManager` & `CINIExt`**: - - Add `SectionOrder` and `KeyOrder` tracking to `CINIManager`. - - Record order during `CINIExt::LoadINIExt`. - - Track additions/deletions in `CINI::WriteString`, `DeleteKey`, `DeleteSection`. -3. **Update Map & INI Saving**: - - Update `SaveMapExt::SaveMap` in `FA2sp/Miscs/SaveMap.cpp`. - - Update `CINI_WriteToFile` in `FA2sp/Miscs/Hooks.INI.cpp`. -4. **Configuration**: - - Add `SaveMap_PreserveINIKeySorting` to `FA2sp.h` / `FA2sp.cpp`. - - Add option translation strings to language INIs. - - Document in `Supplementary/FAData.ini`. -5. **Revenge Now (RN) Config Preset**: - - Create `Supplementary/RevengeNow/FAData.ini` adapted from `YR_RN_Mission_Editor/dist/FinalRevenge/FAData.ini`. - - Enable both `SaveMap.PreserveINISorting` and `SaveMap.PreserveINIKeySorting`. -6. **Build & Verification**: - - MSBuild compile check. - - Test case verification of section and key sequencing. +## 五ã€�å¼€å�‘者规范与注æ„�事项 + +1. **全局地图对象æ“�作守则**: + - 在 `FA2sp` 所有模å�—与对è¯�框窗å�£ä¸­ï¼Œ**必须始终æ“�作 `CINIExt::CurrentDocument`**,严ç¦�直接使用底层 `CINI::CurrentDocument`。 + - 直接访问 `CINI::CurrentDocument` 会绕过 `CINIExt` 的虚函数与æˆ�员拦截(`WriteString`ã€�`DeleteKey`ã€�`AddSection` 等),导致 `CINIOrderTracker` 追踪断裂。 +2. **å­�模å�—ä¿�护红线**: + - `FA2pp/` 为第三方å­�模å�—,**ç»�对ä¸�å¾—å�šä»»ä½•就地修改或æ��交**。 +3. **æ��交与推é€�规范**: + - 所有å�˜æ›´å¿…须在本地完æˆ� `FA2sp.sln` 编译通过(0 警告ã€�0 错误)与 `Scripts\RunUnitTest.bat` 21 项测试全绿通过å�Žæ–¹å�¯æ��交。 + - 未ç»�用户显å¼�授æ�ƒï¼Œ**严ç¦�执行 `git push`**。