# AssetsTD
一个基于资产持仓的无限塔防游戏。
An infinite tower defense game based on asset holdings.
[直接来玩](https://atd.getjoy.net)
### UI
首页:可以创建本地ID,也可以连接钱包,那么钱包地址就是你的ID。
管理:
* 数据只保存于浏览器的 IndexedDB
* 资产的数量和价格随意填,不需要验证。
* 你的ID计算blake2b转换成32 bytes作为你的DNA,像素小人就是基于DNA生成的。ref: [Pixel Hero]( Pixel Studio - GenAI Game Assets )
游戏:
* 全程自动化。
* 想参与,只能控制Hero/像素小人(前提是你在管理页面设置了BTC持仓)。
### 概念
1. 你的财库就是基地。财库的生命力掉到0,游戏失败;否则无限塔防
2. 杀掉怪物掉落1个GD(Gold Dust)
### 怪物
每种怪物类型都有一个传送门,但是传送门出来的怪物是随机的。
1. 类型:
* 法币 (Fiat):
\* 生命力为1-9;
\* 速度100;
\* 特点:随机游走;
\* 形象:绿色的美元纸币。
* 通货膨胀 (Inflation):
\* 生命力为10-70
\* 速度100;
\* 特点:生命值每秒增加5%;
\* 形象:政府
* 消费 (Consumption):
\* 生命力为60;
\* 速度120;
\* 特定:生命力每秒降低1点;
\* 形象:购物车🛒
* 虚荣心 (Vanity):
\* 生命力为1-123;
\* 速度80;
\* 特点:闪闪发光;
\* 形象:❤️
* 傲慢 (Arrogance):
\* 生命力为690;
\* 速度50;
\* 特点:形体每秒钟增大1%;
\* 形象:钻石王冠或帝王
* 贪婪 (Greed):
\* 生命力为420;
\* 速度50;
\* 特点:可以吞噬附近50范围内的所有怪物的生命力,被吞噬的怪物直接死亡;
\* 形象:金色的钱袋💰
* 恐慌 (Panic):
\* 生命力为1-100;
\* 速度80;
\* 特点:影响范围100,对所有塔和英雄增加3秒钟的 debuff:攻击速度降低10%;
\* 形象:红色的人脸
* 骇客 (Hacker):
\* 生命力为1-9;
\* 速度200;
\* 特点:行动路径不是直线,而是螺旋曲线;
\* 形象:绿色代码
* RugPull:
\* 生命力为1-100;
\* 速度100;
\* 特点:被击杀时有10%概率在出生点传送门重生;
\* 形象:悬浮的波斯地毯。
2. 怪物基础:攻击力为1~10的随机值,生命力为1-100的随机值,初始移动速度100,攻击速度1。
\* 怪物对财库的攻击,引入概率机制:
\* 80% 的概率,怪物对财库造成 enemy.damage \* this.currentLeverage 伤害,此时不触发屏幕抖动;
\* 20%的概率,怪物对财库造成 enemy.hp \* this.currentLeverage 自爆伤害,触发屏幕抖动,怪物死亡。
3. 怪物无法升级,但是每存活1秒,攻击力、生命力和移动速度都增加1%。
4. 游戏开始,3秒刷新一个怪物,1分钟后2秒刷新一个怪物,2分钟后每秒刷新一个怪物
### Coins 防御塔
1. 一个币种就是一个防御塔
2. 假设某个币的价格p,持仓量 h
3. 把coin tower的逻辑独立出来,并给塔增加如下属性:
* 攻击力:attack = [(7 - p的小数位数) × K₂] + [p末位数字 × K₃] * 杠杆倍数
\* 如果触发暴击:攻击力再乘以1.5,并弹出气泡“to the moon”
* 攻击范围:range = 100 + [log₁₀(持仓量h) × 50] + [p的小数位数 × 15] + [√持仓量/1000]
* 攻击速度:aps = max( 0.2, 1.5 - [p小数位数 × 0.15] + [log₁₀(持仓量h) × 0.05] )
* 暴击几率:crit = min( [p的小数位数 × 2.5] + [K₄ / 持仓量h的前两位数字] , 50 ) (百分比)
* 系数:K₁=3, K₂=5, K₃=1, K₄=10
### 特殊防御塔
* 健康塔(Health Tower):功能:每秒钟恢复1点财库当前的HP,但不能超过Max HP
* 修行塔:外观:冥想的人。功能:每秒钟对全地图上所有怪物伤害1
* 家庭塔(Home Tower):外观:家。功能:每隔10秒,可以对一个随机coin tower加速3秒钟,攻击速度提高10%
* 赞助商塔(Sponsor Tower):外观:赞助商的logo,暂定BTC的logo。功能:每10秒钟增加1点财库的Max HP
### 英雄Hero
仅仅基于BTC的持仓生成英雄角色。
* 生命值:hp = 基础值100+ [log₁₀(价格 + 1) × 50] + [log₁₀(持仓量 + 1) × 150] - [小数位数 × 10]
* 攻击力:attack = [BTC价格 ÷ 1000] + [log₁₀(BTC持仓量) × 5] + [小数位数 × 2]
* 攻击范围:range = 100 + [BTC价格 ÷ 10000] + [BTC持仓量 × 100]
* 攻击速度:aps = 2.0 - [BTC价格 ÷ 50000] + [log₁₀(BTC持仓量) × 0.2]
* 暴击几率:crit = min( [BTC价格小数位数 × 5] + [持仓量末两位数字 ÷ 2] , 40 ) (百分比)
* hero出生地默认在USD/USDT/USDC一类的稳定币塔旁边
* hero 死亡后,倒计时30秒复活;等级保留。
* 形象:像素小人
* 攻击的可视化:比特币Logo的光球
* 控制:键盘上下左右移动;自动攻击
* 花费10GD可以升级生命值/攻击力/攻击范围/攻击速度 的某一项,升级增加1%相关属性。
### 其它
1. 杠杆 slider
* 取值范围从1~100,表示 杠杆交易 (Leverage Risk) :x 倍数,高收益高风险。
* 效果:塔的攻击力和怪物对堡垒的伤害都乘以 x
* 游戏画布的杠杆效果:
* 杠杆小于20,正常显示
* 杠杆 [20, 60),游戏画布的周围闪烁橙色光芒(警告)
* 杠杆 [60, 100],游戏画布的周围闪烁红色光芒(严重警告)