鹿白运维 - 无畏者的分享平台
主页 » 网站源码 » 正文

【魔改】人生重开模拟器

/ in 网站源码

前言
  不知道为啥,一款开源的文字类web游戏——《人生重开模拟器》突然爆火,好奇玩了一会儿,发现这游戏其实和抽奖差不多,容易激发人的赌徒心理。倍感无聊,决定修改一下,给游戏添加个外挂天赋,毕竟重生总得带点什么逆天功能才合理的嘛。

  游戏代码不是很复杂,来来回回几个js文件,如果你要修改面板属性之类的其他东西,也是如此。这里以添加一个“不灭金身”天赋为例。

配置数据

天赋 talent.json

"1135": { //与id一致
    "id": 1135, //根据原有数据情况进行修改,不要和原有数据id相同
    "name": "不灭金身",  //天赋名
    "description": "体质小于1时体质+10且死亡后会复活",  //天赋说明
    "condition": "STR<1",  //触发天赋的条件
    "grade": 3,  //稀有度,越高越稀有
    "effect": {
        "STR": 10  //体质+10
    }
}

剧情 event.json
修改:

"10000": {
    "id": 10000,
    "event": "你死了。",
    "effect": {
        "LIF": -1
    },
    "NoRandom": 1
},

如下:

"10000": {
    "id": 10000,
    "event": "你死了。",
    "effect": {
        "LIF": -1
    },
    "NoRandom": 1,
    "branch": [
        "TLT?[1135]:40062" // TLT?[不灭金身天赋id]:对应的剧情id
    ]
},

添加:

"40062": { //与id一致
    "id": 40062,  //根据原有数据情况进行修改,不要和原有数据id相同
    "event": "你是神选之子,拥有不灭金身,原地复活,又开始了新的人生。",  //剧情说明
    "effect": {
        "LIF": 1  //生命+1
    },
    "branch": [
        "AGE>499:40050" //目前的游戏设定最高500岁(不修仙99岁),大于499时必须死,看情况修改
    ],
    "NoRandom": 1 //非随机事件
}

修改代码life.js
添加方法:

talentCheat(){
    return this.#talent.talentCheat();
}

talent.js
添加方法:

talentCheat(){
    return this.#talents;
}

app.js
添加一个按钮:

<button id="cheat" class="sponsor" style="margin:30px">神选之子</button>

如下:

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>
`);

跳过随机天赋列表:

if(talent.id==1135){ //配置的天赋id
    return true; //如果天赋列表中随机到【不灭金身】天赋则跳过本次循环
}

如下:

 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);

            //其余代码略……
            

修改方法:

const createTalent = ({ grade, name, description }) => {
    return $(`<li class="grade${grade}b">${name}(${description})</li>`)
};

如下:

const createTalent = ({ id, grade, name, description }) => {
    return $(`<li id="tId_${id}" class="grade${grade}b">${name}(${description})</li>`)
};

添加方法:

talentPage
    .find('#cheat')
    .click(()=>{
        talentPage.find('#cheat').hide();
        const talent = this.#life.talentCheat()[1135];  //配置的不灭金身天赋id
        const talent2 = this.#life.talentCheat()[1048]; 
        const ul = talentPage.find('#talents');
        ul.children()[0].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('开始新人生')
                }
            }
        });
    })
    

选择天赋时显示按钮:

talentPage.find('#cheat').show();

如下:


//以上代码略……
            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();

选择天赋前隐藏按钮:

talentPage.find('#cheat').hide();

如下:

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;
    },
},

价格: 5.00 元
VIP会员免费终身会员免费
温馨提示:登录付款后可永久阅读隐藏内容。 付费可读
猜你喜欢
评论 (0)
隐私评论
搜索