[魔改]人生重开模拟器
# 前言  不知道为啥,一款开源的文字类web游戏——《人生重开模拟器》突然爆火,好奇玩了一会儿,发现这游戏其实和抽奖差不多,容易激发人的赌徒心理。倍感无聊,决定修改一下,给游戏添加个外挂天赋,毕竟重生总得带点什么逆天功能才合理的嘛。
  游戏代码不是很复杂,来来回回几个js文件,如果你要修改面板属性之类的其他东西,也是如此。这里以添加一个“不灭金身”天赋为例。
  游戏官方源码:https://github.com/VickScarlet/lifeRestart
# 配置数据
## 天赋 talent.json
添加:
```json
"1135": { //与id一致
"id": 1135, //根据原有数据情况进行修改,不要和原有数据id相同
"name": "不灭金身",//天赋名
"description": "体质小于1时体质+10且死亡后会复活",//天赋说明
"condition": "STR<1",//触发天赋的条件
"grade": 3,//稀有度,越高越稀有
"effect": {
"STR": 10//体质+10
}
}
```
## 剧情 event.json
修改:
```json
"10000": {
"id": 10000,
"event": "你死了。",
"effect": {
"LIF": -1
},
"NoRandom": 1
},
```
如下:
```json
"10000": {
"id": 10000,
"event": "你死了。",
"effect": {
"LIF": -1
},
"NoRandom": 1,
"branch": [
"TLT?:40062" // TLT?[不灭金身天赋id]:对应的剧情id
]
},
```
添加:
```json
"40062": { //与id一致
"id": 40062,//根据原有数据情况进行修改,不要和原有数据id相同
"event": "你是神选之子,拥有不灭金身,原地复活,又开始了新的人生。",//剧情说明
"effect": {
"LIF": 1//生命+1
},
"branch": [
"AGE>499:40050" //目前的游戏设定最高500岁(不修仙99岁),大于499时必须死,看情况修改
],
"NoRandom": 1 //非随机事件
}
```
# 修改代码
## life.js
添加方法:
```javascript
talentCheat(){
return this.#talent.talentCheat();
}
```
## talent.js
添加方法:
```javascript
talentCheat(){
return this.#talents;
}
```
## app.js
添加一个按钮:
```html
<button id="cheat" class="sponsor" style="margin:30px">神选之子</button>
```
如下:
```javascript
const talentPage = $(`
<div id="main">
<div class="head" style="font-size: 1.6rem">天赋抽卡</div>
<button id="random" class="mainbtn" style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);"">10连抽!</button>
<ul id="talents" class="selectlist"></ul>
<button id="next" class="mainbtn">请选择3个</button>
<button id="cheat" class="sponsor" style="margin:30px">神选之子</button>
</div>
`);
```
跳过随机天赋列表:
```javascript
if(talent.id==1135){ //配置的天赋id
return true; //如果天赋列表中随机到【不灭金身】天赋则跳过本次循环
}
```
如下:
```javascript
talentPage
.find('#random')
.click(()=>{
talentPage.find('#random').hide();
const ul = talentPage.find('#talents');
this.#life.talentRandom()
.forEach(talent=>{
if(talent.id==1135){ //配置的不灭金身天赋id
return true; //如果天赋列表中随机到【不灭金身】天赋则跳过本次循环
}
const li = createTalent(talent);
ul.append(li);
//其余代码略……
```
修改方法:
```javascript
const createTalent = ({ grade, name, description }) => {
return $(`<li class="grade${grade}b">${name}(${description})</li>`)
};
```
如下:
```javascript
const createTalent = ({ id, grade, name, description }) => {
return $(`<li id="tId_${id}" class="grade${grade}b">${name}(${description})</li>`)
};
```
添加方法:
```javascript
talentPage
.find('#cheat')
.click(()=>{
talentPage.find('#cheat').hide();
const talent = this.#life.talentCheat();//配置的不灭金身天赋id
const talent2 = this.#life.talentCheat();
const ul = talentPage.find('#talents');
ul.children().remove();
ul.find('#tId_1048').remove();
const li = createTalent(talent);
ul.append(li);
li.click(()=>{
if(li.hasClass('selected')) {
li.removeClass('selected')
this.#talentSelected.delete(talent);
this.#talentSelected.delete(talent2);
if(this.#talentSelected.size<3) {
talentPage.find('#next').text('请选择3个')
}
} else {
if(this.#talentSelected.size==3) {
this.hint('只能选3个天赋');
return;
}
this.hint(`选择【不灭金身】的同时会附带【神秘的小盒子】,占用两个天赋位`);
const exclusive = this.#life.exclusive(
Array.from(this.#talentSelected).map(({id})=>id),
talent.id
);
if(exclusive != null) {
for(const { name, id } of this.#talentSelected) {
if(id == exclusive) {
this.hint(`与已选择的天赋【${name}】冲突`);
return;
}
}
return;
}
li.addClass('selected');
this.#talentSelected.add(talent);
this.#talentSelected.add(talent2);
if(this.#talentSelected.size==3) {
talentPage.find('#next').text('开始新人生')
}
}
});
})
```
选择天赋时显示按钮:
```javascript
talentPage.find('#cheat').show();
```
如下:
```javascript
//以上代码略……
if (exclusive != null) {
for (const { name, id } of this.#talentSelected) {
if (id == exclusive) {
this.hint(`与已选择的天赋【${name}】冲突`);
return;
}
}
return;
}
li.addClass('selected');
this.#talentSelected.add(talent);
if (this.#talentSelected.size == 3) {
talentPage.find('#next').text('开始新人生')
}
}
});
});
talentPage.find('#next').show();
talentPage.find('#cheat').show();
```
选择天赋前隐藏按钮:
```javascript
talentPage.find('#cheat').hide();
```
如下:
```javascript
talent: {
page: talentPage,
talentList: talentPage.find('#talents'),
btnRandom: talentPage.find('#random'),
btnNext: talentPage.find('#next'),
pressEnter: () => {
const talentList = this.#pages.talent.talentList;
const btnRandom = this.#pages.talent.btnRandom;
const btnNext = this.#pages.talent.btnNext;
if (talentList.children().length) {
btnNext.click();
} else {
btnRandom.click();
}
},
clear: () => {
this.#currentPage = 'talent';
talentPage.find('ul.selectlist').empty();
talentPage.find('#random').show();
talentPage.find('#cheat').hide();
this.#totalMax = 20;
},
},
```
# 效果预览
GitHub:https://github.com/VickScarlet/lifeRestart
原版:http://liferestart.syaro.io/view/
超级人生版:http://restart.typekuon.com/lifeRestart/view/
我是人上人版:https://service-anw3da5k-1251676728.gz.apigw.tencentcs.com/release/view/index.html 太厉害了,不明觉厉 已部署至服务器 完了一下 ok zhaomingzhi 发表于 2021-9-12 15:17
GitHub:https://github.com/VickScarlet/lifeRestart
原版:http://liferestart.syaro.io/view/
你这个代码有吗 人上人就是那么草率,要么富贵要么早夭!!! 好玩,分享了 楼主。怎么修改某个天赋的抽中概率呀,我想把某些天赋概率提高,谢谢楼主 18031371463 发表于 2021-9-12 17:04
楼主。怎么修改某个天赋的抽中概率呀,我想把某些天赋概率提高,谢谢楼主
最简单的方式就是修改 grade 属性,看帖子 [天赋 talent.json] 节点,修改天赋对应的 grade数值越低出现概率越高 今天刚看到这个就有人分享了