code:
---
name: 规则失效以及其他错误
about: 创建报告以帮助我们改进

---

**问题描述**
简单清晰的说一下问题的描述.

**从哪里开始出现这个问题**
例如
``某游戏的登陆页面``、
``内置的网页``、
``游戏房间内部``、
``商店页面`` 等

**截图**
如果可以，请添加截图以帮助解释您的问题.

**运行环境**
请说明当前的运行环境
例如：
``操作系统``
``网络环境``(如 运营商等

license: mit


code:
---
name: 请求新增规则
about: 请求新增规则的想法

---
以下为模板，请自行删除不必要内容且添加必要内容。

**若未使用自动抓ip工具，且在issue中说明已使用的，此issue将会被忽略或关闭。**

**需要增加游戏\程序名字**

如``CS-GO``

**请使用[自动抓IP工具](https://github.com/oooldtoy/SSTAP_ip_crawl_tool)来帮助我们编写规则，并详细写明游戏细节，如哪个服，哪个版本。**

**该游戏\程序的运行环境**

如
``虚拟机``
``局域网其他设备``
``PC``

**该游戏\程序哪部分需要代理**

如
``整个游戏\程序都需要``
``只代理登陆部分``

**特殊情况**
如果还有特殊想说明的请在这里描述.


code:
# 更新日志
### 2020年3月19日

By @normanbb

更新`Escape from Tarkov,逃离塔克夫` 游戏规则

更新`Maplestory-us,冒险岛美服` 游戏规则

新增`Call-Of-Duty16-Modern-Warfare,使命召唤16：现代战争` 游戏规则

更新`Borderlands3-asia,无主之地3` 游戏规则

删除无效规则

### 2020年1月6日

By @normanbb

更新`BlackDesert,黑色沙漠` 游戏规则

更新`BlackSurvivor,黑色幸存者` 游戏规则

更新`Fortnite-as,堡垒之夜亚服`游戏规则

更新`跳过中国大陆`规则

更新`Warthunder，战争雷霆`游戏规则

新增`world war 3`游戏规则

新增`Miscreated,误造`游戏规则

新增`仙境传说OL 2 （美服）,Ragnarok-Online-2-us`游戏规则

### 2019年12月19日

更新 `Osu!` 游戏规则

### 2019年12月15日

更新 `Discord` 规则 By ip_crawl_tool

新增 `Lostark RU,失落的方舟俄服` 规则 By ip_crawl_tool

新增 `Roblox`游戏规则 By @412572219

新增 `StarCraft-2-asia，星际争霸2`（亚服）游戏规则 By @normanbb

更新`League-of-Legends-jp，LOL日服` 规则 By ip_crawl_tool

新增`rules/World-of-warships-EU，战舰世界欧服` 规则 By ip_crawl_tool

### 2019年11月29日

更新 `Red-dead-redemption2，荒野大镖客2`（steam）游戏规则 By @ip_crawl_tool

新增 `Maplestory-us，冒险岛` （美服）游戏规则 By @normanbb

新增 `Dauntless，不屈不挠`游戏规则 By @412572219

更新`GTA5`游戏规则  By @normanbb

新增 `Guild-Wars-2,激战2`游戏规则 By @normanbb

新增 `Ring-of-Elysium,无限法则`（亚服）游戏规则 By @normanbb

删除`Warframe，星际战甲`（steam）游戏规则  By @normanbb（游戏使用P2P互联，且服务器质量已改善。）

新增 `Star-Wars-BattlefrontII,星球大战2前线`游戏规则 By @normanbb

### 2019年11月24日

新增 `YY语音`（回国用）游戏规则 By @helpmsg

### 2019年11月14日

更新`Dota2-jp`游戏规则（日服） By @normanbb

新增 `Red-dead-redemption2，荒野大镖客2`游戏规则 By @normanbb

新增 `Destiny2-steam，命运2`（steam）游戏规则 By @normanbb

更新`PUBG`游戏规则（亚服及东南亚服） By @normanbb

新增 `Worldwar Z，僵尸世界大战`游戏规则 By @STC214

### 2019年11月14日

更新`Day Z`规则 By @linianqing

更新`China-ip-only` By @normanbb

### 2019年11月4日

新增 `Dota Underlords,刀塔霸业` 游戏规则  By @72521 & @kokutoukiritsugu

新增 `FIFA20` 游戏规则  By @normanbb

新增 `Kurtzpel` 游戏规则  By @normanbb

新增 `NBA2k20` 游戏规则  By @normanbb

更新 `Shadowverse,影之诗` 游戏规则  By @normanbb

更新 `World of Tanks-Asia,坦克世界` （亚服）游戏规则  By @normanbb

### 2019年10月31日

更新 `游戏王决斗链接` 游戏规则 By @oooldtoy

### 2019年10月17日

新增 `StarCraft Ⅱ,星际争霸2` （国服）游戏规则  By @normanbb

新增 `FINAL FANTASY XIV,最终幻想14` （国服）游戏规则  By @normanbb

新增  `Borderlands 3,无主之地3`（亚服） By @normanbb

### 2019年10月3日

更新 `Destiny 2（命运2）` （Steam-UU/TX）游戏规则 By @幼刀使い

更新 `CSGO` （Steam-TX）游戏规则 By @幼刀使い

更新 `PSO2（梦幻之星2）` （日服-TX）游戏规则 By @幼刀使い

### 2019年10月1日

更新 `PUBGLite(绝地求生轻量版)` （web客户端）游戏规则 By @PUBGLite

### 2019年9月16日

新增 `Monster Hunter: World（怪兽猎人世界）` （steam）游戏规则  By @normanbb

新增 `LOLPBE（英雄联盟）` （测试服）游戏规则  By @normanbb

新增 `worldofwarcraft-tw（魔兽世界）` （台服）游戏规则  By @normanbb

新增 `Gwent（巫师昆特牌）` （国际服）游戏规则  By @normanbb

更新 `warthunder(战争雷霆)` （steam）游戏规则 By @normanbb

### 2019年9月1日

更新 `warframe(星际战甲)` （steam）游戏规则 By @normanbb

### 2019年8月19日

更新 `新枫之谷(冒险岛台服)` （全服）游戏规则

### 2019年7月29日

更新 `Forza Horizon 4(极限竞速地平线4)` （全服）游戏规则 By @Liu

### 2019年7月17日

新增 `PUBGLite(绝地求生轻量版)` （Garena客户端）游戏规则 By @PUBGLite

### 2019年7月13日

新增 `PUBGLite(绝地求生轻量版)` （web客户端）游戏规则 By @PUBGLite

### 2019年6月20日

更新`World War Z` （全服）游戏规则 By @STC214

### 2019年6月16日

更新 `Fortnite` （亞服）游戏规则 By @partment

### 2019年6月12日

更新 `Tom clancy's The Division 2` （亚洲）游戏规则 By @LJea

### 2019年5月25日

新增 `CSGO` （港美日服）游戏规则 腾讯版 By @幼刀使い

新增 `命运2` （全服）游戏规则 腾讯版 By @幼刀使い

新增 `梦幻之星2` （日服）游戏规则 腾讯版 By @幼刀使い

### 2019年5月2日

更新 `Fortnite` （亞服）游戏规则 By @partment

### 2019年4月10日

更新 `Final Fantasy XIV` （国际服）游戏规则 By @Bluefissure

### 2019年4月2日

更新 `R2Arena` （竞技场服）游戏规则 By @tianyu

### 2019年3月15日

更新 `战争雷霆` 游戏规则 By @Bourshevik0

### 2019年3月12日

新增 `RagnarokOnlineTW` （仙境传说OL台湾）游戏规则 By @tianyu

### 2019年3月11日

更新 `R2Arena` （竞技场服）游戏规则 By @tianyu

更新 `Telegram` （电报）规则 By @tianyu

### 2019年3月2日

更新 `R2RU` （俄服官服）游戏规则 By @tianyu

更新 `R2US` （美服）游戏规则 By @tianyu

更新 `R2Arena` （竞技场服）游戏规则 By @tianyu

### 2019年2月25日

更新 `Apex-Legends` (原腾讯加速器Apex全服规则修改版) 游戏规则 By @Gambino

### 2019年2月24日

更新 `Apex-Legends-tx` (腾讯加速器Apex全服) `Apex-Legends-uu` (网易UU加速器Apex全服) 游戏规则 By @Bourshevik0

### 2019年2月23日

更新 `Anthem` `Tom-Clancy's-Rainbow-Six-Siege-all` `War-thunder-steam` 新增 `Jump-Force` `League-of-Legends-kr` `NBA-2K19` `Pro-Evolution-Soccer-2018` `Pro-Evolution-Soccer-2019` `TianYaMingYueDao-tw`游戏规则 By @Bourshevik0

更新 `Tom-Clancy's-Rainbow-Six-Siege-EAS` By @TGs4-Monet

### 2019年2月22日

更新 `Apex-Legends-uu` (网易UU加速器Apex全服) 新增 `Diablo3-Asia` `Diablo3-US` 游戏规则 By @Bourshevik0

### 2019年2月17日

修复 `叛乱：沙漠风暴` 规则无法识别问题 By @qxzg

### 2019年2月9日

新增 `Apex Legends` `黑色沙漠-steam` 游戏规则 By @AmazingDM

### 2019年2月2日

新增 `战争前线` `星际公民` `Atlas` 游戏规则 By @qxzg

### 2019年2月1日

新增 `Anthem` 游戏规则 By @Fururanza

新增 `圣歌` By @KagamigawaMeguri

### 2019年1月31日

新增 `刺客信条起源` `刺客信条奥德赛` `荣耀战魂` `极限巅峰` `飙酷车神1/2` `幽灵行动荒野` `全境封锁` `看门狗1` `守望先锋-美服` `行星边际2` `街头霸王5` `神谕之战` `求生意志OL` `叛乱：沙漠风暴` 游戏规则 By @qxzg

### 2019年1月30日

更新 `战地1` 游戏规则 By @qxzg

### 2019年1月19日

更新 `战地5` `战争雷霆` 游戏规则 By @FoggyIce

### 2019年1月9日

新增 `HITMAN2` 平台规则 By @youdeoo

新增 `American Truck Simulator` 平台规则 By @youdeoo

新增 `Yu-Gi-Oh! Duel Links` 平台规则 By @youdeoo

### 2018年12月31日

新增 `逃离塔科夫-全区` 游戏规则 By @AmazingDM

### 2018年12月19日

新增 `战舰世界-美服` 游戏规则 By @AmazingDM

更新 `LOL-台服(添加Garena平台规则)` 游戏规则 By @AmazingDM

### 2018年12月18日

更新 `LOL-台服` `流亡黯道-国际服` 新增 `堡垒之夜-亚服(UU模式3测试版)` 游戏规则 By @AmazingDM

### 2018年12月13日

新增 `魔兽世界-欧服` `流亡黯道-国际服` `灵魂行者-台服` `泰坦陨落2` 游戏规则 By @AmazingDM

### 2018年12月5日

新增 `失落的方舟韩服规则` 游戏规则 By @lmc999

### 2018年11月30日

新增 `永恒之塔-台服` 游戏规则 By @AmazingDM

### 2018年11月26日

更新 `黑色幸存者` 新增 `天命2-亚欧美` 更新 `CSGO-香港` 游戏规则 By @AmazingDM

### 2018年11月4日

更新 `使命召唤15亚服、亚马逊IP及Akamai IP` 平台及游戏规则 By @lmc999

### 2018年10月23日

更新 `Discord` 平台规则 By @AkinoYuiko

### 2018年10月9日

新增 `黑色幸存者 BlackSurvivor` 游戏规则 By @AmazingDM

### 2018年9月9日

新增 `eve欧服` 游戏规则 By @coldeve

### 2018年9月17日

更新 `国内ip路由表` By @1715173329

更新 `绝地求生-亚服、东南亚服 PUBG Asia & Northeast Asia` 游戏规则 By @lmc999

### 2018年8月30日

新增 `Telegram` 平台规则 By @1715173329

### 2018年8月27日

新增 `Osu!` 游戏规则

### 2018年8月26日

新增 `VRchat` 游戏规则 By @AmazingDM

### 2018年8月18日

更新`国内ip路由表` By @1715173329

### 2018年8月14日

更新`国内ip路由表` By @jason2000915

更新 `绝地求生-亚服、东南亚服PUBG Asia & Northeast Asia` 游戏规则 By @lmc999

更新 `战地1 Battlefield 1` 游戏规则 By @jason2000915

更新 `steam社区` 平台规则 By @jason2000915

新增 `战地4 BattleField 4` 游戏规则 By @jason2000915

新增 `欧卡2 Euro-Truck-Simulator-2` 游戏规则 By @jason2000915

新增 `Origin客户端` 平台规则 By @jason2000915

新增 `极限竞速7 Forza-7` 游戏规则 By @jason2000915

新增 `脏弹Dirty-Bomb` 游戏规则 By @jason2000915

新增 `Discord` 平台规则

新增 `DayZ` 游戏规则 By @AmazingDM

### 2018年7月10日

新增 `英雄联盟-台服 League-of-Legends-tw` 游戏规则

新增 `英雄联盟-美服 League-of-Legends-us` 游戏规则

新增 `守望先锋-亚服 Overwatch` 游戏规则

新增 `Steam社区` 平台规则(Beta)

更新 `战争雷霆-steam` 游戏规则

更新 `星际战甲 Warframe` 游戏规则

更新 `彩虹六号:围攻-东亚` 游戏规则

更新 `GTA-V` 游戏规则

更新 `绝地求生 PlayerUnknown's Battlegrounds` 游戏规则

### 2018年7月7日

新增`看门狗2 Watch Dogs2` 游戏规则 By @AmazingDM

新增`微软商店 Microsoft-Store` 规则 By @WhitecrowAuraro

新增及优化`只代理中国IP`,`不代理中国IP(且绕过局域网)` 规则 By @1715173329

### 2018年7月6日

新增 `不代理中国IP(且绕过局域网)` 规则

规范规则命名

### 2018年7月4日

创建了项目

`(以下更新是我之前别的地方留的日志，那时候本项目还没建立xd，不要在意细节233)`

### 2018年2月6日

新增
支持的游戏规则

巫师:昆特牌-国际服(Gwent: The Witcher Card Game-International)
影之诗(Shadowverse)
末转变者(Unturned)
仁王(Nioh)
上古卷轴OL(The Elder Scrolls)
使命召唤4重置版(COD4: MWR)
方舟:生存进化(Ark: Survival Evolved)
黑暗之魂3(Dark Souls III)
战舰世界-亚服(World of Warships-Asia)
英雄连2(Company of Heroes 2)
Gang Beasts

### 2018年2月4日

新增
支持的游戏规则

英雄联盟-日服
坦克世界-国服
坦克世界-亚服
CS:GO
GTA-5
H1Z1-亚服
全境封锁
黎明杀机
战地1
彩虹六号:围攻-亚洲
Warframe-星际战甲
战争雷霆-外服
求生之路2-（测试）
荒野行动PC版
300英雄
剑灵-日服
DOTA2-日服
饥荒联机版-steam
游侠对战平台
堡垒之夜-国服


code:
# 常见问题

## SSTap越用内存占用越大，甚至死机?

在首页的点我下载中下载无广告的1.0.9.7版本的SStap。

## SSTap打开的时候提示脚本错误

[![PnuzEF.png](https://s1.ax1x.com/2018/07/10/PnuzEF.png)](https://imgchr.com/i/PnuzEF)

如上图所示，打开的时候提示这个错误

SSTap加载Google广告的时候页面出现错误，但点是或否都没关系，软件是正常工作的.

## SSTap打开的时候，后台有莫名的音乐声音？

我中病毒了!?
这是由于SSTap里面的Google广告会根据个人广告ID推送的广告，刚好里面会有音乐的。
解决办法:
就是在**任务栏**里面找到音量图标，打开音量合成器，在SSTap的图标选择静音该程序即可.

## Win10 开启代理后 CPU 占用很高，导致电脑很卡

这是由一个 Win10 的一个网络检测服务所致，且一般发生在网络适配器开启了 IPv6 协议的情况下，SSTap 虚拟网卡创建的连接由于没有 IPv6 而被误认为是受限网络从而触发了检测。（大概）
解决方案：
打开任务管理器，根据 CPU 占用排序找到网络受限的那个进程，右击结束即可
如果您不使用或当前网络环境没有 IPv6，可以将网络适配器属性中的 IPv6 取消打勾。 By [神代綺凜](https://moe.best/)

## 规则无法使用！

[![加入 Telegram 群组](https://img.shields.io/badge/%E5%8A%A0%E5%85%A5-Telegram_%E7%BE%A4%E7%BB%84-brightgreen.svg)](https://t.me/SSTapRule)

请加入我们的 Telegram 群组，或者开 [issue](https://github.com/FQrabbit/SSTap-Rule/issues/new/choose) 反馈问题。


code:
# SSTap-Rule

[![加入 Telegram 群组](https://img.shields.io/badge/%E5%8A%A0%E5%85%A5-Telegram_%E7%BE%A4%E7%BB%84-brightgreen.svg)](https://t.me/SSTapRule)

**适用sstap版本：1.0.9.7**

 [点我进入下载页面](https://github.com/FQrabbit/SSTap-Rule/releases/tag/SSTap常用版本及去广告)

>SStap官方网站：[sstap-享受游戏-使用sstap](https://www.sockscap64.com/sstap-享受游戏-使用sstap/)
>
>SSTap已于2017年11月19日停止开发及维护.

由于作者的原因，停止了更新SSTap，但SStap所用到的修改系统路由表的方法依旧可用。

在这里会不定时的更新各个游戏的路由表规则，你只要下载所需的规则或规则包导入对应文件夹即可使用。

## 相关推荐

[**翻墙功夫网 :100:**](https://geckoiplc.com/register?aff=SSvrgZkX)

这是我所选择的服务器提供商，IPLC专线翻墙、稳定、速度快、价格便宜。欢迎大家使用我的推广链接前去注册。

[点我注册](https://geckoiplc.com/register?aff=SSvrgZkX)

## 规则使用方法

-  [点我进入规则包下载页面](https://github.com/FQrabbit/SSTap-Rule/releases)

- 下载规则存档的zip包。( 规则包的更新速度较慢，见谅。)

- 打开你 SSTap 所在文件夹：
    - 在开始菜单中的快捷方式：右击 SSTap 快捷方式，选择打开文件位置。此时在弹出的窗口中你还会看到一个 SSTap 快捷方式。右击它，再选择一次打开文件位置。
    - 在桌面 / 其他位置的快捷方式：右击快捷方式，选择打开文件位置。

- 打开 SSTap 文件夹下的 `rules` 文件夹。

- 打开压缩包内的 `rules` 文件夹，选择需要的文件，将它们拖至 SSTap rules 文件夹窗口内。你也可以全选，或者清除原来的规则文件，直接将本项目的规则拖入 SSTap rules 文件夹窗口。

**注意：解压缩之前请注意备份之前的规则文件，以防文件被覆盖造成的麻烦。**

- 若想下载单个规则，请自行寻找方法。

## 我要参与

**欢迎大家一起来完善这里的所有规则！**

如果项目内不存在你所需要的规则，你可以 [开 issue](https://github.com/FQrabbit/SSTap-Rule/issues/new/choose) 来请求新增规则(新增时限不确定) 或 [查看wiki教程](https://github.com/FQrabbit/SSTap-Rule/wiki) 来自己编写路由表。

[常见问题](https://github.com/FQrabbit/SSTap-Rule/blob/master/FAQ.md)

[Changelog](https://github.com/FQrabbit/SSTap-Rule/blob/master/Changelog.md "更新日志")


code:
> [https://github.com/FQrabbit/SSTap-Rule/issues/222](https://github.com/FQrabbit/SSTap-Rule/issues/222)

# 利用MMA手动提取加速规则（超不详细）

## 0. 环境需求

- **OS:** Windows 10 , Windows 7, Windows 8, Windows 8.1, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Server 2016
- **Redistributables:** Minimum: .NET Framework 4.5
- **Display Resolution:** 1024 x 768 or above
- **Hard disk space: Install:** Minimum: 350MB; Capturing and loading traces: Recommended: 50GB
- **RAM:** 64-bit: Minimum: 2GB, Recommended: 8GB; 32-bit: Minimum: 2GB
- **CPU:** Minimum: 1.4 GHz, Recommended: 2 x 2.80 GHz (64-bit)

## 1. 下载MMA

[Microsoft Message Analyzer](https://www.microsoft.com/en-us/download/details.aspx?id=44226)

## 2. SSTap开启全局或绕过中国IP模式启动

![](https://i.loli.net/2019/04/12/5cb03a7e8a3b9.jpg)

## 3. 以管理员权限运行MMA，启动新的Local Trace

![](https://i.loli.net/2019/04/12/5cb03af4d8b6a.png)

## 4. Group ProcessName

在表头处右键，Add Column，然后在弹出的界面中搜索ProcessName并添加

右键ProcessName，点击Group

![](https://i.loli.net/2019/04/12/5cb03b1a1d2b8.png)

## 5. 玩游戏

玩就是了，不多做解释。

如果有多个数据中心，建议都切换一次。

## 6. 提取规则

打开游戏对应的Process与SSTap的Process，记录每个请求的Destination列的内容

如果是

- IP（`***.***.***.***`）: 直接添加一条`***.***.***.0/24`的规则（小白行为，如有问题请dalao指正）
- 域名（`some.domain.com`）: 去某[节点测试](<http://ping.chinaz.com/>)的网站测试域名，测试完毕后将所有IP按照上一条添加为规则

**请注意，不要添加保留/私有IP地址与你的梯子的IP地址。**

## Moreover

1. DNS污染的域名可以通过hosts处理（或者用sstap处理DNS？
2. 貌似wiki不能PR，提个issue好了（


code:
# 提取加速器规则（超详细）
 > 小白教程 大佬勿喷

**此教程所使用加速器为UU加速器针对使用虚拟网卡的加速，其他有PPTP或者OpenVPN、l2tp模式的加速器提取方式相同(只要可以搞到路由信息就OK;D)，新用户拥有3天免费试用。**

现已知`UU加速器(模式1、2、3) 腾讯加速器(模式1)`可提取路由信息

![腾讯加速器](https://jiasu.qq.com/images/xb/jiasulogo.png)

![UU](https://uu.res.netease.com/pc/gw/20180820194744/img/logo_10355c2.png)

UU加速模式科普

(1)pptp使用简单方便，不需要做额外配置，连接、断开的速度快，要求防火墙、路由器支持，对网络环境要求比较高。而l2tp需要共享密钥和修改注册表（对win系列机器讲）

(2)l2tp在穿透方面有时候会比pptp强一些， 有一定的网络防闪断能力。适合pptp不能用的环境 OpenVPN穿透能力最强。

(3)OpenVPN：穿透能力最强，适合校园网、公司局域网等受限网络环境，第一次使用要安装虚拟网卡。

(4)LSP:是现在网游加速的主流加速技术，因其可维护性高，受到具备较好的研发能力的网游加速器团队的喜爱。并且LSP能够做到比VPN这种传统代理技术更高的灵活性，同时也能够提供更好的加速效果，同样适合适合校园网、公司局域网等受限网络环境

# 正片：
## 1. 首先得有一个UU VIP账号不然无法提取外服规则
![](https://i.loli.net/2018/12/13/5c11fbffae8da.png)

## 2.找到需要提取的游戏，下面以CSGO为示例

* 选择好游戏后点击节点里面可以选择加速模式

![](https://i.loli.net/2018/12/13/5c11fd186475c.png)

* 如图 找到模式选择 勾上模式1.2.3

``注意有些游戏这里可能会出现没有节点可选的情况,这种情况说明UU还没有适配此游戏的路由规则，可以放弃了23333``

![](https://i.loli.net/2018/12/27/5c2432de45f25.png)

## 3.选择节点加速成功后打开 CMD(Win+R输入CMD打开,无需管理员权限) 和 [路由转SSTAP规则工具](https://www.ssrtool.com/tool/routeToRules)

在CMD里找好目录后输入以下命令将路由信息输出到文件

`route print -4 >> route.txt `

![](https://i.loli.net/2018/12/13/5c11ffa3cf025.png)

![](https://i.loli.net/2018/12/13/5c11ff455a0c7.png)

成功在D盘目录下获取route.txt一枚,大概长这样会有一堆显示 `在链路上` 的IP，这些就是我们需要转换的IP了（模式三则是虚拟网卡接口IP）

![](https://i.loli.net/2018/12/31/5c2a2cc931852.png)

将内容复制到 [路由转SSTAP规则工具](https://www.ssrtool.com/tool/routeToRules) 进行转换

![](https://i.loli.net/2018/12/13/5c11fffe0ffe8.png)

## 4.把转换后右边输出的一堆东西复制下来在SSTAP根目录rules文件夹新建一个xxx.rules的文件并完善相关信息

![](https://i.loli.net/2018/12/13/5c1200f4b89b0.png)

(PS:当然你也可以直接在SSTap中使用UI界面添加规则

![](https://s2.ax1x.com/2019/03/21/A3kQa9.png)

将复制到的东西粘贴进去，然后在第一行写上SSTAP规则头，一个你没玩过的船新版本就完成了，重启SSTAP即可看到规则。

**PS:如教程有问题或者其他修改建议请联系[@AmazingDM](https://github.com/AmazingDM) 或者发起[issues](https://github.com/FQrabbit/SSTap-Rule/issues),记得在[issues](https://github.com/FQrabbit/SSTap-Rule/issues)里附上无法转换的route.txt所有内容以及加速器名称、加速模式名称、游戏名称。**

如遇到无法转换或转换无反应结果为空，请检查当前加速模式是否为教程所示的3种模式

注：[转换工具](https://www.ssrtool.com/tool/routeToRules)将过滤所有[保留IP](https://zh.wikipedia.org/wiki/%E4%BF%9D%E7%95%99IP%E5%9C%B0%E5%9D%80)，转换失败后可自行对比route.txt里的IP。出现无法访问请挂代理。 ;D

**教程所有内容仅供研究学习使用，不得用于任何商业用途。**

**Use it on your own risk!**


code:
> 目前来说，SStap无法解决NAT问题。如果游戏里会有提示NAT类型严格的话，说明此游戏不适用于使用SStap进行加速。也有些游戏采用P2P方式进行联机，一般为某玩家作为房间主机，其余玩家通过与房主间建立连接来进行游戏。继续使用SStap前请知悉。而[Netch]( https://github.com/NetchX/Netch)则能解决以上问题。
>
> 选择使用SStap这种基于ip地址对游戏进行代理，还是使用基于游戏进程进行代理的Netch，亦或者选择商用加速器，悉听尊便。

> **SStap版本：1.0.9.7**

# 手动编写rules

SStap使用以`.rules`作为后缀名的文件以作为规则。为保证规范，一个rules文件应使用` (游戏完整英文名，首字母大写，空格用 - 代替)-(游戏区服)`作为命名，如`League-of-Legends-tw.rules`。

![]( https://raw.githubusercontent.com/FQrabbit/SSTap-Rule/master/doc/rules-example.jpg )

## 规则文件说明

<img src=" https://raw.githubusercontent.com/FQrabbit/SSTap-Rule/master/doc/rules-example-2.jpg"  />

规则文件可用文本编辑器打开。

规则第一行为规则头。有固定的格式。

> #CSGO(规则英文名),
>
> 反恐精英:全球攻势(规则中文名),
>
> 0(动作类型 0.代理 1.直连),
>
> 0(和上一条相同 动作类型 0.代理 1.直连),
>
> 1(未知),0(未知),
>
> 1(是否可读写 0.可读写 1.只可读),
>
> 0(DNS代理类型 0.自动 1.直连 2.代理),
>
> By-AmazingDM(备注)

其余为路由表。路由表中的每一行为CIDR 地址。以CIDR地址` 222.80.18.0/24 `为例，`222.80.18.0` 为一个网段，` /24 `为子网前缀长度，这表明该网段下有256个地址。子网前缀长度越小，表明该子网内可用地址越多。

当你获取到游戏所需要用到的IPV4地址，如`xxx.xxx.xxx.xxx`。（说明： IPv4地址是类似 A.B.C.D 的格式，它是32位，用"."分成四段，用10进制表示 ）。如果游戏仅需要与该地址进行通讯，则建议在地址后加上`/32`构成CIDR地址，表示仅代理该ip，如果获取到的地址前三段都相同，而第四段有变化，则建议将第四段改为`.0/24`构成CIDR地址，表示代理该网段下的256个IPV4地址。（SStap是否对IPV6地址支持，目前并不清楚。）

一般来说，获取到单个ip地址就可写为`xxx.xxx.xxx.0/24`。在规则里，并不建议出现小于16的子网前缀长度。

文本应保存为Unix格式。规则内CIDR地址应使用排序增强文本易读性，并且同一地址不应多次出现。

向项目发起 pull request 提交自制规则时，应向项目changelog文件写入更新内容，格式仿照文件内容。

参考：[子网掩码](https://colobu.com/2014/11/12/subnet-mask/)

## 相关手动获取游戏ip的教程
[ 一个自动获取游戏远程ip，并自动写成SSTAP规则文件的脚本。 ]( https://github.com/oooldtoy/SSTAP_ip_crawl_tool#sstap_ip_crawl_tool )(建议优先考虑此工具)

[使用 openQPA 进行基于游戏进程的ip地址获取]( https://github.com/NormanBB/N/blob/master/intro.md )

[提取加速器规则（超详细）](https://github.com/FQrabbit/SSTap-Rule/blob/master/doc/UU-extract.md)

## 相关链接

[解决 Steam/Origin/Uplay/微软商店 等平台下载速度慢的问题](https://go2think.com/usbeam-hosts-editor/)

[基于TypeScript实现的开源SSTap](https://github.com/Srar/node-tap)


path: rules/PHANTASY STAR ONLINE2-JPtx.rules


code:
@echo off
set "time_code=%date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%"

cd /d %~dp0

echo.
echo ѡ���ܣ�
echo 1.����·����Ϣ�����
echo   ���������ļ������ļ�����
echo   �ļ���Ϊ��ǰʱ��
echo 2.�����µĹ����ļ�ͷ��
echo   (ע��Ḳ�ǵ�ǰ�ļ����µ�ͬ���ļ�)
echo   ֮��ִ�й���1
echo.
echo �����ļ���ʽ��ΪUTF-8����/CRLF��β
echo �����ֶ�ת��ΪUTF-8����/LF��β
echo ע�����ʹ��git�ύʱ
echo gitĬ�ϻ������ļ���β��CRLFת��ΪLF
echo �ο�: github.com/cssmagic/blog/issues/22
echo.
echo ֱ�ӻس�Ϊ����1
echo ���������ַ��ٻس�Ϊ����2
set /p is_cplx=
if defined is_cplx goto :CPLX
goto :SMPL

:CPLX
echo.
echo ��������ļ���
echo ����ʹ�ô�Ӣ���ַ�
set /p rules_name=
echo.
echo ��������ļ�ͷ����Ϣ
echo.
echo �������Ӣ����
set /p rules_en=
echo.
echo �������������
set /p rules_cn=
echo.
echo ѡ������������
echo ֱ�ӻس�Ϊ����
echo ���������ַ��ٻس�Ϊֱ��
set /p is_drc=
if defined is_drc (
    set is_drc=1
) else (set is_drc=0)
echo.
echo ���빱��������
echo ֱ�ӻس�ΪFQrabbit
echo ����ʹ����������ַ�
echo ���ļ��������߲���ͳһ��ʽΪ
echo By-XXX(XXXΪ������Ĺ���������)
echo Ҳ����˵�㲻��Ҫ����"By-"�ⲿ��
set /p contributor=
if not defined contributor set "contributor=FQrabbit"
echo.

:SMPL
chcp 65001
if defined is_cplx (
    echo #%rules_en%,%rules_cn%,%is_drc%,%is_drc%,1,0,1,0,By-%contributor%> "%~dp0%rules_name%.rules"
)
route print -4> "%time_code%.txt"
chcp 936
echo.
echo ��鿴��ǰĿ¼
echo "%~dp0"
echo ���Ƿ��������ļ�����
echo %time_code%.txt
if defined is_cplx (
    echo %rules_name%.rules
)
echo.
echo ��Ctrl-Aȫѡ"%time_code%.txt"�е�����
echo �����Ƶ�����վ����ת��
echo tool.ssrshare.us/tool/routeToRules
echo Ȼ��ο����·������������ļ�
echo github.com/FQrabbit/SSTap-Rule/wiki/��������̳�-֮-��ȡ���������򣨳���ϸ��
echo.
echo ���ת�����Ϊ��
echo �뽫����UU����ģʽֻѡΪģʽ��
echo ���߽�ģʽһ����ȫѡ
echo �����¼��ٲ��ظ����ϲ���
echo.
echo ����ļ�δ������
echo ���鵱ǰ�ļ���д��Ȩ��
echo ���ߴ�������
echo ����ͨ�û�Ȩ�޿�д���ļ����ļ�����
echo ��������ָ��
echo route print -4^> xxx.txt
echo.
call cmd


code:
# useful bash stuff

```
gimpresize(){ input=$1; resolution=$2; output=$3; gimp -ib "(let* ((image (car (gimp-file-load 1 \"$input\" \"\")))(drawable (car (gimp-image-get-active-layer image))))(gimp-image-convert-precision image PRECISION-DOUBLE-LINEAR)(gimp-image-scale-full image $(tr x \  <<< $resolution) INTERPOLATION-LOHALO)(gimp-image-convert-precision image PRECISION-U8-GAMMA)(gimp-file-save 1 image drawable \"$output\" \"\"))(gimp-quit 0)";}
# gimpresize input.png 1920x1080 output.png

imagemagickresize(){ input=$1; resolution=$2; output=$3; convert "$input" -colorspace RGB -define quantum:format=floating-point -depth 64 +sigmoidal-contrast 12.09375 -filter Lanczossharp -distort resize $resolution -sigmoidal-contrast 12.09375 -depth 8 -colorspace sRGB "$output";}
# imagemagickresize input.png 1920 output.png

soxresample(){ input=$1; samplerate=$2; output=$3; sox "$input" "$output" rate -v -b 99.7 -M $samplerate;}
# soxresample input.flac 96000 output.flac

xcftoimage(){ input=$1; output=$2; gimp -ib "(let* ((image (car (gimp-file-load 1 \"$input\" \"$input\")))(drawable (car (gimp-image-merge-visible-layers image CLIP-TO-IMAGE))))(gimp-file-save 1 image drawable \"$output\" \"\"))(gimp-quit 0)";}
# xcftoimage image.xcf image.png

vidresize(){ input=$1; resolution=$2; videoquality=$3; output=$4; ffmpeg -y -i "$input" -vf scale=${resolution}:flags=lanczos+full_chroma_int+full_chroma_inp+bitexact -c:v h264 -crf $videoquality -preset veryslow -level 5.1 -pix_fmt yuv420p -c:a copy "$output";}
# vidresize input.mkv 1280:-1 20 output.mp4

vidtogif(){ input=$1; resolution=$2; colors=$3; output=$4; ffmpeg -y -i "$input" -vf "scale=${resolution}:flags=lanczos+full_chroma_int+full_chroma_inp+bitexact, palettegen=max_colors=$colors" /tmp/palette.png && ffmpeg -y -i "$input" -i /tmp/palette.png -filter_complex "scale=${resolution}:flags=lanczos+full_chroma_int+full_chroma_inp+bitexact, paletteuse=dither=bayer:bayer_scale=4" "$output" && gifsicle --no-conserve-memory -b -O3 -i "$output";}
# vidtogif input.webm 640:-1 200 output.gif

vidtowebm(){ input=$1; videoquality=$2; audioquality=$3; output=$4; ffmpeg -y -i "$input" -crf $videoquality -b:v 0 -b:a $audioquality "$output";}
# vidtowebm input.mp4 30 192K output.webm

vidtomp4(){ input=$1; videoquality=$2; audioquality=$3; output=$4; ffmpeg -y -i "$input" -c:v libx264 -crf $videoquality -profile high -level 5.1 -preset veryslow -pix_fmt yuv420p -c:a aac -b:a $audioquality "$output";}
# vidtomp4 input.mkv 20 192K output.mp4

vidstowebmicecast() { input=$1; videoquality=$2; audioquality=$3; width=$4; height=$5; output=$6; mpv "$input" --quiet -vf="lavfi=[format=yuv420p10,deband,deblock,scale=(iw*sar)*min($width/(iw*sar)\,$height/ih):ih*min($width/(iw*sar)\,$height/ih):flags=experimental+full_chroma_int+full_chroma_inp+bitexact,pad=$width:$height:($width-iw*min($width/iw\,$height/ih))/2:($height-ih*min($width/iw\,$height/ih))/2,realtime]" -ovc=rawvideo -oac=pcm_f32le -of=nut -o=- | ffmpeg -i - -c:v libvpx-vp9 -crf $videoquality -b:v 0 -g 60 -vsync vfr -r 60 -pix_fmt yuv420p10 -error-resilient partitions -deadline realtime -cpu-used 8 -threads 16 -frame-parallel 1 -tile-columns 4 -row-mt 1 -tile-rows 2 -c:a libopus -b:a $audioquality -packet_loss 2 -f webm -content_type video/webm "$output";}
# vidstowebmicecast directory/ 30 192K 1280 720 icecast://source:hackme@host:port/stream.webm

7zipmax(){ directory=$1; archive=$2; 7z a -t7z -mx9 -m0=lzma -mfb=273 -md=1024m -ms=on -mqs=on -myx=9 -mmc=200 -mlc=8 "$archive" "$directory";}
# 7zipmax directory/ archive.7z

tarmax(){ directory=$1; archive=$2; XZ_OPT="--lzma1=preset=9e,dict=1024MB,nice=273,depth=200,lc=4" tar --lzma -cf "$archive" "$directory";}
# tarmax directory/ archive.tar.lzma

waifu2xmax(){ input=$1; output=$2; quality=$(identify -verbose "$input" | grep -oP "(?<=Quality: ).*"); [ -z $quality ] && opt="-m scale"; [ $quality -le 95 ] && opt="-m noise-scale --noise-level 3"; [ $quality -gt 95 ] && opt="-m noise-scale --noise-level 2"; [ $quality -gt 98 ] && opt="-m noise-scale --noise-level 1"; iteration=$(identify -format "%wx%h" "$input" | awk -F x "{print(40000000/(\$2*\$1)/4)}" | sed "s/\..*//"); while waifu2x-converter-cpp -i "$input" --force-OpenCL $opt --scale-ratio $iteration -o "$output"; do ((iteration++)); done;}
# waifu2xmax input.png output.png

screenshot() { scrot -e "(meh \$f || sxiv \$f || feh \$f || nomacs \$f) &> /dev/null & echo -n \"Upload to 0x0.st? \"; read yn && [ \\\$yn == y ] && curl -F file=@\$f https://0x0.st";}
# screenshot

mouseaccelerationdisable() { xinput list --name-only | sed "/Virtual core pointer/,/Virtual core keyboard/"\!"d;//d" | xargs -I{} xinput set-prop pointer:{} "libinput Accel Profile Enabled" 0 1 &> /dev/null;}
# mouseaccelerationdisable

mouseaccelerationenable() { xinput list --name-only | sed "/Virtual core pointer/,/Virtual core keyboard/"\!"d;//d" | xargs -I{} xinput set-prop pointer:{} "libinput Accel Profile Enabled" 1 0 &> /dev/null;}
# mouseaccelerationdisable

brightness(){ for f in /sys/class/backlight/*; do sudo sh -c "echo $(($(<$f/brightness)$1*$(<$f/max_brightness)/100)) > $f/brightness"; done;}
# brightness -5 / brightness +5

temps(){ for tempdevice in /sys/class/hwmon/*; do [ -f $tempdevice/temp1_input ] && (temp=$(<$tempdevice/temp1_input); echo "$(<$tempdevice/name) ${temp:0:-3}C"); done;}
# temps

cputemp(){ for cputempdevice in /sys/class/hwmon/*; do cputempname=$(<$cputempdevice/name); [[ $cputempname == coretemp || $cputempname == it87* || $cputempname == nct6775 || $cputempname == k8temp || $cputempname == k9temp ]] && break; done; temp=$(<$cputempdevice/temp1_input); echo ${temp:0:-3}C;}
# cputemp

freeram(){ lsmod | sed "s/ .*//" | xargs -I{} sudo rmmod {}; sudo /etc/init.d/udev restart; sudo sysctl vm.drop_caches=3;}
# freeram

passgen(){ echo -n Generating password...\ ; head -c 100 /dev/random | tr -cd [:print:]; echo;}
# passgen

flipcoin(){ (($(od -An -N1 /dev/random) % 2)) && echo heads || echo tails;}
# flipcoin

deepfry(){ input=$1; iterations=$2; output=$3; cp "$input" "$output"; for ((n=0;n<$iterations;n++)); do convert "$output" -quality $(shuf -n1 -i 50-100) "$output"; done;}
# deepfry input.jpg 1000 output.jpg

settime(){ sudo date +%s -s @"$(curl -s http://www.4webhelp.net/us/timestamp.php | grep -oP "(?<=p\" value=\").*(?=\" s)")"; date;}
# settime

quake3play(){ if [ ! -d "/home/$USER/quake3e/" ]; then mkdir ~/quake3e/; cd ~/quake3e/; git clone --depth 1 https://github.com/ec-/Quake3e; cd Quake3e; sed -i "s/Cvar_CheckRange( sv_fps, \"10\", \"125\", CV_INTEGER );//" code/server/sv_init.c; sed -i "s/Cvar_CheckRange( cl_maxpackets, \"15\", \"125\", CV_INTEGER );//" code/client/cl_input.c; sed -i "s/.*OPTIMIZE =.*/OPTIMIZE = -Ofast -march=native -mfpmath=both -pipe -funroll-loops -flto=8 -fgraphite-identity -floop-nest-optimize -malign-data=cacheline -mtls-dialect=gnu2 -Wl,--hash-style=gnu/" Makefile; make -j8 || return; mv build/release-linux-x86_64/quake3e* ..; cd ..; rm -Rf Quake3e/; mkdir baseq3/; wget -P baseq3/ https://github.com/nrempel/q3-server/raw/master/baseq3/pak{0..8}.pk3 https://chiru.no/u/autoexec.cfg; fi; cd ~/quake3e/; ./quake3e.x64 +connect chiru.no;}
#quake3play

fvwmcolor(){ color=$1; [[ ${#1} == 6 ]] && sed -i "s/\(Style \* BackColor \).*/\1#$color/; s/\(Style \* HilightBack \).*/\1#$color/; s/\(Colorset 1 bg #\)......\(.*\)/\1$color\2/; s/\(Colorset 4 bg #\)......\(.*\)/\1$color\2/" ~/.fvwm2rc && pkill fvwm && fvwm &}
# fvwmcolor 056839

defaultalsadevice(){ grep " \[" /proc/asound/cards; echo -n "Select the audio device to become default: "; read choiceaudio; echo -e "defaults.pcm.card ${choiceaudio}\ndefaults.ctl.card ${choiceaudio}" > ~/.asoundrc; echo -e "\nAudio device ${choiceaudio} is now the default for ALSA programs. (~/.asoundrc)";}
# defaultalsadevice
```

license: unknown


code:
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
.hypothesis/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# IPython Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# dotenv
.env

# virtualenv
venv/
ENV/

# Spyder project settings
.spyderproject

# Rope project settings
.ropeproject

# Start.tw
src/config/start.tw

repo_name: shinx/fc

path: .gitignore


code:
# Ignore everything in this directory
*
# Except the following:
!.gitignore
!resources/vector/*


code:
#!/bin/bash

# Will add all *.tw files to StoryIncludes.
rm -f src/config/start.tw
cp src/config/start.tw.proto start.tw.tmp
find src -name '*.tw' -print >>start.tw.tmp
mv start.tw.tmp src/config/start.tw

HASH=`git log -n1 |grep commit | sed 's/commit //'`

if [ $(uname -m) = "x86_64" ]
then
	echo "x64 arch"
	./devTools/tweeGo/tweego_nix64 -o bin/FC_pregmod.html src/config/start.tw
else
	echo "x86 arch"
	./devTools/tweeGo/tweego_nix86 -o bin/FC_pregmod.html src/config/start.tw
fi

rm -f src/config/start.tw

path: compile


code:
#!/bin/bash

# Will add all *.tw files to StoryIncludes.
rm -f src/config/start.tw
cp src/config/start.tw.proto start.tw.tmp
find src -name '*.tw' -print >>start.tw.tmp
mv start.tw.tmp src/config/start.tw

HASH=`git log -n1 |grep -m1 commit | sed 's/commit //'`

if [ $(uname -m) = "x86_64" ]
then
	echo "x64 arch"
	./devTools/tweeGo/tweego_nix64 -o bin/FC_pregmod_$HASH.html src/config/start.tw
else
	echo "x86 arch"
	./devTools/tweeGo/tweego_nix86 -o bin/FC_pregmod_$HASH.html src/config/start.tw
fi

rm -f src/config/start.tw

echo "FC_pregmod_$HASH.html" compilation finished.

path: compile-git


code:
@echo off
:: Free Cities Basic Compiler - Windows

:: Will add all *.tw files to StoryIncludes.
del src\config\start.tw
copy src\config\start.tw.proto start.tw.tmp >nul
>>start.tw.tmp (for /r "src" %%F in (*.tw) do echo %%F)
move start.tw.tmp src\config\start.tw >nul

:: Run the appropriate compiler for the user's CPU architecture.
if %PROCESSOR_ARCHITECTURE% == AMD64 (
    CALL "%~dp0devTools\tweeGo\tweego_win64.exe" -o "%~dp0bin/FC_pregmod.html" "%~dp0src\config\start.tw"
) else (
    CALL "%~dp0devTools\tweeGo\tweego_win86.exe" -o "%~dp0bin/FC_pregmod.html" "%~dp0src\config\start.tw"
)

del src\config\start.tw
ECHO Done


code:
@echo off
:: Free Cities Basic Compiler - Windows

:: Will add all *.tw files to StoryIncludes.
del src\config\start.tw
copy src\config\start.tw.proto start.tw.tmp >nul
>>start.tw.tmp (for /r "src" %%F in (*.tw) do echo %%F)
move start.tw.tmp src\config\start.tw >nul

:: Run the appropriate compiler for the user's CPU architecture.
if %PROCESSOR_ARCHITECTURE% == AMD64 (
    CALL "%~dp0devTools\tweeGo\tweego_win64.exe" -o "%~dp0bin/FC_pregmod.html" "%~dp0src\config\start.tw"
) else (
    CALL "%~dp0devTools\tweeGo\tweego_win86.exe" -o "%~dp0bin/FC_pregmod.html" "%~dp0src\config\start.tw"
)

del src\config\start.tw
ECHO Done
PAUSE


code:
:: slave generation widgets [nobr]

<<widget "NationalityToRace">>

<<if $fixedRace == 0>>

<<if ($activeSlave.nationality is "American")>>
	<<set $activeSlave.race to either("black", "middle eastern", "white", "white", "white", "latina", "latina", "asian", "amerindian", "mixed race")>>
<<elseif ($activeSlave.nationality is "Canadian")>>
	<<set $activeSlave.race to either("white", "white", "white", "white", "amerindian")>>
<<elseif ($activeSlave.nationality is "Puerto Rican")>>
	<<set $activeSlave.race to either("latina")>>
<<elseif ($activeSlave.nationality is "Cuban")>>
	<<set $activeSlave.race to either("latina", "black")>>
<<elseif ($activeSlave.nationality is "Haitian")>>
	<<set $activeSlave.race to either("black")>>
<<elseif ($activeSlave.nationality is "Jamaican")>>
	<<set $activeSlave.race to either("black")>>
<<elseif ($activeSlave.nationality is "Mexican")>>
	<<set $activeSlave.race to either("latina", "latina", "latina", "latina", "latina", "amerindian")>>
<<elseif ($activeSlave.nationality is "Dominican")>>
	<<set $activeSlave.race to either("mixed race", "mixed race", "mixed race", "mixed race", "mixed race", "mixed race", "mixed race", "white", "white", "black")>>
<<elseif ($activeSlave.nationality is "Peruvian")>>
	<<set $activeSlave.race to either("latina", "amerindian")>>
<<elseif ($activeSlave.nationality is "Venezuelan")>>
	<<set $activeSlave.race to either("latina")>>
<<elseif ($activeSlave.nationality is "Bolivian")>>
	<<set $activeSlave.race to either("latina", "amerindian")>>
<<elseif ($activeSlave.nationality is "Guatemalan")>>
	<<set $activeSlave.race to either("latina", "amerindian")>>
<<elseif ($activeSlave.nationality is "Brazilian")>>
	<<set $activeSlave.race to either("black", "latina", "mixed race", "mixed race", "amerindian", "white")>>
<<elseif ($activeSlave.nationality is "Argentinian")>>
	<<set $activeSlave.race to either("white", "latina", "latina")>>
<<elseif ($activeSlave.nationality is "Chilean")>>
	<<set $activeSlave.race to either("white", "latina", "latina", "latina")>>
<<elseif ($activeSlave.nationality is "Colombian")>>
	<<set $activeSlave.race to either("latina")>>
<<elseif ($activeSlave.nationality is "Egyptian")>>
	<<set $activeSlave.race to either("black", "middle eastern", "middle eastern", "middle eastern", "semitic")>>
<<elseif ($activeSlave.nationality is "Turkish")>>
	<<set $activeSlave.race to either("middle eastern", "middle eastern", "middle eastern", "semitic")>>
<<elseif ($activeSlave.nationality is "Iranian")>>
	<<set $activeSlave.race to either("indo-aryan", "indo-aryan", "indo-aryan", "semitic")>>
<<elseif ($activeSlave.nationality is "Armenian")>>
	<<set $activeSlave.race to either("indo-aryan", "semitic")>>
<<elseif ($activeSlave.nationality is "Israeli")>>
	<<set $activeSlave.race to either("white", "middle eastern", "semitic", "semitic")>>
<<elseif ($activeSlave.nationality is "Saudi")>>
	<<set $activeSlave.race to either("black", "asian", "middle eastern", "middle eastern")>>
<<elseif ($activeSlave.nationality is "Moroccan")>>
	<<set $activeSlave.race to either("middle eastern", "middle eastern", "black")>>
<<elseif ($activeSlave.nationality is "Nigerian")>>
	<<set $activeSlave.race to either("black")>>
<<elseif ($activeSlave.nationality is "Kenyan")>>
	<<set $activeSlave.race to either("black")>>
<<elseif ($activeSlave.nationality is "Zimbabwean")>>
	<<set $activeSlave.race to either("black", "black", "black", "black", "white")>>
<<elseif ($activeSlave.nationality is "Ugandan")>>
	<<set $activeSlave.race to either("black")>>
<<elseif ($activeSlave.nationality is "Tanzanian")>>
	<<set $activeSlave.race to either("black", "black", "black", "semitic")>>
<<elseif ($activeSlave.nationality is "Ghanan")>>
	<<set $activeSlave.race to either("black", "black", "black", "semitic")>>
<<elseif ($activeSlave.nationality is "Congolese")>>
	<<set $activeSlave.race to either("black")>>
<<elseif ($activeSlave.nationality is "Ethiopian")>>
	<<set $activeSlave.race to either("black", "black", "black", "middle eastern", "semitic")>>
<<elseif ($activeSlave.nationality is "South African")>>
	<<set $activeSlave.race to either("black", "black", "black", "white")>>
<<elseif ($activeSlave.nationality is "Chinese")>>
	<<set $activeSlave.race to either("asian")>>
<<elseif ($activeSlave.nationality is "Korean")>>
	<<set $activeSlave.race to either("asian")>>
<<elseif ($activeSlave.nationality is "Japanese")>>
	<<set $activeSlave.race to either("asian")>>
<<elseif ($activeSlave.nationality is "Thai")>>
	<<set $activeSlave.race to either("asian", "asian", "malay")>>
<<elseif ($activeSlave.nationality is "Vietnamese")>>
	<<set $activeSlave.race to either("asian")>>
<<elseif ($activeSlave.nationality is "Indonesian")>>
	<<set $activeSlave.race to either("asian", "malay", "malay", "pacific islander")>>
<<elseif ($activeSlave.nationality is "Filipina")>>
	<<set $activeSlave.race to either("asian", "malay", "malay", "pacific islander")>>
<<elseif ($activeSlave.nationality is "Burmese")>>
	<<set $activeSlave.race to either("asian", "asian", "indo-aryan")>>
<<elseif ($activeSlave.nationality is "Nepalese")>>
	<<set $activeSlave.race to either("asian", "asian", "indo-aryan")>>
<<elseif ($activeSlave.nationality is "Uzbek")>>
	<<set $activeSlave.race to either("asian")>>
<<elseif ($activeSlave.nationality is "Afghan")>>
	<<set $activeSlave.race to either("indo-aryan", "middle eastern")>>
<<elseif ($activeSlave.nationality is "Algerian")>>
	<<set $activeSlave.race to either("middle eastern")>>
<<elseif ($activeSlave.nationality is "Libyan")>>
	<<set $activeSlave.race to either("middle eastern")>>
<<elseif ($activeSlave.nationality is "Tunisian")>>
	<<set $activeSlave.race to either("middle eastern")>>
<<elseif ($activeSlave.nationality is "Lebanese")>>
	<<set $activeSlave.race to either("middle eastern", "semitic")>>
<<elseif ($activeSlave.nationality is "Jordanian")>>
	<<set $activeSlave.race to either("middle eastern", "semitic")>>
<<elseif ($activeSlave.nationality is "Emirati")>>
	<<set $activeSlave.race to either("middle eastern", "indo-aryan")>>
<<elseif ($activeSlave.nationality is "Omani")>>
	<<set $activeSlave.race to either("middle eastern", "indo-aryan")>>
<<elseif ($activeSlave.nationality is "Malian")>>
	<<set $activeSlave.race to either("black", "black", "black", "black", "black", "middle eastern")>>
<<elseif ($activeSlave.nationality is "Sudanese")>>
	<<set $activeSlave.race to either("black", "black", "black", "middle eastern")>>
<<elseif ($activeSlave.nationality is "Yemeni")>>
	<<set $activeSlave.race to either("black", "semitic", "middle eastern", "middle eastern", "middle eastern")>>
<<elseif ($activeSlave.nationality is "Iraqi")>>
	<<set $activeSlave.race to either("semitic", "middle eastern", "middle eastern", "middle eastern", "middle eastern")>>
<<elseif ($activeSlave.nationality is "Indian")>>
	<<set $activeSlave.race to either("indo-aryan")>>
<<elseif ($activeSlave.nationality is "Malaysian")>>
	<<set $activeSlave.race to either("asian", "malay", "malay", "malay")>>
<<elseif ($activeSlave.nationality is "Kazakh")>>
	<<set $activeSlave.race to either("asian", "asian", "asian", "semitic", "indo-aryan")>>
<<elseif ($activeSlave.nationality is "Pakistani")>>
	<<set $activeSlave.race to either("indo-aryan", "indo-aryan", "indo-aryan", "semitic")>>
<<elseif ($activeSlave.nationality is "Bangladeshi")>>
	<<set $activeSlave.race to either("indo-aryan")>>
<<elseif ($activeSlave.nationality is "Belarusian")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Russian")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Ukrainian")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Irish")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Icelandic")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Finnish")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Swiss")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Danish")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Norwegian")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Austrian")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Slovak")>>
	<<set $activeSlave.race to either("white", "white", "white", "white", "indo-aryan")>>
<<elseif ($activeSlave.nationality is "Dutch")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Belgian")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Czech")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Serbian")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Portuguese")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Hungarian")>>
	<<set $activeSlave.race to either("white", "white", "white", "white", "indo-aryan")>>
<<elseif ($activeSlave.nationality is "Estonian")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Polish")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Lithuanian")>>
	<<set $activeSlave.race to either("white")>>
<<elseif ($activeSlave.nationality is "Romanian")>>
	<<set $activeSlave.race to either("semitic", "white", "white", "white", "white", "indo-aryan")>>
<<elseif ($activeSlave.nationality is "German")>>
	<<set $activeSlave.race to either("black", "middle eastern", "white", "white", "white", "white", "white", "white")>>
<<elseif ($activeSlave.nationality is "Swedish")>>
	<<set $activeSlave.race to either("middle eastern", "white", "white", "white", "white")>>
<<elseif ($activeSlave.nationality is "French")>>
	<<set $activeSlave.race to either("black", "middle eastern", "white", "white", "white", "white", "white", "southern European")>>
<<elseif ($activeSlave.nationality is "Italian")>>
	<<set $activeSlave.race to either("middle eastern", "southern European", "southern European", "white", "white")>>
<<elseif ($activeSlave.nationality is "Greek")>>
	<<set $activeSlave.race to either("southern European")>>
<<elseif ($activeSlave.nationality is "Spanish")>>
	<<set $activeSlave.race to either("semitic", "southern European", "southern European")>>
<<elseif ($activeSlave.nationality is "British")>>
	<<set $activeSlave.race to either("indo-aryan", "white", "white", "white", "white", "white", "white", "white", "white", "white")>>
<<elseif ($activeSlave.nationality is "Scottish")>>
	<<set $activeSlave.race to either("middle eastern", "indo-aryan", "white", "white", "white", "white", "white", "white", "white")>>
<<elseif ($activeSlave.nationality is "Australian")>>
	<<set $activeSlave.race to either("white", "white", "black", "asian")>>
<<elseif ($activeSlave.nationality is "a New Zealander")>>
	<<set $activeSlave.race to either("white", "white", "white", "white", "pacific islander")>>
<</if>>

/% Begin mixed race rate adjustment. %/
/% Some countries are extremely ethnically homogeneous and unlikely to change soon. %/
<<if ($activeSlave.nationality is "Japanese")>>
	<<if random(1,100) > 98>>
		<<set $activeSlave.race to "mixed race">>
	<</if>>
<<elseif ($activeSlave.nationality is "Korean")>>
	<<if random(1,100) > 95>>
		<<set $activeSlave.race to "mixed race">>
	<</if>>
<<elseif ($activeSlave.nationality is "Polish") or ($activeSlave.nationality is "Romanian") or ($activeSlave.nationality is "Bulgarian") or ($activeSlave.nationality is "Lithuanian") or ($activeSlave.nationality is "Croatian")>>
	/% Croatia isn't an origin currently but the game might add it in the future. %/
	<<if random(1,100) > 98>>
		<<set $activeSlave.race to "mixed race">>
	<</if>>
<<elseif random(1,100) > 90>>
	/% Default rate. %/
	<<set $activeSlave.race to "mixed race">>
<</if>>
/% End mixed race rate adjustment. %/

<<else>>

<<switch $fixedRace>>
<<case "white">>
	<<set $activeSlave.nationality to $whiteNationalities.random()>>
<<case "asian">>
	<<set $activeSlave.nationality to $asianNationalities.random()>>
<<case "latina">>
	<<set $activeSlave.nationality to $latinaNationalities.random()>>
<<case "middle eastern">>
	<<set $activeSlave.nationality to $middleEasternNationalities.random()>>
<<case "black">>
	<<set $activeSlave.nationality to $blackNationalities.random()>>
<<case "indo-aryan">>
	<<set $activeSlave.nationality to $indoAryan"Nationalities.random()>>
<<case "pacific islander">>
	<<set $activeSlave.nationality to $pacificIslanderNationalities.random()>>
<<case "malay">>
	<<set $activeSlave.nationality to $malayNationalities.random()>>
<<case "amerindian">>
	<<set $activeSlave.nationality to $amerindianNationalities.random()>>
<<case "southern european">>
	<<set $activeSlave.nationality to $southernEuropean"Nationalities.random()>>
<<case "semitic">>
	<<set $activeSlave.nationality to $semiticNationalities.random()>>
<</switch>>
<<set $activeSlave.race = $fixedRace>>

<</if>>

<<if $arcologies[0].FSSupremacistLawME != 0>>
<<if $activeSlave.race == $arcologies[0].FSSupremacistRace>>
	<<set $activeSlave.race to "mixed race">>
<</if>>
<</if>>

<</widget>>

<<widget "NationalityToName">>

<<if ($activeSlave.nationality is "American")>>
	<<if $activeSlave.race is "black">>
		<<set $activeSlave.birthName to $africanAmericanSlaveNames.random()>>
	<<elseif $activeSlave.race is "latina">>
		<<set $activeSlave.birthName to $latinaSlaveNames.random()>>
	<<elseif $activeSlave.race is "asian">>
		<<set $activeSlave.birthName to $asianAmericanSlaveNames.random()>>
	<<elseif $activeSlave.race is "middle eastern">>
		<<set $activeSlave.birthName to $egyptianSlaveNames.random()>>
	<<else>>
		<<set $activeSlave.birthName to $whiteAmericanSlaveNames.random()>>
	<</if>>
<<case "Canadian">>
	<<set $activeSlave.birthName to $canadianSlaveNames.random()>>
<<case "Mexican">>
	<<set $activeSlave.birthName to $mexicanSlaveNames.random()>>
<<case "Dominican">>
	<<set $activeSlave.birthName to $dominicanSlaveNames.random()>>
<<case "Puerto Rican">>
	<<set $activeSlave.birthName to $puertoRicanSlaveNames.random()>>
<<case "Haitian">>
	<<set $activeSlave.birthName to $haitianSlaveNames.random()>>
<<case "Jamaican">>
	<<set $activeSlave.birthName to $jamaicanSlaveNames.random()>>
<<case "Cuban">>
	<<set $activeSlave.birthName to $cubanSlaveNames.random()>>
<<case "Guatemalan">>
	<<set $activeSlave.birthName to $guatemalanSlaveNames.random()>>
<<case "Chilean">>
	<<set $activeSlave.birthName to $chileanSlaveNames.random()>>
<<case "Peruvian">>
	<<set $activeSlave.birthName to $peruvianSlaveNames.random()>>
<<case "Bolivian">>
	<<set $activeSlave.birthName to $bolivianSlaveNames.random()>>
<<case "Venezuelan">>
	<<set $activeSlave.birthName to $venezuelanSlaveNames.random()>>
<<case "Belarusian">>
	<<set $activeSlave.birthName to $belarusianSlaveNames.random()>>
<<case "Russian">>
	<<set $activeSlave.birthName to $russianSlaveNames.random()>>
<<case "Ukrainian">>
	<<set $activeSlave.birthName to $ukrainianSlaveNames.random()>>
<<case "Italian">>
	<<set $activeSlave.birthName to $italianSlaveNames.random()>>
<<case "Spanish">>
	<<set $activeSlave.birthName to $spanishSlaveNames.random()>>
<<case "British">>
	<<set $activeSlave.birthName to $britishSlaveNames.random()>>
<<case "Scottish">>
	<<set $activeSlave.birthName to $scottishSlaveNames.random()>>
<<case "French">>
	<<set $activeSlave.birthName to $frenchSlaveNames.random()>>
<<case "German">>
	<<set $activeSlave.birthName to $germanSlaveNames.random()>>
<<case "Lithuanian">>
	<<set $activeSlave.birthName to $lithuanianSlaveNames.random()>>
<<case "Norwegian">>
	<<set $activeSlave.birthName to $norwegianSlaveNames.random()>>
<<case "Slovak">>
	<<set $activeSlave.birthName to $slovakSlaveNames.random()>>
<<case "Danish">>
	<<set $activeSlave.birthName to $danishSlaveNames.random()>>
<<case "Dutch">>
	<<set $activeSlave.birthName to $dutchSlaveNames.random()>>
<<case "Austrian">>
	<<set $activeSlave.birthName to $austrianSlaveNames.random()>>
<<case "Swiss">>
	<<set $activeSlave.birthName to $swissSlaveNames.random()>>
<<case "Serbian">>
	<<set $activeSlave.birthName to $serbianSlaveNames.random()>>
<<case "Belgian">>
	<<set $activeSlave.birthName to $belgianSlaveNames.random()>>
<<case "Czech">>
	<<set $activeSlave.birthName to $czechSlaveNames.random()>>
<<case "Portuguese">>
	<<set $activeSlave.birthName to $portugueseSlaveNames.random()>>
<<case "Swedish">>
	<<set $activeSlave.birthName to $swedishSlaveNames.random()>>
<<case "Romanian">>
	<<set $activeSlave.birthName to $romanianSlaveNames.random()>>
<<case "Hungarian">>
	<<set $activeSlave.birthName to $hungarianSlaveNames.random()>>
<<case "Estonian">>
	<<set $activeSlave.birthName to $estonianSlaveNames.random()>>
<<case "Irish">>
	<<set $activeSlave.birthName to $irishSlaveNames.random()>>
<<case "Icelandic">>
	<<set $activeSlave.birthName to $icelandicSlaveNames.random()>>
<<case "Finnish">>
	<<set $activeSlave.birthName to $finnishSlaveNames.random()>>
<<case "Greek">>
	<<set $activeSlave.birthName to $greekSlaveNames.random()>>
<<case "Polish">>
	<<set $activeSlave.birthName to $polishSlaveNames.random()>>
<<case "Brazilian">>
	<<set $activeSlave.birthName to $brazilianSlaveNames.random()>>
<<case "Egyptian">>
	<<set $activeSlave.birthName to $egyptianSlaveNames.random()>>
<<case "Colombian">>
	<<set $activeSlave.birthName to $colombianSlaveNames.random()>>
<<case "Argentinian">>
	<<set $activeSlave.birthName to $argentinianSlaveNames.random()>>
<<case "Turkish">>
	<<set $activeSlave.birthName to $turkishSlaveNames.random()>>
<<case "Iranian">>
	<<set $activeSlave.birthName to $iranianSlaveNames.random()>>
<<case "Armenian">>
	<<set $activeSlave.birthName to $armenianSlaveNames.random()>>
<<case "Israeli">>
	<<set $activeSlave.birthName to $israeliSlaveNames.random()>>
<<case "Saudi">>
	<<set $activeSlave.birthName to $saudiSlaveNames.random()>>
<<case "South African">>
	<<if $activeSlave.race is "black">>
		<<set $activeSlave.birthName to $blackSouthAfricanSlaveNames.random()>>
	<<else>>
		<<set $activeSlave.birthName to $whiteSouthAfricanSlaveNames.random()>>
	<</if>>
<<case "Nigerian">>
	<<set $activeSlave.birthName to $nigerianSlaveNames.random()>>
<<case "Congolese">>
	<<set $activeSlave.birthName to $congoleseSlaveNames.random()>>
<<case "Kenyan">>
	<<set $activeSlave.birthName to $kenyanSlaveNames.random()>>
<<case "Tanzanian">>
	<<set $activeSlave.birthName to $tanzanianSlaveNames.random()>>
<<case "Zimbabwean">>
	<<if $activeSlave.race == "white">>
		<<set $activeSlave.birthName to $britishSlaveNames.random()>>
	<<else>>
		<<set $activeSlave.birthName to $zimbabweanSlaveNames.random()>>
	<</if>>
<<case "Ghanan">>
	<<set $activeSlave.birthName to $ghananSlaveNames.random()>>
<<case "Ugandan">>
	<<set $activeSlave.birthName to $ugandanSlaveNames.random()>>
<<case "Ethiopian">>
	<<set $activeSlave.birthName to $ethiopianSlaveNames.random()>>
<<case "Moroccan">>
	<<set $activeSlave.birthName to $moroccanSlaveNames.random()>>
<<case "Chinese">>
	<<set $activeSlave.birthName to $chineseSlaveNames.random()>>
<<case "Korean">>
	<<set $activeSlave.birthName to $koreanSlaveNames.random()>>
<<case "Thai">>
	<<set $activeSlave.birthName to $thaiSlaveNames.random()>>
<<case "Vietnamese">>
	<<set $activeSlave.birthName to $vietnameseSlaveNames.random()>>
<<case "Japanese">>
	<<set $activeSlave.birthName to $japaneseSlaveNames.random()>>
<<case "Indonesian">>
	<<set $activeSlave.birthName to $indonesianSlaveNames.random()>>
<<case "Filipina">>
	<<set $activeSlave.birthName to $filipinaSlaveNames.random()>>
<<case "Bangladeshi">>
	<<set $activeSlave.birthName to $bangladeshiSlaveNames.random()>>
<<case "Malaysian">>
	<<set $activeSlave.birthName to $malaysianSlaveNames.random()>>
<<case "Uzbek">>
	<<set $activeSlave.birthName to $uzbekSlaveNames.random()>>
<<case "Afghan">>
	<<set $activeSlave.birthName to $afghanSlaveNames.random()>>
<<case "Nepalese">>
	<<set $activeSlave.birthName to $nepaleseSlaveNames.random()>>
<<case "Burmese">>
	<<set $activeSlave.birthName to $burmeseSlaveNames.random()>>
<<case "Iraqi">>
	<<set $activeSlave.birthName to $iraqiSlaveNames.random()>>
<<case "Yemeni">>
	<<set $activeSlave.birthName to $yemeniSlaveNames.random()>>
<<case "Sudanese">>
	<<set $activeSlave.birthName to $sudaneseSlaveNames.random()>>
<<case "Algerian">>
	<<set $activeSlave.birthName to $algerianSlaveNames.random()>>
<<case "Tunisian">>
	<<set $activeSlave.birthName to $tunisianSlaveNames.random()>>
<<case "Libyan">>
	<<set $activeSlave.birthName to $libyanSlaveNames.random()>>
<<case "Omani">>
	<<set $activeSlave.birthName to $omaniSlaveNames.random()>>
<<case "Malian">>
	<<set $activeSlave.birthName to $malianSlaveNames.random()>>
<<case "Jordanian">>
	<<set $activeSlave.birthName to $jordanianSlaveNames.random()>>
<<case "Lebanese">>
	<<set $activeSlave.birthName to $lebaneseSlaveNames.random()>>
<<case "Emirati">>
	<<set $activeSlave.birthName to $emiratiSlaveNames.random()>>
<<case "Kazakh">>
	<<set $activeSlave.birthName to $kazakhSlaveNames.random()>>
<<case "Pakistani">>
	<<set $activeSlave.birthName to $pakistaniSlaveNames.random()>>
<<case "Indian">>
	<<set $activeSlave.birthName to $indianSlaveNames.random()>>
<<case "Australian">>
	<<set $activeSlave.birthName to $australianSlaveNames.random()>>
<<case "a New Zealander">>
	<<set $activeSlave.birthName to $newZealanderSlaveNames.random()>>
<<default>>
	<<set $activeSlave.birthName to $whiteAmericanSlaveNames.random()>>
<</switch>>

<</widget>>

<<widget "NationalityToAccent">>

<<set $seed to either(0,1,1,2,2,2,3,3,3,3)>>

<<if ($activeSlave.nationality is "American")>>
	<<if $activeSlave.race is "black">>
	<<if $language is "English">>
		<<set $activeSlave.accent to 0>>
	<<else>>
		<<set $activeSlave.accent to either(0,1,1,2,2,2,3,3,3,3)>>
	<</if>>
	<<elseif $activeSlave.race is "latina">>
	<<if $language is "English">>
		<<set $activeSlave.accent to 0>>
	<<elseif $language is "Spanish">>
		<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
		<<set $activeSlave.accent to $seed>>
	<</if>>
	<<elseif $activeSlave.race is "asian">>
	<<if $language is "English">>
		<<set $activeSlave.accent to 0>>
	<<elseif $language is "Chinese">>
		<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
		<<set $activeSlave.accent to $seed>>
	<</if>>
	<<elseif $activeSlave.race is "middle eastern">>
	<<if $language is "English">>
		<<set $activeSlave.accent to 0>>
	<<elseif $language is "Arabic">>
		<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
		<<set $activeSlave.accent to $seed>>
	<</if>>
	<<else>>
	<<if $language is "English">>
		<<set $activeSlave.accent to 0>>
	<<else>>
		<<set $activeSlave.accent to $seed>>
	<</if>>
	<</if>>
<<elseif ($activeSlave.nationality is "Canadian")>>
	<<if $language is "English">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Mexican")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Dominican")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Puerto Rican")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Haitian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Jamaican")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Cuban")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Guatemalan")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Chilean")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Peruvian")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Bolivian")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Venezuelan")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Russian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Ukrainian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Italian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Spanish")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "British")>>
	<<if $language is "English">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Scottish")>>
	<<if $language is "English">>
	<<set $activeSlave.accent to 2>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "French")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "German")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Lithuanian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Belarusian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "French")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "German")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Lithuanian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Norwegian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Slovak")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Danish")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Dutch")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Austrian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Swiss")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Serbian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Belgian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Czech")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Portuguese")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Swedish")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Romanian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Hungarian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Estonian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Irish")>>
	<<if $language is "English">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Icelandic")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Finnish")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Greek")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Polish")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Brazilian")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Egyptian")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Colombian")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Argentinian")>>
	<<if $language is "Spanish">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Turkish")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Iranian")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Armenian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Israeli")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Saudi")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "South African")>>
	<<if $language is "English">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Nigerian")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Congolese")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Kenyan")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Tanzanian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Zimbabwean")>>
	<<if $language is "English" && $activeSlave.race == "white">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Ghanan")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Ugandan")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Ethiopian")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Moroccan")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Chinese")>>
	<<if $language is "Chinese">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Korean")>>
	<<if $language is "Chinese">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Thai")>>
	<<if $language is "Chinese">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Vietnamese")>>
	<<if $language is "Chinese">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Japanese")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Indonesian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Filipina")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Bangladeshi")>>
	<<if $language is "Indian">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Malaysian")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Uzbek")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Afghan")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Nepalese")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Burmese")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Iraqi")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Yemeni")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Sudanese")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Algerian")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Tunisian")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Libyan")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Omani")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Malian")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Jordanian")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Lebanese")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Emirati")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Kazakh")>>
	<<set $activeSlave.accent to $seed>>
<<elseif ($activeSlave.nationality is "Pakistani")>>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to either(0,1,2,3)>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Indian")>>
	<<if $language is "Indian">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "Australian")>>
	<<if $language is "English">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif ($activeSlave.nationality is "a New Zealander")>>
	<<if $language is "English">>
	<<set $activeSlave.accent to 1>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif $activeSlave.nationality is "Roman Revivalist">>
	<<if $language is "Latin">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif $activeSlave.nationality is "Ancient Egyptian Revivalist">>
	<<if $language is "Ancient Egyptian">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif $activeSlave.nationality is "Edo Revivalist">>
	<<if $language is "Japanese">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif $activeSlave.nationality is "Arabian Revivalist">>
	<<if $language is "Arabic">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<elseif $activeSlave.nationality is "Ancient Chinese Revivalist">>
	<<if $language is "Chinese">>
	<<set $activeSlave.accent to 0>>
	<<else>>
	<<set $activeSlave.accent to $seed>>
	<</if>>
<<else>>
	<<set $activeSlave.accent to $seed>>
<</if>>

<<if $activeSlave.nationality is $language>>
	<<set $activeSlave.accent to 0>>
<</if>>

<</widget>>

path: devNotes/Slave Generation Widgets.txt


code:
########################################################################################################################
#
# sugarcube-2.py
#
# Copyright (c) 2013-2017 Thomas Michael Edwards <tmedwards@motoslave.net>. All rights reserved.
# Use of this source code is governed by a Simplified BSD License which can be found in the LICENSE file.
#
########################################################################################################################

import os, os.path, header
from collections import OrderedDict

class Header (header.Header):

	def filesToEmbed(self):
		userLibPath = self.path + os.sep + 'userlib.js'
		if os.path.isfile(userLibPath):
			return OrderedDict([
				('"USER_LIB"', userLibPath)
			])
		else:
			return OrderedDict()

	def storySettings(self):
		return "SugarCube 2.x does not support the StorySettings special passage.\n\nInstead, you should use its configuration object, config.\n    See: http://www.motoslave.net/sugarcube/2/docs/config-object.html"

	def isEndTag(self, name, tag):
		return (name == ('/' + tag) or name == ('end' + tag))

	def nestedMacros(self):
		return [
				# standard macros
				'append',
				'button',
				'capture',
				'createplaylist',
				'for',
				'if',
				'link',
				'linkappend',
				'linkprepend',
				'linkreplace',
				'nobr',
				'prepend',
				'repeat',
				'replace',
				'script',
				'switch',
				'silently',
				'timed',
				'widget',
				# deprecated macros
				'click'
			]

	def passageTitleColor(self, passage):
		additionalSpecialPassages = [
				'PassageDone',
				'PassageFooter',
				'PassageHeader',
				'PassageReady',
				'StoryBanner',
				'StoryCaption',
				'StoryShare'
			]
		if passage.isStylesheet():
			return ((111, 49, 83), (234, 123, 184))
		elif passage.isScript():
			return ((89, 66, 28), (226, 170, 80))
		elif ('widget' in passage.tags):
			return ((80, 106, 26), (134, 178, 44))
		elif passage.isInfoPassage() or (passage.title in additionalSpecialPassages):
			return ((28, 89, 74), (41, 214, 113))
		elif passage.title == 'Start':
			return ('#4ca333', '#4bdb24')

	def passageChecks(self):
		return super(Header, self).passageChecks()


code:
How to mod (basic doc):

1. All sources now in the src subdir, in separate files. 1 passage = 1 file.

2. Special files and dir's:
    - src/config 		- configuration of the story is here.
    - src/config/start.tw 	- contains list of .tw passage files, regenerated automatic, by building scripts. Do not change by hands. (origial passage Start from pregmod renamed and moved to src/events/intro/introSummary.tw)
    - src/js/storyJS.tw		- special passage with [script] tag - contain all native JavaScript from pregmod.
    - devTools/tweeGo/targets/sugarcube-2/userlib.js - on original FC JS moved here (I deleted it after moving JS to storyJS.tw). Compare to storyJS.tw but do not copy file here. May conflict with src/js/storyJS.tw if copied.
    - src/pregmod 		- I put all pregmod-only passages here.
    - .gitignore 		- special file for git - to ignore some files. For example - compilation results.

3. Compilation:

    Windows:
    Run compile.bat - result will be file bin/FC_pregmod.html
    Second run of compile.but will overwrite bin/FC_pregmod.html without prompt.

    Linux:
    Ensure executable permission on file "devTools/tweeGo/tweego" (not tweego.exe!)
    Ensure executable permission on file "compile"
    In the root dir of sources (where you see src, devTools, bin...) run command "./compile" from console
    compile-git will produce the same result file but with current commit hash in filename.

    Mac:
    Don't supported directly (I don't have access to Mac for testing).
    But potentially can be used linux compilation script if you download tweego for mac from here: https://bitbucket.org/tmedwards/tweego/downloads/ and replace linux executable with mac executable in ./devTools/tweeGo/ folder. This is not tested though.

4. Simple comparing and merging with original FC:

    Use meld tool. Place folder FreeCities (original FC sources tree) near FreeCitiesPregmod (this sources tree) and use command:
    meld FreeCities FreeCitiesPregmod
    or just select these folders in meld's GUI.

5. All modders will be wery grateful if any, who make some changes to game, with .html file also post his/her resulting src folder tree.

6. For contributors to pregmod: if you don't use git, then you need to post yours version of src folder tree, not just produced FC_pregmod.html file!!! This html file can't be reverted to proper sources, and useless as contribution!

7. Git workflow:
    - Master branch is pregmod-master. Only Pregmodder can add something to it directly. Always contain his last public changes.
    - pregmod-dev - branch with experimental code mainly by pregmodfan.
    - Any contributions will be placed in separate branches like pregmod-mod-<something> (if it's ready to merge with master complete feature/mod) or pregmod-contrib-<something> if it's partial work until contributions is reviewed.

    Typical cycle with git:
	1. Make account on gitgud if you don't have usable one.
	2. Fork main repository through gitgud interface. (Or pull changes from main repo if you already have fork.)
	3. Clone your fork to local machine witn git client  (Or pull changes if already cloned.)
	4. Make you changes as you like, commit, and push result into your forked repository (with git client).
	5. Make merge request through gitgud interface.


code:
:: MOD_Edit Arcology Cheat [nobr]

<<set $nextButton = "Continue", $nextLink = "MOD_Edit Arcology Cheat Datatype Cleanup">>
<<set $PC.actualAge = Math.clamp($PC.actualAge, 14, 80)>>

''Cheating Edit Arcology''

<<if ($economy != 1) || ($seeDicks != 25) || ($continent != "North America") || ($internationalTrade != 1) || ($internationalVariety != 1) || ($seeRace != 1) || ($seeNationality != 1) || ($seeExtreme != 0) || ($plot != 1)>>
	//[[restore defaults|MOD_Edit Arcology Cheat][$seeDicks = 25,$economy = 1,$continent = "North America",$internationalTrade = 1,$internationalVariety = 1,$seeRace = 1,$seeNationality = 1,$seeExtreme = 0,$plot = 1]]//
<</if>>

The world economy is
<<if $economy == 1>>
	in ''doubtful'' shape.
	[[Easier|MOD_Edit Arcology Cheat][$economy = 0.5]] | [[Harder|MOD_Edit Arcology Cheat][$economy = 1.5]]
<<elseif $economy < 1>>
	still in ''good'' shape.
	[[Harder|MOD_Edit Arcology Cheat][$economy = 1]]
<<else>>
	in ''terrible'' shape.
	[[Easier|MOD_Edit Arcology Cheat][$economy = 1]]
<</if>>

<<set $drugsCost = Math.trunc(100*$economy)>>
<<set $rulesCost = Math.trunc(100*$economy)>>
<<set $modCost = Math.trunc(50*$economy)>>
<<set $surgeryCost = Math.trunc(300*$economy)>>

The arcology is located in ''$continent''.
[[North America|MOD_Edit Arcology Cheat][$continent = "North America", $language = "English"]] | [[South America|MOD_Edit Arcology Cheat][$continent = "South America", $language = "Spanish"]] | [[Europe|MOD_Edit Arcology Cheat][$continent = "Europe", $language = "English"]] | [[the Middle East|MOD_Edit Arcology Cheat][$continent = "the Middle East", $language = "Arabic"]] | [[Africa|MOD_Edit Arcology Cheat][$continent = "Africa", $language = "Arabic"]] | [[Asia|MOD_Edit Arcology Cheat][$continent = "Asia", $language = "Chinese"]] | [[Australia|MOD_Edit Arcology Cheat][$continent = "Australia", $language = "English"]] | [[Japan|MOD_Edit Arcology Cheat][$continent = "Japan", $language = "Japanese"]]

The lingua franca of the arcology is ''$language''.
<<if $language != "English">>
	[[English|MOD_Edit Arcology Cheat][$language = "English"]] |
<<else>>
	English |
<</if>>
<<if $language != "Spanish">>
	[[Spanish|MOD_Edit Arcology Cheat][$language = "Spanish"]] |
<<else>>
	Spanish |
<</if>>
<<if $language != "Arabic">>
	[[Arabic|MOD_Edit Arcology Cheat][$language = "Arabic"]] |
<<else>>
	Arabic |
<</if>>
<<if $language != "Chinese">>
	[[Chinese|MOD_Edit Arcology Cheat][$language = "Chinese"]] |
<<else>>
	Chinese |
<</if>>
Custom: <<textbox "$language" $language "MOD_Edit Arcology Cheat">>

The slave trade is
<<if $internationalTrade == 0>>
	''continental,'' so a narrower variety of slaves will be available.
	[[Allow intercontinental trade|MOD_Edit Arcology Cheat][$internationalTrade = 1]]
<<else>>
	''international,'' so a wider variety of slaves will be available.
	[[Restrict the trade to continental|MOD_Edit Arcology Cheat][$internationalTrade = 0]]
<</if>>

<<if $internationalTrade == 1>>
International slave variety is
<<if $internationalVariety == 0>>
	''semi-realistic,'' so more populous nations will be more common.
	[[Normalized national variety|MOD_Edit Arcology Cheat][$internationalVariety = 1]]
<<else>>
	''normalized,'' so small nations will appear nearly as much as large ones.
	[[Semi-realistic national variety|MOD_Edit Arcology Cheat][$internationalVariety = 0]]
<</if>>
<</if>>

Ethnicity will
<<if $seeRace == 1>>
	''occasionally'' be mentioned.
	[[Disable most mentions of race|MOD_Edit Arcology Cheat][$seeRace = 0]]
<<else>>
	''almost never'' be mentioned.
	[[Enable mentions of race|MOD_Edit Arcology Cheat][$seeRace = 1]]
<</if>>

Nationality will
<<if $seeNationality == 1>>
	''occasionally'' be mentioned.
	[[Disable most mentions of nationality|MOD_Edit Arcology Cheat][$seeNationality = 0]]
<<else>>
	''almost never'' be mentioned.
	[[Enable mentions of nationality|MOD_Edit Arcology Cheat][$seeNationality = 1]]
<</if>>
be mentioned.

Extreme content like amputation is
<<if $seeExtreme == 1>>
	''enabled''.
	[[Disable|MOD_Edit Arcology Cheat][$seeExtreme = 0]]
<<else>>
	''disabled''.
	[[Enable|MOD_Edit Arcology Cheat][$seeExtreme = 1]]
<</if>>

Slave assets affected by weight is
<<if ($weightAffectsAssets != 0)>>
	''enabled''. [[Disable|MOD_Edit Arcology Cheat][$weightAffectsAssets = 0]]
<<else>>
	''disabled''. [[Enable|MOD_Edit Arcology Cheat][$weightAffectsAssets = 1]]
<</if>>
//If enabled, thin slaves will have large assets drop in size and vice versa at week end. (Diet still affects asset sizes).//

Curative side effects are
<<if ($curativeSideEffects != 0)>>
	''enabled''. [[Disable|MOD_Edit Arcology Cheat][$curativeSideEffects = 0]]
<<else>>
	''disabled''. [[Enable|MOD_Edit Arcology Cheat][$curativeSideEffects = 1]]
<</if>>
//If enabled, curatives have a chance to give slaves harmful side effects.//

Slave girls will
<<if $seeDicks >= 90>>
	''almost always'' have dicks.
	[[No chicks with dicks pls (0%)|MOD_Edit Arcology Cheat][$seeDicks = 0]]
	 | [[Side order of girl dick (25%)|MOD_Edit Arcology Cheat][$seeDicks = 25]]
	 | [[Balanced dick chick diet (50%)|MOD_Edit Arcology Cheat][$seeDicks = 50]]
	 | [[Dickgirl main course (75%)|MOD_Edit Arcology Cheat][$seeDicks = 75]]
<<elseif $seeDicks > 50>>
	''more likely than not'' have dicks.
	[[No chicks with dicks pls (0%)|MOD_Edit Arcology Cheat][$seeDicks = 0]]
	 | [[Side order of girl dick (25%)|MOD_Edit Arcology Cheat][$seeDicks = 25]]
	 | [[Balanced dick chick diet (50%)|MOD_Edit Arcology Cheat][$seeDicks = 50]]
	 | [[All of the dicks (100%)|MOD_Edit Arcology Cheat][$seeDicks = 100]]
<<elseif $seeDicks > 25>>
	''occasionally'' have dicks.
	[[No chicks with dicks pls (0%)|MOD_Edit Arcology Cheat][$seeDicks = 0]]
	 | [[Side order of girl dick (25%)|MOD_Edit Arcology Cheat][$seeDicks = 25]]
	 | [[Dickgirl main course (75%)|MOD_Edit Arcology Cheat][$seeDicks = 75]]
	 | [[All of the dicks (100%)|MOD_Edit Arcology Cheat][$seeDicks = 100]]
<<elseif $seeDicks > 0>>
	''rarely'' have dicks.
	[[No chicks with dicks pls (0%)|MOD_Edit Arcology Cheat][$seeDicks = 0]]
	 | [[Balanced dick chick diet (50%)|MOD_Edit Arcology Cheat][$seeDicks = 50]]
	 | [[Dickgirl main course (75%)|MOD_Edit Arcology Cheat][$seeDicks = 75]]
	 | [[All of the dicks (100%)|MOD_Edit Arcology Cheat][$seeDicks = 100]]
<<else>>
	''almost never'' have dicks.
	 [[Side order of girl dick (25%)|MOD_Edit Arcology Cheat][$seeDicks = 25]]
	 | [[Balanced dick chick diet (50%)|MOD_Edit Arcology Cheat][$seeDicks = 50]]
	 | [[Dickgirl main course (75%)|MOD_Edit Arcology Cheat][$seeDicks = 75]]
	 | [[All of the dicks (100%)|MOD_Edit Arcology Cheat][$seeDicks = 100]]
<</if>>

<<link "Go your own dick way">>
	<<textbox "$seeDicks" $seeDicks>>
	[[Apply|MOD_Edit Arcology Cheat][$seeDicks = Number($seeDicks) || 25]]
<</link>>

Game mode:
<<if $plot == 1>>
	''two-handed''. Includes non-erotic events concerning the changing world.
	[[Disable non-erotic events|MOD_Edit Arcology Cheat][$plot = 0]]
<<else>>
	''one-handed''. No non-erotic events concerning the changing world.
	[[Enable non-erotic events|MOD_Edit Arcology Cheat][$plot = 1]]
<</if>>

/*<<nobr>>
<<if $normalizedEvents == 1>>
	Random events distribution: ''normalized''. Random events will happen with equal frequency.
	[[Realistic|MOD_Edit Arcology Cheat][$normalizedEvents = 0]]
<<else>>
	Random events distribution: ''realistic''. Events will happen more frequently if more slaves qualify for them.
	[[Normalize|MOD_Edit Arcology Cheat][$normalizedEvents = 1]]
<</if>>
<</nobr>>*/

__Player Character__

Conversational title:
<<if $PC.title > 0>>
	''Master''.
	[[Switch to Mistress|MOD_Edit Arcology Cheat][$PC.title = 0]]
<<else>>
	''Mistress''.
	[[Switch to Master|MOD_Edit Arcology Cheat][$PC.title = 1]]
<</if>>

Career: ''$PC.career''.
	[[Wealth|MOD_Edit Arcology Cheat][$PC.career = "wealth"]] |
	[[Business|MOD_Edit Arcology Cheat][$PC.career = "capitalist"]] |
	[[PMC work|MOD_Edit Arcology Cheat][$PC.career = "mercenary"]] |
	[[Slaving|MOD_Edit Arcology Cheat][$PC.career = "slaver"]] |
	[[Engineering|MOD_Edit Arcology Cheat][$PC.career = "engineer"]] |
	[[Medicine|MOD_Edit Arcology Cheat][$PC.career = "medicine"]] |
	[[Celebrity|MOD_Edit Arcology Cheat][$PC.career = "celebrity"]]

Method of acquiring the arcology: ''$PC.rumor''.
	[[Wealth|MOD_Edit Arcology Cheat][$PC.rumor = "wealth"]] |
	[[Hard work|MOD_Edit Arcology Cheat][$PC.rumor = "diligence"]] |
	[[Force|MOD_Edit Arcology Cheat][$PC.rumor = "force"]] |
	[[Social engineering|MOD_Edit Arcology Cheat][$PC.rumor = "social engineering"]] |
	[[Luck|MOD_Edit Arcology Cheat][$PC.rumor = "luck"]]

Genitalia:
<<if $PC.dick > 0>>
	''penis''. Standard sex scenes; easier reputation maintenance.
	[[Switch to vagina|MOD_Edit Arcology Cheat][$PC.dick = 0]]
<<else>>
	''vagina''. Sex scene variations; more difficult reputation maintenance.
	[[Switch to penis|MOD_Edit Arcology Cheat][$PC.dick = 1]]
<</if>>

Chest:
<<if $PC.boobs > 0>>
	''breasts''. Sex scene variations; more difficult reputation maintenance.
	[[Remove breasts|MOD_Edit Arcology Cheat][$PC.boobs = 0]]
<<else>>
	''masculine''. Standard sex scenes; easier reputation maintenance.
	[[Add breasts|MOD_Edit Arcology Cheat][$PC.boobs = 1]]
<</if>>

Age:
<<if $PC.actualAge >= 65>>
	''old''.
<<elseif $PC.actualAge >= 50>>
	''well into middle age''.
<<elseif $PC.actualAge >= 35>>
	''entering middle age''.
<<else>>
	''surprisingly young''.
<</if>>
<<textbox "$PC.actualAge" $PC.actualAge "MOD_Edit Arcology Cheat">>
<<set $PC.physicalAge = $PC.actualAge, $PC.visualAge = $PC.actualAge>>

<<if $playerAging == 2>>
	You will ''age naturally.''
	[[Disable aging|MOD_Edit Arcology Cheat][$playerAging = 0]] |
	[[Semi aging|MOD_Edit Arcology Cheat][$playerAging = 1]]
<<elseif $playerAging == 1>>
	You ''will'' celebrate birthdays, but ''not age.''
	[[Enable aging fully|MOD_Edit Arcology Cheat][$playerAging = 2]] |
	[[Disable aging|MOD_Edit Arcology Cheat][$playerAging = 0]]
<<else>>
	You will ''not age,'' and not experience birthdays.
	[[Enable aging|MOD_Edit Arcology Cheat][$playerAging = 2]] |
	[[Semi aging|MOD_Edit Arcology Cheat][$playerAging = 1]]
<</if>>
//This option cannot be changed during the game//

Rename your character: <<textbox "$PCName" $PCName "MOD_Edit Arcology Cheat">>

Nationality: ''$PC.nationality''.<<textbox "$PC.nationality" $PC.nationality "MOD_Edit Arcology Cheat">>

Race: ''$PC.race''.
	[[White|MOD_Edit Arcology Cheat][$PC.race = "white"]] |
	[[Asian|MOD_Edit Arcology Cheat][$PC.race = "asian"]] |
	[[Latina|MOD_Edit Arcology Cheat][$PC.race = "latina"]] |
	[[Middle Eastern|MOD_Edit Arcology Cheat][$PC.race = "middle eastern"]] |
	[[Black|MOD_Edit Arcology Cheat][$PC.race = "black"]] |
	[[Semitic|MOD_Edit Arcology Cheat][$PC.race = "semitic"]] |
	[[Southern European|MOD_Edit Arcology Cheat][$PC.race = "southern european"]] |
	[[Indo-aryan|MOD_Edit Arcology Cheat][$PC.race = "indo-aryan"]] |
	[[Amerindian|MOD_Edit Arcology Cheat][$PC.race = "amerindien"]] |
	[[Pacific Islander|MOD_Edit Arcology Cheat][$PC.race = "pacific islander"]] |
	[[Malay|MOD_Edit Arcology Cheat][$PC.race = "malay"]] |
	[[Mixed Race|MOD_Edit Arcology Cheat][$PC.race = "mixed race"]]

Skin: ''$PC.skin''.
	[[White|MOD_Edit Arcology Cheat][$PC.skin = "white"]] |
	[[Fair|MOD_Edit Arcology Cheat][$PC.skin = "fair"]] |
	[[Light|MOD_Edit Arcology Cheat][$PC.skin = "light"]] |
	[[Dark|MOD_Edit Arcology Cheat][$PC.skin = "dark"]] |
	[[Olive|MOD_Edit Arcology Cheat][$PC.skin = "olive"]] |
	[[Black|MOD_Edit Arcology Cheat][$PC.skin = "black"]] |
	[[Light Brown|MOD_Edit Arcology Cheat][$PC.skin = "light brown"]] |
	[[Brown|MOD_Edit Arcology Cheat][$PC.skin = "brown"]] |
	[[Pale|MOD_Edit Arcology Cheat][$PC.skin = "pale"]] |
	[[Extremely Pale|MOD_Edit Arcology Cheat][$PC.skin = "extremely pale"]]

Eye color: ''$PC.eyeColor''.
<<textbox "$PC.eyeColor" $PC.eyeColor "MOD_Edit Arcology Cheat">>

Hair color: ''$PC.hColor''.
<<textbox "$PC.hColor" $PC.hColor "MOD_Edit Arcology Cheat">>

Preferred refreshment: <<textbox "$PC.refreshment" $PC.refreshment "MOD_Edit Arcology Cheat">> [[Cigars|MOD_Edit Arcology Cheat][$PC.refreshment = "cigar",$PC.refreshmentType = 0]] | [[Whiskey|MOD_Edit Arcology Cheat][$PC.refreshment = "whiskey",$PC.refreshmentType = 1]]

Preferred method of consumption: <<if $PC.refreshmentType == 0>>Smoked<<elseif $PC.refreshmentType == 1>>Drank<<elseif $PC.refreshmentType == 2>>Eaten<<elseif $PC.refreshmentType == 3>>Snorted<<else>>Injected<</if>>

[[Smoked|MOD_Edit Arcology Cheat][$PC.refreshmentType = 0]] | [[Drank|MOD_Edit Arcology Cheat][$PC.refreshmentType = 1]] | [[Eaten|MOD_Edit Arcology Cheat][$PC.refreshmentType = 2]] | [[Snorted|MOD_Edit Arcology Cheat][$PC.refreshmentType = 3]] | [[Injected|MOD_Edit Arcology Cheat][$PC.refreshmentType = 4]]

Arcology citizens: $ACitizens
<<textbox "$ACitizens" $ACitizens>>

Arcology sex slaves: $ASlaves
<<textbox "$ASlaves" $ASlaves>>

Arcology menial slaves:  $AHelots
<<textbox "$AHelots" $AHelots>>

Arcology prosperity cap: $AProsperityCap
<<textbox "$AProsperityCap" $AProsperityCap>>

Shelter Abuse Counter: $shelterAbuse
<<textbox "$shelterAbuse" $shelterAbuse>>

''The Slavegirl School:''

TSS Students Bought: <<textbox "$TSS.studentsBought" $TSS.studentsBought>>

TSS Upgrades: ''$TSS.schoolUpgrade'' |
<<radiobutton "$TSS.schoolUpgrade" 0>> 0
| <<radiobutton "$TSS.schoolUpgrade" 1>> 1
| <<radiobutton "$TSS.schoolUpgrade" 2>> 2

TSS Moved to Arcology: ''$TSS.schoolPresent'' |
<<radiobutton "$TSS.schoolPresent" 0>> 0
| <<radiobutton "$TSS.schoolPresent" 1>> 1 (Moved)

TSS Prosperity: <<textbox "$TSS.schoolProsperity" $TSS.schoolProsperity>>

TSS Failed: ''$TSS.schoolAnnexed'' |
<<radiobutton "$TSS.schoolAnnexed" 0>> 0
| <<radiobutton "$TSS.schoolAnnexed" 1>> 1 (Failed)

''The Growth Research Institute:''

GRI Students Bought: <<textbox "$GRI.studentsBought" $GRI.studentsBought>>

GRI Upgrades: ''$GRI.schoolUpgrade'' |
<<radiobutton "$GRI.schoolUpgrade" 0>> 0
| <<radiobutton "$GRI.schoolUpgrade" 1>> 1
| <<radiobutton "$GRI.schoolUpgrade" 2>> 2

GRI Moved to Arcology: ''$GRI.schoolPresent'' |
<<radiobutton "$GRI.schoolPresent" 0>> 0
| <<radiobutton "$GRI.schoolPresent" 1>> 1 (Moved)

GRI Prosperity: <<textbox "$GRI.schoolProsperity" $GRI.schoolProsperity>>

GRI Failed: ''$GRI.schoolAnnexed'' |
<<radiobutton "$GRI.schoolAnnexed" 0>> 0
| <<radiobutton "$GRI.schoolAnnexed" 1>> 1 (Failed)

''St. Claver Preparatory:''

SCP Students Bought: <<textbox "$SCP.studentsBought" $SCP.studentsBought>>

SCP Upgrades: ''$SCP.schoolUpgrade'' |
<<radiobutton "$SCP.schoolUpgrade" 0>> 0
| <<radiobutton "$SCP.schoolUpgrade" 1>> 1
| <<radiobutton "$SCP.schoolUpgrade" 2>> 2

SCP Moved to Arcology: ''$SCP.schoolPresent'' |
<<radiobutton "$SCP.schoolPresent" 0>> 0
| <<radiobutton "$SCP.schoolPresent" 1>> 1 (Moved)

SCP Prosperity: <<textbox "$SCP.schoolProsperity" $SCP.schoolProsperity>>

SCP Failed: ''$SCP.schoolAnnexed'' |
<<radiobutton "$SCP.schoolAnnexed" 0>> 0
| <<radiobutton "$SCP.schoolAnnexed" 1>> 1 (Failed)

<<if ($seeDicks != 0)>>

''L'Ecole des Enculees:''

LDE Students Bought: <<textbox "$LDE.studentsBought" $LDE.studentsBought>>

LDE Upgrades: ''$LDE.schoolUpgrade'' |
<<radiobutton "$LDE.schoolUpgrade" 0>> 0
| <<radiobutton "$LDE.schoolUpgrade" 1>> 1
| <<radiobutton "$LDE.schoolUpgrade" 2>> 2

LDE Moved to Arcology: ''$LDE.schoolPresent'' |
<<radiobutton "$LDE.schoolPresent" 0>> 0
| <<radiobutton "$LDE.schoolPresent" 1>> 1 (Moved)

LDE Prosperity: <<textbox "$LDE.schoolProsperity" $LDE.schoolProsperity>>

LDE Failed: ''$LDE.schoolAnnexed'' |
<<radiobutton "$LDE.schoolAnnexed" 0>> 0
| <<radiobutton "$LDE.schoolAnnexed" 1>> 1 (Failed)

''The Gymnasium-Academy:''

TGA Students Bought: <<textbox "$TGA.studentsBought" $TGA.studentsBought>>

TGA Upgrades: ''$TGA.schoolUpgrade''
<<radiobutton "$TGA.schoolUpgrade" 0>> 0
| <<radiobutton "$TGA.schoolUpgrade" 1>> 1
| <<radiobutton "$TGA.schoolUpgrade" 2>> 2

TGA Moved to Arcology: ''$TGA.schoolPresent'' |
<<radiobutton "$TGA.schoolPresent" 0>> 0
| <<radiobutton "$TGA.schoolPresent" 1>> 1 (Moved)

TGA Prosperity: <<textbox "$TGA.schoolProsperity" $TGA.schoolProsperity>>

TGA Failed: ''$TGA.schoolAnnexed'' |
<<radiobutton "$TGA.schoolAnnexed" 0>> 0
| <<radiobutton "$TGA.schoolAnnexed" 1>> 1 (Failed)

''The Futanari Sisters:''

TFS Students Bought: <<textbox "$TFS.studentsBought" $TFS.studentsBought>>

TFS Upgrades: ''$TFS.schoolUpgrade'' |
<<radiobutton "$TFS.schoolUpgrade" 0>> 0
| <<radiobutton "$TFS.schoolUpgrade" 1>> 1
| <<radiobutton "$TFS.schoolUpgrade" 2>> 2

TFS Moved to Arcology: ''$TFS.schoolPresent'' |
<<radiobutton "$TFS.schoolPresent" 0>> 0
| <<radiobutton "$TFS.schoolPresent" 1>> 1 (Moved)

TFS Prosperity:<<textbox "$TFS.schoolProsperity" $TFS.schoolProsperity>>

TFS Failed: ''$TFS.schoolAnnexed'' |
<<radiobutton "$TFS.schoolAnnexed" 0>> 0
| <<radiobutton "$TFS.schoolAnnexed" 1>> 1 (Failed)
<</if>>

__Arcologies:__

    __''$arcologies[0].name''__ is your arcology.

You own: ''$arcologies[0].ownership%'' of the arcology <<textbox "$arcologies[0].ownership" $arcologies[0].ownership>>

Other minority ownership: ''$arcologies[0].minority%'' <<textbox "$arcologies[0].minority" $arcologies[0].minority>>

$arcologies[0].name's GSP is @@.yellowgreen;¤<<print Math.trunc(0.1*$arcologies[0].prosperity)>>m@@.

<<if $arcologies.length > 1>>
	<<set _neighbors = $arcologies.length-1>>

Your arcology has _neighbors
	<<if _neighbors == 1>>neighbor<<else>>neighbors<</if>>.
<<else>>
	Your arcology has no neighbors.
<</if>>

<<if $arcologies.length < 8>>
<<link "Add neighbor">>
	<<set $seed = ["north", "northeast", "east", "southeast", "south", "southwest", "west", "northwest"]>>
	<<set $activeArcology = {name: "Arcology X-", direction: "north", government: "an individual", honeymoon: 0, prosperity: 50, ownership: 50, minority: 20, PCminority: 0, demandFactor:0, FSSupremacist: "unset", FSSupremacistRace: 0, FSSubjugationist: "unset", FSSubjugationistRace: 0, FSGenderRadicalist: "unset", FSGenderFundamentalist: "unset", FSPaternalist: "unset", FSDegradationist: "unset", FSBodyPurist: "unset", FSTransformationFetishist: "unset", FSYouthPreferentialist: "unset", FSMaturityPreferentialist: "unset", FSSlimnessEnthusiast: "unset", FSAssetExpansionist: "unset", FSPastoralist: "unset", FSPhysicalIdealist: "unset", FSChattelReligionist: "unset", FSRomanRevivalist: "unset", FSEgyptianRevivalist: "unset", FSEdoRevivalist: "unset", FSArabianRevivalist: "unset", FSChineseRevivalist: "unset", FSNull: "unset", embargo: 1, embargoTarget: -1, influenceTarget: -1, influenceBonus: 0, rival: 0}>>

	<<if $arcologies.length < 4>>
		<<set $activeArcology.name += $arcologies.length>>
	<<else>>
		<<set $activeArcology.name += ($arcologies.length+1)>>
	<</if>>

	<<set $activeArcology.direction = $seed.pluck()>>
	<<set $activeArcology.government = random(0,5)>>
	<<set $activeArcology.prosperity += random(-20,20)>>
	<<set $activeArcology.ownership += random(-10,0)>>
	<<set $activeArcology.minority += random(-5,5)>>
	<<set $arcologies.push($activeArcology)>>

	<<goto "MOD_Edit Arcology Cheat">>
<</link>>
<</if>>

<<set $averageProsperity = 0, _seed = 0>>
<<for $i = 0; $i < $arcologies.length; $i++>>
	<<set $averageProsperity += $arcologies[$i].prosperity, _seed++>>
<</for>>
<<set $averageProsperity = $averageProsperity/_seed>>

<<for $i = 0; $i < $arcologies.length; $i++>>
	<<if $arcologies[$i].direction != 0>>
	<<include "Neighbor Description">>
	<</if>>

	<<if $i != 0>>
	<<print "[[Remove neighbor|MOD_Edit Arcology Cheat][$arcologies.pluck( [" + $i + "], [" + $i + "] )]]">>
	<</if>>
<</for>>


code:
:: MOD_Edit Arcology Cheat Datatype Cleanup [nobr]

<<set $nextButton = "Continue", $nextLink = "Manage Arcology">>

<<set $ACitizens = Number($ACitizens) || 0>>
<<set $ASlaves = Number($ASlaves) || 0>>
<<set $AHelots = Number($AHelots) || 0>>
<<set $shelterAbuse = Number($shelterAbuse) || 0>>

<<set $TSS.studentsBought = Number($TSS.studentsBought) || 0>>
<<set $TSS.schoolProsperity = Number($TSS.schoolProsperity) || 0>>

<<set $GRI.studentsBought = Number($GRI.studentsBought) || 0>>
<<set $GRI.schoolProsperity = Number($GRI.schoolProsperity) || 0>>

<<set $SCP.studentsBought = Number($SCP.studentsBought) || 0>>
<<set $SCP.schoolProsperity = Number($SCP.schoolProsperity) || 0>>

<<set $LDE.studentsBought = Number($LDE.studentsBought) || 0>>
<<set $LDE.schoolProsperity = Number($LDE.schoolProsperity) || 0>>

<<set $TGA.studentsBought = Number($TGA.studentsBought) || 0>>
<<set $TGA.schoolProsperity = Number($TGA.schoolProsperity) || 0>>

<<set $TFS.studentsBought = Number($TFS.studentsBought) || 0>>
<<set $TFS.schoolProsperity = Number($TFS.schoolProsperity) || 0>>

<<set $arcologies[0].ownership = Number($arcologies[0].ownership) || 0>>
<<set $arcologies[0].minority = Number($arcologies[0].minority) || 0>>

<<set $PC.actualAge = Number($PC.actualAge) || 35>>
<<set $PC.physicalAge = $PC.actualAge, $PC.visualAge = $PC.actualAge>>

The chanting grows louder and louder, CHEAT! CHEAT! CHEAT!

The Arcology morphs and changes shape, CHEAT! CHEAT! CHEAT!

The Arcology has been changed forever and you forfeit your CHEATING CHEATY SOUL!