Merge remote-tracking branch 'origin/main'
# Conflicts: # world.html
@@ -270,6 +270,9 @@ class YtWorldApi(http.Controller):
|
||||
('pasture', 'upgrade'): {'cost': {'gold': 40}, 'msg': '牧场升级申请已提交'},
|
||||
('blackmarket', 'trade'): {'cost': {'gold': 25}, 'gain': {'rare': 1}, 'msg': '黑市交易(风险):稀有物资 +1'},
|
||||
('blackmarket', 'upgrade'):{'cost': {'gold': 80}, 'msg': '黑市升级申请已提交'},
|
||||
('school', 'study'): {'gain': {'research': 3}, 'msg': '研读获得科研 +3'},
|
||||
('school', 'lecture'): {'cost': {'gold': 10}, 'gain': {'prestige': 2}, 'msg': '讲学获得声望 +2'},
|
||||
('school', 'upgrade'): {'cost': {'gold': 50}, 'msg': '学堂升级申请已提交'},
|
||||
# —— 设施(平面)——
|
||||
('farmland', 'harvest'): {'gain': {'food': 5}, 'msg': '收获粮食 +5'},
|
||||
('farmland', 'sow'): {'cost': {'gold': 5}, 'gain': {'food': 2}, 'msg': '播种:预期粮+2'},
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
<field name="stat_yield" eval="{'heal': 2}"/>
|
||||
</record>
|
||||
<record id="bi_restaurant" model="yt.world.build.item">
|
||||
<field name="code">restaurant</field><field name="name">饭馆</field>
|
||||
<field name="code">restaurant</field><field name="name">酒馆</field>
|
||||
<field name="category">build</field><field name="icon">assets/buildings/spring/restaurant/restaurant_r.png</field>
|
||||
<field name="footprint_w">3</field><field name="footprint_h">3</field><field name="sequence">270</field>
|
||||
<field name="desc">烹制料理,为居民提供饱食与心情加成。</field>
|
||||
@@ -112,7 +112,7 @@
|
||||
<field name="stat_yield" eval="{'meat': 2, 'milk': 1}"/>
|
||||
</record>
|
||||
<record id="bi_blackmarket" model="yt.world.build.item">
|
||||
<field name="code">blackmarket</field><field name="name">黑市</field>
|
||||
<field name="code">blackmarket</field><field name="name">商城</field>
|
||||
<field name="category">build</field><field name="icon">assets/buildings/spring/blackmarket/blackmarket_r.png</field>
|
||||
<field name="footprint_w">3</field><field name="footprint_h">3</field><field name="sequence">290</field>
|
||||
<field name="desc">灰色交易点,可换取稀有物资但伴随风险。</field>
|
||||
@@ -166,10 +166,19 @@
|
||||
<field name="stat_level">1</field><field name="stat_hp">90</field>
|
||||
<field name="stat_yield" eval="{'water': 2}"/>
|
||||
</record>
|
||||
<record id="bi_school" model="yt.world.build.item">
|
||||
<field name="code">school</field><field name="name">学堂</field>
|
||||
<field name="category">build</field><field name="icon">assets/buildings/spring/school/school_l.png</field>
|
||||
<field name="footprint_w">3</field><field name="footprint_h">3</field><field name="sequence">380</field>
|
||||
<field name="flat">0</field>
|
||||
<field name="desc">授业解惑之所,研读典籍提升领地科研与基础教学产出。</field>
|
||||
<field name="stat_level">1</field><field name="stat_hp">100</field>
|
||||
<field name="stat_yield" eval="{'research': 3, 'prestige': 1}"/>
|
||||
</record>
|
||||
<record id="bi_library" model="yt.world.build.item">
|
||||
<field name="code">library</field><field name="name">图书馆</field>
|
||||
<field name="category">build</field><field name="icon">assets/buildings/spring/library/library_l.png</field>
|
||||
<field name="footprint_w">2</field><field name="footprint_h">2</field><field name="sequence">360</field>
|
||||
<field name="footprint_w">3</field><field name="footprint_h">3</field><field name="sequence">360</field>
|
||||
<field name="flat">0</field>
|
||||
<field name="desc">收藏典籍与卷轴,提升领地科研与知识产出。</field>
|
||||
<field name="stat_level">1</field><field name="stat_hp">110</field>
|
||||
@@ -178,19 +187,10 @@
|
||||
<record id="bi_barracks" model="yt.world.build.item">
|
||||
<field name="code">barracks</field><field name="name">兵营</field>
|
||||
<field name="category">build</field><field name="icon">assets/buildings/spring/barracks/barracks_l.png</field>
|
||||
<field name="footprint_w">2</field><field name="footprint_h">2</field><field name="sequence">370</field>
|
||||
<field name="footprint_w">3</field><field name="footprint_h">3</field><field name="sequence">370</field>
|
||||
<field name="flat">0</field>
|
||||
<field name="desc">训练士兵与储备武备的军事建筑,提升领地军事产出。</field>
|
||||
<field name="stat_level">1</field><field name="stat_hp">130</field>
|
||||
<field name="stat_yield" eval="{'military': 4}"/>
|
||||
</record>
|
||||
<record id="bi_school" model="yt.world.build.item">
|
||||
<field name="code">school</field><field name="name">学堂</field>
|
||||
<field name="category">build</field><field name="icon">assets/buildings/spring/school/school_l.png</field>
|
||||
<field name="footprint_w">2</field><field name="footprint_h">2</field><field name="sequence">380</field>
|
||||
<field name="flat">0</field>
|
||||
<field name="desc">讲学习字之所,培养人才并提升领地科研积累。</field>
|
||||
<field name="stat_level">1</field><field name="stat_hp">100</field>
|
||||
<field name="stat_yield" eval="{'research': 3}"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
|
Before Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 124 KiB |
|
After Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 228 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 204 KiB |
@@ -1750,14 +1750,16 @@ const MICRO_BUILD_EXTRA = [
|
||||
{ id: 'grocery', cat: 'build', icon: 'assets/buildings/spring/grocery/grocery_l.png', name: '杂货铺', desc: '交易日用物资的小型商铺,促进经济流通。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 90, statYield: { coin: 2 } },
|
||||
{ id: 'temple', cat: 'build', icon: 'assets/buildings/spring/temple/temple_l.png', name: '神庙', desc: '供奉信仰的场所,提升居民精神状态与领地声望。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 160, statYield: { prestige: 3 } },
|
||||
{ id: 'clinic', cat: 'build', icon: 'assets/buildings/spring/clinic/clinic_l.png', name: '医务室', desc: '诊治伤病,恢复居民生命值。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 100, statYield: { heal: 2 } },
|
||||
{ id: 'restaurant', cat: 'build', icon: 'assets/buildings/spring/restaurant/restaurant_l.png',name: '饭馆', desc: '烹制料理,为居民提供饱食与心情加成。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 95, statYield: { satiety: 3 } },
|
||||
{ id: 'restaurant', cat: 'build', icon: 'assets/buildings/spring/restaurant/restaurant_l.png',name: '酒馆', desc: '烹制料理,为居民提供饱食与心情加成。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 95, statYield: { satiety: 3 } },
|
||||
{ id: 'pasture', cat: 'business', icon: 'assets/buildings/spring/pasture/pasture_l.png', name: '牧场', desc: '放养牲畜,稳定产出肉奶类资源。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 105, statYield: { meat: 2, milk: 1 } },
|
||||
{ id: 'blackmarket', cat: 'build', icon: 'assets/buildings/spring/blackmarket/blackmarket_l.png',name:'黑市', desc: '灰色交易点,可换取稀有物资但伴随风险。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 80, statYield: { rare: 1 } },
|
||||
{ id: 'blackmarket', cat: 'build', icon: 'assets/buildings/spring/blackmarket/blackmarket_l.png',name:'商城', desc: '灰色交易点,可换取稀有物资但伴随风险。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 80, statYield: { rare: 1 } },
|
||||
{ id: 'farmland', cat: 'business', icon: 'assets/buildings/spring/farmland/farmland.png', name: '农田', desc: '春季播种的耕地,定期产出粮食作物。', flat: true, w: 2, h: 2, statLevel: 1, statHp: 60, statYield: { food: 3 } },
|
||||
{ id: 'well', cat: 'build', icon: 'assets/buildings/default/props/well_l.png', name: '水井', desc: '汲取地下水的圆井,保障饮水与灌溉。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 90, statYield: { water: 2 } },
|
||||
{ id: 'school', cat: 'build', icon: 'assets/buildings/spring/school/school_l.png', name: '学堂', desc: '授业解惑之所,研读典籍提升领地科研与基础教学产出。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 100, statYield: { research: 3, prestige: 1 } },
|
||||
{ id: 'library', cat: 'build', icon: 'assets/buildings/spring/library/library_l.png', name: '图书馆', desc: '收藏典籍与卷轴,提升领地科研与知识产出。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 110, statYield: { research: 4 } },
|
||||
{ id: 'barracks', cat: 'build', icon: 'assets/buildings/spring/barracks/barracks_l.png', name: '兵营', desc: '训练士兵与储备武备的军事建筑,提升领地军事产出。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 130, statYield: { military: 4 } },
|
||||
{ id: 'school', cat: 'build', icon: 'assets/buildings/spring/school/school_l.png', name: '学堂', desc: '讲学习字之所,培养人才并提升领地科研积累。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 100, statYield: { research: 3 } },
|
||||
{ id: 'guild', cat: 'build', icon: 'assets/buildings/spring/guild/guild_l.png', name: '公会', desc: '冒险者与住民集结之所,可发布委托与招募成员。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 140, statYield: { prestige: 2, coin: 1 } },
|
||||
{ id: 'village', cat: 'build', icon: 'assets/buildings/spring/village/village_l.png', name: '村庄', desc: '族群聚落的核心,提升人口上限与基础产出。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 150, statYield: { population: 6, food: 1 } }
|
||||
];
|
||||
|
||||
// 建筑交互配置(数据驱动,与后端 BUILD_EFFECTS 的 (code,action) 对应)。
|
||||
@@ -1829,6 +1831,11 @@ const BUILD_INTERACT = {
|
||||
{ action: 'stall', label: '摆摊', icon: '🏪', desc: '摆摊获得金币' },
|
||||
{ action: 'upgrade', label: '升级', icon: '⬆️', desc: '升级集市' },
|
||||
] },
|
||||
school: { title: '学堂', tagline: '授业与研读', actions: [
|
||||
{ action: 'study', label: '研读', icon: '📖', desc: '研读典籍,获取科研点' },
|
||||
{ action: 'lecture', label: '讲学', icon: '🎓', desc: '讲授知识,提升领地声望' },
|
||||
{ action: 'upgrade', label: '升级', icon: '⬆️', desc: '升级学堂' },
|
||||
] },
|
||||
library: { title: '图书馆', tagline: '典籍与知识', actions: [
|
||||
{ action: 'study', label: '研读', icon: '📖', desc: '研读典籍,获取科研点' },
|
||||
{ action: 'archive', label: '整理卷轴', icon: '🗂', desc: '整理卷轴,提升知识产出' },
|
||||
@@ -1839,11 +1846,16 @@ const BUILD_INTERACT = {
|
||||
{ action: 'drill', label: '操练', icon: '⚔️', desc: '操练部队,提升军事产出' },
|
||||
{ action: 'upgrade', label: '升级', icon: '⬆️', desc: '升级兵营' },
|
||||
] },
|
||||
school: { title: '学堂', tagline: '讲学与习字', actions: [
|
||||
{ action: 'lecture', label: '讲学', icon: '📚', desc: '开设讲习,提升科研积累' },
|
||||
{ action: 'study', label: '习字', icon: '✍️', desc: '习字读书,培养人才' },
|
||||
{ action: 'upgrade', label: '升级', icon: '⬆️', desc: '升级学堂' },
|
||||
guild: { title: '公会', tagline: '委托与集结', actions: [
|
||||
{ action: 'quest', label: '发布委托', icon: '📜', desc: '发布冒险委托,获取声望与物资' },
|
||||
{ action: 'recruit', label: '招募成员', icon: '🧑🤝🧑', desc: '招募冒险者,提升公会影响力' },
|
||||
{ action: 'upgrade', label: '升级', icon: '⬆️', desc: '升级公会大厅' },
|
||||
] },
|
||||
village: { title: '村庄', tagline: '聚落与民生', actions: [
|
||||
{ action: 'settle', label: '定居', icon: '🏠', desc: '吸引流民定居,增加人口' },
|
||||
{ action: 'collect', label: '收缴税赋', icon: '🪙', desc: '收取粮食与金币' },
|
||||
{ action: 'upgrade', label: '升级', icon: '⬆️', desc: '扩建村庄' },
|
||||
] }
|
||||
};
|
||||
|
||||
// 装备目录:每个槽位的候选装备(图标 + 简短加成,仅作展示/穿戴)。
|
||||
@@ -5151,8 +5163,8 @@ function drawMicroGrid(c, w, h, accent) {
|
||||
for (let j = lo + 1; j <= hi; j++) { p = microCellToScreen(i, j); c.lineTo(p.x, p.y); }
|
||||
}
|
||||
c.lineCap = 'round'; c.lineJoin = 'round'; c.globalAlpha = 1;
|
||||
c.lineWidth = 1.0; c.strokeStyle = 'rgba(8,14,26,0.18)'; c.stroke();
|
||||
// 浅色高光描边已移除,避免草地网格出现浅色纹路
|
||||
c.lineWidth = 2.4; c.strokeStyle = 'rgba(90,120,50,0.28)'; c.stroke();
|
||||
// 线条改浅:与草地同色调、低不透明、稍细,避免深色网格压过地表
|
||||
c.restore();
|
||||
|
||||
// 矩形外边框(不裁切,完整描出覆盖面积)
|
||||
|
||||