class MissionOne(object): def __init__(self, p, m): """ :type p: Player """ self.menu = m self.player = p self.password = None self.passwordExit = None self.bookIndex = 0 # self.manager = GoodsManager() self.manager = self.player.goodmanager self.tutorialText = range(10) self.plotText = [[0] * 10] * 10 self.memoryText = [[0] * 10] * 10 self.kuraText = range(10) self.initTutorial() self.initPlot() self.initMemory() self.initKuraMessage() self.flowerNum = 2 def initTutorial(self): self.tutorialText[0] = "" self.tutorialText[1] = "被Erosion感染的人存在侵蚀度这个概念。侵蚀度越高你的身体机能也就越强,\n" \ "但是一定不要为了力量而盲目提升侵蚀度,因为你的侵蚀度达到100%之后意识" \ "就会立刻消亡,成为Erosion病毒的傀儡。" self.tutorialText[2] = "如果真的需要力量的话,可以发动技能入魔,通过提升侵蚀度的代价短暂提升\n" \ "自身的速度,同时随着侵蚀度上升可以做一些平时力量达不到的事情。但是一\n" \ "定给我不要滥用啊,不然的话就去死吧,笨蛋。系统提示:按下Space发动入魔。" self.tutorialText[3] = "你终于想起来一些事情了呢~这个房间中有好多能让你找回记忆的东西。找到\n" \ "那些东西,也是拯救我们的办法呢。系统提示:在侵蚀度高于50%时你会有破坏\n" \ "东西的冲动和焦虑感,可能会影响剧情的发展。" self.tutorialText[4] = "我们这种被Erosion寄生的人呢,在危险的时候会有一种直觉,这种直觉会让\n" \ "你在遭遇危险时听到自己的心跳声。说来,为什么我的心跳这么剧烈呢…" self.tutorialText[5] = "在遇到无法通过的障碍时,使用侵蚀之门可以在空间中制造通道从而进行穿梭。\n" \ "我先在这里制造一扇给你示范一下,看好了哦。系统提示:按下鼠标右键可以\n" \ "向前方发射侵蚀之门,如果场景中存在两个侵蚀之门即可互相穿梭。" self.menu.nextButton['command'] = self.hideTutorial self.menu.nextButton['extraArgs'] = [] def initPlot(self): self.plotText[0][0] = "终于醒了啊。估计你也想不起来过去的事情了,那我就重新介绍一下自己吧" self.plotText[0][1] = "我叫Kura。当时有一群人冲向我们,你给自己注射了Erosion,\n然后杀掉了那些人呢。" self.plotText[0][2] = "那些…人?Kura?不行,我还是想不起来……。" self.plotText[0][3] = "只有你知道治疗Erosion的办法,所以能从病毒中拯救我们的…也就只有你了。\n" \ "因为我被感染的时间比较长,所以只能保持清醒状态很短时间…务必要从这里逃\n" \ "出去然后找到解药,不然我们恐怕都要迷失在这里了…我会在这里等你的。" self.plotText[1] = "刚一踏出房间,房间的门就被重重的锁上了。无论我怎么叫喊,里面都没有回应。" \ "我尽可能不去想最糟糕的情况,大概kura不会有什么问题的吧。" def initMemory(self): pass ''' 编号2 记忆的回影 ''' self.memoryText[2][0] = "相册上这些实验体…似曾相识的感觉呢……" self.memoryText[2][1] = "这份研究结论我也见过……为什么呢……" self.memoryText[2][2] = "实验体被Erosion所侵蚀之后意识会逐渐被吞噬……\n" \ "Erosion结附在实验体上,夺去实验体的意识。" self.memoryText[2][3] = "而这些失去意识的实验体脸上挂着笑容,大概是本我还活在海市蜃楼中吧。" ''' 编号4 熟识的地点 ''' self.memoryText[4][0] = "什么?!这个地点…我曾经来过。" self.memoryText[4][1] = "这两个几乎完全相同的实验室…正是我曾经每天待着的地方……" self.memoryText[4][2] = "为什么我会……有这么强的即视感呢?" self.memoryText[4][3] = "那些大大的培养槽中的人,都还活着!他们本我的意识\n" \ "已经在幻境中沉沉睡去,大概是已经变成Erosion控制的傀儡……" self.memoryText[4][4] = "这个实验的实验者是谁?为什么要研究这些傀儡呢?" ''' 编号5 过去的残影 ''' self.memoryText[5][0] = "这个合影……我依稀记得这是我和女儿一起照的……感觉……记忆在涌上来" self.memoryText[5][1] = "她应该也在这个实验室中……在不久之前她被一些实验体咬伤了\n……不行," \ "我一定要活着出去,并且找到她……" self.memoryText[5][2] = "说起来kura,你长的真的很像我的女儿呢。可是你为什么会在这里呢?\n" self.memoryText[5][3] = "是吗?那你就把我当成你的女儿呗,爸爸。" self.memoryText[5][4] = "……" self.memoryText[5][5] = "当然是开玩笑的啦,嘻嘻。我也不知道我为什么在这里,我只知道我也\n" \ "被Erosion感染了。不管这些,你一定要逃出去哦,无论是为了为了你\n" \ "的女儿亦或是你自己,或者说……为了我?" self.memoryText[5][6] = "嗯,一定。" def initKuraMessage(self): self.kuraText[0] = "呜……真是的…干嘛突然用\n手电筒照我呀,好刺眼的……" self.kuraText[1] = "……呜…又来…恶作剧也要有\n个限度呀………人家也是会生气的哦…" self.kuraText[2] = "…不是说过了么…恶作剧什么的,要有个…限度呢。\n...\n去死吧你这可恶的人类!" self.kuraText[3] = "我记得那边有个八音盒哦。\n这个发条应该和那个八音盒有关" def interactiveWith(self, goods): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.goods = goods if goods.Name == "elevator_box": self.menu.selectDialog.show() if goods.state == "ready": self.menu.textLabel['text'] = "随着一声轻响,电梯缓缓地打开了。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "走进电梯" self.menu.bButton.hide() elif self.player.bag.haveItem("res/models/items/" + "hammer" + ".png") \ and goods.state == "cracked": self.menu.textLabel['text'] = "无论怎么按动按钮,电梯都没有反应。\n" \ "电梯门已经残破不堪了,似乎可以强行打开的样子。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你愤怒的抄起锤子砸向有一点裂缝的电梯门。\n" "电梯间的门被砸开了。然而里面却没有电梯,\n" "等待着你的是……", goods, "smashed", None, 'endC', None ] self.menu.aButton['text'] = "用锤子砸" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "暂时离开" elif self.player.bag.haveItem("res/models/items/" + "hammer" + ".png")\ and goods.state == "": self.menu.textLabel['text'] = "无论怎么按动按钮,电梯都没有反应。\n" \ "电梯门已经残破不堪了,似乎可以强行打开的样子。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你愤怒的抄起锤子砸向电梯门。\n门似乎被砸出了一点缝隙。", goods, "smashed", ["torch", "groupPhoto"], 3, -15 ] self.menu.aButton['text'] = "用锤子砸" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "暂时离开" else: self.menu.textLabel['text'] = "无论怎么按动按钮,电梯都没有反应。\n" \ "电梯门已经残破不堪了,似乎可以强行打开的样子。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "暂时离开" self.menu.bButton.hide() elif goods.Name == "distribution_box": self.menu.selectDialog.show() if goods.state == "opened": self.menu.textLabel['text'] = "这个配电盒已经被打开了。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif self.player.bag.haveItem("res/models/items/" + "goldenKey" + ".png") and \ self.player.bag.haveItem("res/models/items/" + "hammer" + ".png"): self.menu.textLabel['text'] = "配电盒被紧紧锁着,没有钥匙的话似乎打不开。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "配电盒的锁被打开了。你拉下了电闸,\n" "看到电梯的按钮亮了起来。", goods, "opened" ] self.menu.aButton['text'] = "用钥匙打开" self.menu.bButton['command'] = self.showInfo self.menu.bButton['extraArgs'] = [ "你砸开了配电盒,此时从配电盒里\n" "传来巨大电流,你被电成了焦炭。", goods, "", None, "endD", None ] self.menu.bButton['text'] = "用锤子砸" elif self.player.bag.haveItem("res/models/items/" + "hammer" + ".png"): self.menu.textLabel['text'] = "配电盒被紧紧锁着,没有钥匙的话似乎打不开。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你砸开了配电盒,此时从配电盒里\n" "传来巨大电流,你被电成了焦炭。", goods, "", None, "endD", None ] self.menu.aButton['text'] = "用锤子砸" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "暂时离开" elif self.player.bag.haveItem("res/models/items/" + "goldenKey" + ".png"): self.menu.textLabel['text'] = "配电盒被紧紧锁着,没有钥匙的话似乎打不开。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "配电盒的锁被打开了。你拉下了电闸,\n" "看到电梯的按钮亮了起来。", goods, "opened", None, "endD", None ] self.menu.aButton['text'] = "用钥匙打开" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "暂时离开" else: self.menu.textLabel['text'] = "配电盒被紧紧锁着,没有钥匙的话似乎打不开。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "暂时离开" self.menu.bButton.hide() elif goods.Name == "clock_box": self.menu.selectDialog.show() self.menu.textLabel['text'] = "这个钟显示的时间……有点奇怪呢。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "painting_1": self.menu.selectDialog.show() self.menu.textLabel['text'] = "《不要动我的蛋糕》" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "painting_2": self.menu.selectDialog.show() self.menu.textLabel['text'] = "《死兔》" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "painting_3": self.menu.selectDialog.show() self.menu.textLabel['text'] = "《破碎的镜》" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "painting_4": self.menu.selectDialog.show() self.menu.textLabel['text'] = "《沾血的房间》" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "painting_5": self.menu.selectDialog.show() self.menu.textLabel['text'] = "《数学题》" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "painting_6": self.menu.selectDialog.show() self.menu.textLabel['text'] = "《正与反的恒常》" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "painting_7": self.menu.selectDialog.show() self.menu.textLabel['text'] = "《夕阳》" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "painting_8": self.menu.selectDialog.show() self.menu.textLabel['text'] = "《花》" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "painting_9": self.menu.selectDialog.show() self.menu.textLabel['text'] = "《希望》" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "lobby_door": self.menu.selectDialog.show() if self.player.EROSION >= 50 and self.goods.state == "": self.menu.textLabel['text'] = "你的焦虑影响了你的思维。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你用力向前一拍,砸碎了大厅门。", goods, "unlockedOpen" ] self.menu.aButton['text'] = "我..." self.menu.bButton.hide() self.goods.OnClick() self.password = Password() self.password.passwordFrame.hide() self.password.unloadLeap() self.password.passState = True else: if self.goods.state == "unlockedOpen": self.menu.textLabel['text'] = "大厅门上现在没有上锁。" self.menu.aButton['command'] = self.openDoor self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "关闭大厅门" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" elif self.goods.state == "unlockedClose": self.menu.textLabel['text'] = "大厅门上现在没有上锁。" self.menu.aButton['command'] = self.openDoor self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "打开大厅门" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" else: self.menu.textLabel['text'] = "门上存在一个电子锁。" self.menu.aButton['command'] = self.openDoor self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "输入密码" self.menu.bButton['command'] = self.showInfo self.menu.bButton['extraArgs'] = [ "这个密码到底是什么呢……", goods, "" ] self.menu.bButton['text'] = "暂时离开" elif goods.Name == "laboratory_door": self.menu.selectDialog.show() if goods.state == "": self.menu.textLabel['text'] = "这个门似乎可以推开,但总感觉里面阴森森的,有种不祥的气息。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "里面有窸窸窣窣的声音,不知道是什么东西在里面,\n" "但是好像很可怕。", goods, "" ] self.menu.aButton['text'] = "趴在门上听" self.menu.bButton['command'] = self.showInfo self.menu.bButton['extraArgs'] = [ "你面前出现了...", goods, "", None, "endE", None ] self.menu.bButton['text'] = "推开门" self.menu.bButton.hide() elif goods.state == "deadRabbit": self.menu.textLabel['text'] = "这个门似乎可以推开。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "里面有窸窸窣窣的声音,但是声音距离你很远。", goods, "deadRabbit" ] self.menu.aButton['text'] = "趴在门上听" self.menu.bButton['command'] = self.showInfo self.menu.bButton['extraArgs'] = [ "门被打开了。", goods, "deadRabbit", None, "openLabDoor", None ] self.menu.bButton['text'] = "推开门" self.menu.bButton.hide() elif self.player.bag.haveItem("res/models/items/" + "deadRabbit" + ".png"): self.menu.textLabel['text'] = "这个门似乎可以推开,但总感觉里面阴森森的,有种不祥的气息。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你将死兔放在门口,之后躲在大厅门旁暗中观察。\n" "这时,一只血红色的手抓住了兔子,将其拉入了门内。\n" "不久,门内传来哀嚎声。", goods, "deadRabbit" ] self.menu.aButton['text'] = "投放死兔" self.menu.bButton['command'] = self.showInfo self.menu.bButton['extraArgs'] = [ "你面前出现了...", goods, "", None, "endE", None ] self.menu.bButton['text'] = "推开门" self.menu.bButton.hide() elif self.player.bag.haveItem("res/models/items/" + "rabbit" + ".png"): self.menu.textLabel['text'] = "这个门似乎可以推开,但总感觉里面阴森森的,有种不祥的气息。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你将实验兔放在门口,之后躲在大厅门旁暗中观察。\n" "这时,一只血红色的手抓住了兔子,将其拉入了门内。\n" "你似乎听到门内传来“我……还……要”", goods, "rabbit" ] self.menu.aButton['text'] = "投放实验兔" self.menu.bButton['command'] = self.showInfo self.menu.bButton['extraArgs'] = [ "你面前出现了...", goods, "", None, "endE", None ] self.menu.bButton['text'] = "推开门" self.menu.bButton.hide() elif self.player.bag.haveItem("res/models/items/" + "hammer" + ".png"): self.menu.textLabel['text'] = "这个门似乎可以推开,但总感觉里面阴森森的,有种不祥的气息。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你把门敲开了,看到了一群满身血迹的怪物。\n" "这时谁都救不了你了。", goods, "", None, "endE", None ] self.menu.aButton['text'] = "用锤子砸" self.menu.bButton['command'] = self.showInfo self.menu.bButton['extraArgs'] = [ "你面前出现了...", goods, "", None, "endE", None ] self.menu.bButton['text'] = "推开门" self.menu.bButton.hide() else: self.menu.textLabel['text'] = "这个门似乎可以推开,但总感觉里面阴森森的,有种不祥的气息。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "暂时离开" self.menu.bButton.hide() elif goods.Name == "fridge_box": self.menu.selectDialog.show() self.menu.textLabel['text'] = "冰箱中东西不多,仅有几根胡萝卜和一个大蛋糕。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "获得胡萝卜*1", goods, "searched", ["carrot"] ] self.menu.aButton['text'] = "拿走胡萝卜" self.menu.bButton['command'] = self.showInfo self.menu.bButton['extraArgs'] = [ "获得大蛋糕*1", goods, "searched", ["cake"], "endF", None ] self.menu.bButton['text'] = "拿走大蛋糕" elif goods.Name == "diary": self.menu.selectDialog.show() if self.player.EROSION > 50: self.menu.textLabel['text'] = "因为意识混乱,日记上的字迹模糊不清,难以调查。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "暂时离开" self.menu.bButton.hide() else: self.menu.textLabel['text'] = "这份研究结论我似乎见过呢。实验体被Erosion所侵蚀之后意识会逐渐被吞噬……\n" \ "Erosion结附在实验体上,夺去实验体的意识。而这些失去意识的实验体脸上\n" \ "挂着笑容,大概是本我意识还活在海市蜃楼中吧。" self.menu.aButton['command'] = self.beginMemory self.menu.aButton['extraArgs'] = [0, 2] self.menu.aButton['text'] = "我记起了..." self.menu.bButton.hide() elif goods.Name == "moldy_food": self.menu.selectDialog.show() self.menu.textLabel[ 'text'] = "食物放了太久 早就发霉了。看起来像是煮好的胡萝卜。“还是不要去尝了吧,不然会死人的”" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "实验兔吃下了发霉的食物,蹬了一下腿就一动不动了。\n" "获得死兔", goods, "eaten", ["deadRabbit"] ] self.menu.aButton['text'] = "使用实验兔" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" elif goods.Name == "safe_box": self.menu.selectDialog.show() if self.player.EROSION >= 50 and self.goods.state == "": self.menu.textLabel['text'] = "你的焦虑影响了你的思维。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你用力向前一拍,砸碎了大厅门。", goods, "unlockedOpen" ] self.menu.aButton['text'] = "我..." self.menu.bButton.hide() self.goods.OnClick() self.password = Password() self.password.passwordFrame.hide() self.password.unloadLeap() self.password.passState = True else: if self.goods.state == "unlockedOpen": self.menu.textLabel['text'] = "大厅门上现在没有上锁。" self.menu.aButton['command'] = self.openDoor self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "关闭大厅门" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" elif self.goods.state == "unlockedClose": self.menu.textLabel['text'] = "大厅门上现在没有上锁。" self.menu.aButton['command'] = self.openDoor self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "打开大厅门" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" else: self.menu.textLabel['text'] = "上面似乎有一个密码锁。" self.menu.aButton['command'] = self.openDoor self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "输入密码" self.menu.bButton['command'] = self.showInfo self.menu.bButton['extraArgs'] = [ "这个密码到底是什么呢……", goods, "" ] self.menu.bButton['text'] = "暂时离开" elif goods.Name == "rabbit_cage": self.menu.selectDialog.show() self.menu.textLabel['text'] = "实验室的实验兔笼。里面的兔子似乎因为没有食物而显得很躁动。\n" \ "伸了伸手,发现似乎够不着兔子。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你使用胡萝卜引诱兔子出来,抓出了一只兔子。\n" "获得兔子*1", goods, "", ["rabbit"] ] self.menu.aButton['text'] = "使用胡萝卜" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" elif goods.Name == "windows_box": self.menu.selectDialog.show() if goods.state == "smashed": self.menu.textLabel['text'] = "这个窗户已经被砸开了。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" else: self.menu.textLabel['text'] = "这个窗户似乎通向实验室。透过窗户看了看实验室里面,\n" \ "只看到一片阴影在蠕动。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "窗户似乎打不开呢……没有办法放兔子进去。", goods, "" ] self.menu.aButton['text'] = "放入兔子" self.menu.bButton['command'] = self.showInfo self.menu.aButton['text'] = "使用锤子" if self.player.EROSION > 80: self.menu.aButton['extraArgs'] = [ "你用锤子直接砸碎了窗户。同时,窗户内传来\n" "镜子破碎的声音。这时一个锈迹斑斑的铜板掉了\n" "下来。获得锈迹斑斑的铜板", goods, "smashed", ["copper"] ] else: self.menu.aButton['extraArgs'] = [ "实验室窗户异常坚硬,砸不开。", goods, "" ] elif goods.Name == "scissor": self.menu.selectDialog.show() self.menu.textLabel['text'] = "这里有把裁纸刀。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "获得裁纸刀*1", goods, "", ["scissor"] ] self.menu.aButton['text'] = "拿起裁纸刀" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" elif goods.Name == "tank": self.menu.selectDialog.show() self.menu.textLabel['text'] = "硫酸槽中盛满了稀硫酸。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你用稀硫酸除去了铁锈,看到了铜片上的文字。", goods, "", None, "copperText", None ] self.menu.aButton['text'] = "使用铜板" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" elif goods.Name == "slogan": self.menu.selectDialog.show() self.menu.textLabel['text'] = "属于我们的请回来,不属于我们的请离开。我们是不可分离的\n" \ "镜的两面,恢复镜的人会获得祝福,破坏镜的人会万劫不复。\n" \ "当你迷茫如何前进时,不如去走廊欣赏一下艺术。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "stove1": self.menu.selectDialog.show() self.menu.textLabel['text'] = "熊熊燃烧的火炉。你看到周围的灰烬中残留的纸屑写着文字“悲”" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你把莎士比亚喜剧集烧掉,火焰变的更旺了", goods, "", None, "burnBook", None ] self.menu.aButton['text'] = "烧掉喜剧集" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "这时火焰突然跃起。", goods, "", None, "burnFunBook", 15 ] self.menu.aButton['text'] = "烧掉其他书" elif goods.Name == "stove2": self.menu.selectDialog.show() self.menu.textLabel['text'] = "熊熊燃烧的火炉。你看到周围的灰烬中残留的纸屑写着文字“喜”" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你把莎士比亚悲剧集烧掉,火焰变的更旺了", goods, "", None, "burnBook", None ] self.menu.aButton['text'] = "烧掉悲剧集" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "这时火焰突然跃起。", goods, "", None, "burnSadBook", 15 ] self.menu.aButton['text'] = "烧掉其他书" elif goods.Name == "mirror": self.menu.selectDialog.show() if goods.state == "smashed": self.menu.selectDialog.show() self.menu.textLabel['text'] = "这其实是块玻璃而已,已经被砸碎了。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() else: self.menu.textLabel['text'] = "显示出一模一样的情景,但没有映出自己的脸。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [ "你用锤子砸碎了镜子,发现这其实是一块玻璃,\n" "表里两侧除了光线以外完全相同。", goods, "smashed" ] self.menu.aButton['text'] = "使用锤子" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" elif goods.Name == "flower_vase": self.menu.selectDialog.show() self.menu.textLabel['text'] = "里面有" + str(self.flowerNum) + "朵纸花。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你成功插入了一朵纸花。", goods, "", None, "addFlower", None ] self.menu.aButton['text'] = "插入纸花" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" elif goods.Name == "bookshelf_box": self.menu.selectDialog.show() self.menu.textLabel['text'] = "书架里有:《失忆症》《莎士比亚喜剧集》《高等代数分析》" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "获得《莎士比亚喜剧集》", goods, "", ["funBook"] ] self.menu.aButton['text'] = "拿走莎士比亚喜剧集" self.menu.bButton['command'] = self.showInfo self.menu.bButton['extraArgs'] = [ "你看到书架后方有一个人影。\n" "不对啊…书架明明是在墙角才对……", goods, "", None, "endG", None ] self.menu.bButton['text'] = "拿走其他" else: self.resume() ''' wall word ''' def showWordBefore(self): self.menu.selectDialog.hide() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) self.wordframe = DirectFrame(frameColor=(0, 0, 0, 1), frameSize=(-2, 2, -2, 2), pos=(0, 0, 0)) self.wordImage = OnscreenImage( 'res/models/SceneJPG/Scene1_Wall_Hall.png', pos=(0, 0, 0), scale=(1.4, 1, 1)) self.wordImage.reparentTo(self.wordframe) # self.leaveButton=DirectButton self.wordframe.show() self.player.initTask() base.accept("mouse1", self.wordReturn) base.accept("escape", self.wordReturn) def showWordAfter(self): self.menu.selectDialog.hide() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) self.wordframe = DirectFrame(frameColor=(0, 0, 0, 1), frameSize=(-2, 2, -2, 2), pos=(0, 0, 0)) self.wordImage = OnscreenImage( 'res/models/SceneJPG/Scene1_Wall_Hall2.png', pos=(0, 0, 0), scale=(1.4, 1, 1)) self.wordImage.reparentTo(self.wordframe) # self.wordImage.removeNode() self.wordframe.show() self.player.initTask() base.accept("escape", self.wordReturn) base.accept("mouse1", self.wordReturn) def wordReturn(self): self.wordframe.hide() self.resume() self.player.initTask() base.accept("mouse1", self.player.__setattr__, ["LeftButton", 1]) base.accept('escape', self.player.game.pauseGame) def changWord(self, info, goods, state, items=None): goods.state = state self.manager.GoodsIta["Scene1_wallword_1"].CloseHighLight() self.manager.GoodsIta["Scene1_wallword_1"].Node.hide() self.manager.GoodsIta["Scene1_wallword_1"].state = "changed" self.manager.GoodsIta["Scene1_wallword_2"].Node.show() self.menu.infoDialog['text'] = info self.menu.infoDialog.show() self.resume() self.player.initTask() ''' password door ''' def openDoor(self): if self.password is None: self.password = Password() self.password.password = "******" else: self.password.reloadLeap() props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.password.passwordFrame.show() self.menu.selectDialog.hide() taskMgr.add(self.waitPass, "waitPass") base.accept('escape', self.waitPassReturn) def waitPass(self, task): if self.password.passState: self.password.passwordFrame.hide() self.password.unloadLeap() self.goods.OnClick() if self.goods.state == "unlockedOpen": self.goods.state = "unlockedClose" else: self.goods.state = "unlockedOpen" self.resume() self.player.initTask() base.accept('escape', self.player.game.pauseGame) return if self.password.wrongTime == 1: self.password.passwordFrame.hide() self.password.wrongTime = 0 self.password.unloadLeap() self.showInfo("密码错误,侵蚀度+5", self.goods, "", None, None, 5) base.accept('escape', self.player.game.pauseGame) return task.done return task.cont def waitPassReturn(self): self.resume() self.player.initTask() base.accept('escape', self.player.game.pauseGame) self.password.passwordFrame.hide() def openExitDoor(self): if self.passwordExit is None: self.passwordExit = Password() else: self.passwordExit.reloadLeap() props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.passwordExit.passwordFrame.show() self.menu.selectDialog.hide() taskMgr.add(self.waitExitPass, "waitExitPass") base.accept('escape', self.waitExitPassReturn) def waitExitPass(self, task): if self.passwordExit.passState: self.passwordExit.passwordFrame.hide() self.passwordExit.unloadLeap() self.goods.OnClick() if self.goods.state == "unlockedOpen": self.goods.state = "unlockedClose" else: self.goods.state = "unlockedOpen" self.resume() self.player.initTask() base.accept('escape', self.player.game.pauseGame) return return task.cont def waitExitPassReturn(self): self.resume() self.player.initTask() base.accept('escape', self.player.game.pauseGame) self.passwordExit.passwordFrame.hide() def doNothing(self): self.resume() self.player.initTask() def showTutorial(self, tutorialIndex): self.menu.selectDialog.hide() self.menu.tutorialDialog.show() self.menu.nextButton['text'] = self.tutorialText[tutorialIndex] def hideTutorial(self): self.menu.bButton.show() self.menu.selectDialog.hide() self.menu.tutorialDialog.hide() self.skip() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) base.win.movePointer(0, base.win.getXSize() / 2, base.win.getYSize() / 2) self.player.initTask() def hideOcanio(self): self.menu.tutorialDialog.hide() self.menu.ocanioDialog.hide() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) base.win.movePointer(0, base.win.getXSize() / 2, base.win.getYSize() / 2) self.player.initTask() def showInfo(self, info, goods, state, items=None, index=None, addErosion=None): self.menu.infoDialog.show() goods.state = state self.menu.infoDialog['text'] = info if items is not None: for item in items: if item == "rabbit": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.rabbit, "一只实验兔")) elif item == "deadRabbit": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.deadRabbit, "一只死兔")) elif item == "hammer": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.hammer, "一只锤子")) elif item == "injection": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.injection, "抑制剂")) elif item == "goldenKey": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.goldenKey, "一把金色钥匙")) elif item == "carrot": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.carrot, "一根胡萝卜")) elif item == "cake": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.cake, "一块大蛋糕")) elif item == "copper": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.copper, "一个锈迹斑斑的铜板")) elif item == "scissor": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.scissor, "一把裁纸刀")) elif item == "funBook": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.funBook, "《莎士比亚喜剧集》")) elif item == "sadBook": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.sadBood, "《莎士比亚悲剧集》")) else: self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.panda, "这是啥?")) if index is not None: if index == 3: self.beginMemory(0) self.menu.selectDialog.hide() self.skip() elif index == "endC" or index == "endD": self.end(index) else: self.showTutorial(index) self.skip() else: self.resume() self.player.initTask() if addErosion is not None: if self.player.EROSION + addErosion < 0: self.player.EROSION = 0 elif self.player.EROSION + addErosion > 100: self.player.EROSION = 100 else: self.player.EROSION += addErosion def beginMemory(self, index, memIndex=None): if memIndex is not None: if index < 4: self.menu.tutorialDialog.hide() self.menu.ocanioDialog.show() self.menu.ocanioButton['text'] = self.memoryText[memIndex][ index] self.menu.ocanioButton['command'] = self.beginMemory self.menu.ocanioButton['extraArgs'] = [index + 1] else: self.menu.tutorialDialog.hide() self.menu.ocanioDialog.show() self.menu.ocanioButton['text'] = self.memoryText[memIndex][ index] self.menu.ocanioButton['command'] = self.hideOcanio self.menu.ocanioButton['extraArgs'] = [] else: if index < 3 or index == 4: self.menu.tutorialDialog.hide() self.menu.ocanioDialog.show() self.menu.ocanioButton['text'] = self.memoryText[5][index] self.menu.ocanioButton['command'] = self.beginMemory self.menu.ocanioButton['extraArgs'] = [index + 1] elif index == 3 or index == 5: self.menu.tutorialDialog.show() self.menu.ocanioDialog.hide() self.menu.nextButton['text'] = self.memoryText[5][index] self.menu.nextButton['command'] = self.beginMemory self.menu.nextButton['extraArgs'] = [index + 1] elif index == 6: self.menu.tutorialDialog.hide() self.menu.ocanioDialog.show() self.menu.ocanioButton['text'] = self.memoryText[5][index] self.menu.ocanioButton['command'] = self.hideOcanio self.menu.ocanioButton['extraArgs'] = [] def aCommand(self): self.resume() self.player.initTask() def bCommand(self): self.menu.infoDialog.show() self.menu.infoDialog['text'] = "get something!" self.resume() self.player.initTask() def skip(self): taskMgr.add(self.fadeTask, "fadeTask") def fadeTask(self, task): if task.time < 1.0: return task.cont self.menu.infoDialog.hide() return task.done def resume(self): self.menu.bButton.show() self.menu.selectDialog.hide() # self.menu.tutorialDialog.hide() self.skip() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) base.win.movePointer(0, base.win.getXSize() / 2, base.win.getYSize() / 2) def end(self, fun="endB"): self.endFun = fun self.menu.tutorialDialog.hide() taskMgr.add(self.fadeEnd, "fadeEnd") def fadeEnd(self, task): if task.time < 1.0: self.menu.passFrame['frameColor'] = (0, 0, 0, task.time) return task.cont self.menu.passFrame.hide() self.menu.infoDialog.hide() if self.endFun == "endA": self.endA() elif self.endFun == "end1": self.end1() elif self.endFun == "endB": self.endB() return task.done def endA(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.menu.mainFrame.show() self.menu.infoDialog.show() self.player.erosionFrame.hide() self.player.currentItemFrame.hide() self.menu.infoDialog['text'] = "Erosion max!" self.skip() def endB(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.menu.mainFrame.show() self.menu.infoDialog.show() self.player.erosionFrame.hide() self.player.currentItemFrame.hide() self.menu.tutorialDialog.hide() self.menu.infoDialog['text'] = "Kura被你吓死了!" self.skip() def end1(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.menu.mainFrame.show() self.menu.infoDialog.show() self.player.erosionFrame.hide() self.player.currentItemFrame.hide() self.menu.infoDialog['text'] = "Erosion max!" self.skip()
class Mission(object): def __init__(self, p, m): self.menu = m self.player = p self.memoryNum = 0 self.password = None self.passwordExit = None self.bookIndex = 0 # self.manager = GoodsManager() self.manager = self.player.goodmanager self.tutorialText = range(10) self.plotText = [[0] * 10] * 10 self.memoryText = [[0] * 10] * 10 self.kuraText = range(10) self.initTutorial() self.initPlot() self.initMemory() self.initKuraMessage() self.paperState = True def initTutorial(self): self.tutorialText[0] = "" self.tutorialText[1] = "被Erosion感染的人存在侵蚀度这个概念。侵蚀度越高你的身体机能也就越强,\n" \ "但是一定不要为了力量而盲目提升侵蚀度,因为你的侵蚀度达到100%之后意识" \ "就会立刻消亡,成为Erosion病毒的傀儡。" self.tutorialText[2] = "如果真的需要力量的话,可以发动技能入魔,通过提升侵蚀度的代价短暂提升\n" \ "自身的速度,同时随着侵蚀度上升可以做一些平时力量达不到的事情。但是一\n" \ "定给我不要滥用啊,不然的话就去死吧,笨蛋。" self.tutorialText[3] = "你终于想起来一些事情了呢~这个房间中有好多能让你找回记忆的东西。找到\n" \ "那些东西,也是拯救我们的办法呢。" self.tutorialText[4] = "我们这种被Erosion寄生的人呢,在危险的时候会有一种直觉,这种直觉会让\n" \ "你在遭遇危险时听到自己的心跳声。说来,为什么我的心跳这么剧烈呢…" self.tutorialText[5] = "在遇到无法通过的障碍时,使用侵蚀之门可以在空间中制造通道从而进行穿梭。\n" \ "我先在这里制造一扇给你示范一下,看好了哦。" self.menu.nextButton['command'] = self.hideTutorial self.menu.nextButton['extraArgs'] = [] def initPlot(self): self.plotText[0][0] = "终于醒了啊。估计你也想不起来过去的事情了,那我就重新介绍一下自己吧" self.plotText[0][1] = "我叫Kura。当时有一群人冲向我们,你给自己注射了Erosion,\n然后杀掉了那些人呢。" self.plotText[0][2] = "那些…人?Kura?不行,我还是想不起来……。" self.plotText[0][3] = "只有你知道治疗Erosion的办法,所以能从病毒中拯救我们的…也就只有你了。\n" \ "因为我被感染的时间比较长,所以只能保持清醒状态很短时间…务必要从这里逃\n" \ "出去然后找到解药,不然我们恐怕都要迷失在这里了…我会在这里等你的。" self.plotText[1] = "刚一踏出房间,房间的门就被重重的锁上了。无论我怎么叫喊,里面都没有回应。" \ "我尽可能不去想最糟糕的情况,大概kura不会有什么问题的吧。" def initMemory(self): self.memoryText[5][0] = "这个合影……我依稀记得这是我和女儿一起照的……感觉……记忆在涌上来" self.memoryText[5][1] = "她应该也在这个实验室中……在不久之前她被一些实验体咬伤了\n……不行," \ "我一定要活着出去,并且找到她……" self.memoryText[5][2] = "说起来kura,你长的真的很像我的女儿呢。可是你为什么会在这里呢?\n" self.memoryText[5][3] = "是吗?那你就把我当成你的女儿呗,爸爸。" self.memoryText[5][4] = "……" self.memoryText[5][5] = "当然是开玩笑的啦,我也不知道我为什么在这里,我只知道我也\n" \ "被Erosion感染了。不管这些,你一定要逃出去哦,无论是为了你\n" \ "的女儿亦或是你自己,或者说……为了我?" self.memoryText[5][6] = "嗯,一定。" def initKuraMessage(self): self.kuraText[0] = "呜……真是的…干嘛突然用\n手电筒照我呀,好刺眼的……" self.kuraText[1] = "……呜…又来…恶作剧也要有\n个限度呀………人家也是会生气的哦…" self.kuraText[2] = "…不是说过了么…恶作剧什么的,要有个…限度呢。\n...\n去死吧你这可恶的人类!" self.kuraText[3] = "我记得那边有个八音盒哦。\n这个发条应该和那个八音盒有关" def interactiveWith(self, goods): self.player.walksound.stop() props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.goods = goods if goods.Name == "box": self.menu.selectDialog.show() if goods.state == "smashed": self.menu.textLabel['text'] = "这个箱子已经被砸碎了,没必要再去探索了。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.state == "moved": if self.player.EROSION >= 50: self.menu.textLabel['text'] = "你无法控制暴怒,砸坏了箱子。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "箱子中掉出了一张合影。", goods, "smashed", ["groupPhoto"], 3, -15 ] self.menu.aButton['text'] = "查看箱子" self.menu.bButton.hide() else: self.menu.textLabel['text'] = "这个箱子背后已经没有什么可以探索的了。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() else: if self.player.EROSION < 5: self.menu.textLabel[ 'text'] = "这个箱子太重了,我推不动它。\n可能我还需要更强的力量。" self.menu.aButton['command'] = self.showTutorial self.menu.aButton['extraArgs'] = [2] self.menu.aButton['text'] = "暂时离开" self.menu.bButton.hide() elif self.player.EROSION < 50: self.menu.textLabel['text'] = "看起来很重的箱子,\n是否要搬开看看?" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "从箱子的后面发现了一个手电筒,\n似乎还有着一点电量。", goods, "moved", ["torch"] ] self.menu.aButton['text'] = "搬开" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "不搬开" else: self.menu.textLabel['text'] = "你无法控制暴怒,砸坏了箱子。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "箱子中掉出了一张合影,并且\n" "从箱子的后面发现了一个手电筒,\n" "似乎还有着一点电量。", goods, "smashed", ["torch", "groupPhoto"], 3, -15 ] self.menu.aButton['text'] = "查看箱子" self.menu.bButton.hide() elif goods.Name == "yaoshui": self.menu.selectDialog.show() if goods.state == "": self.showTutorial(4) self.menu.nextButton['command'] = self.hideTutorial self.menu.nextButton['extraArgs'] = [] goods.state = "skipTutorial" if goods.state == "shined": self.menu.textLabel['text'] = "这瓶蓝色药水没什么用了。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() else: # if self.player.bag.haveItem("res/models/items/" + "torch" + ".png"): # self.menu.textLabel['text'] = "桌子上怎么有瓶蓝色药水?" # self.menu.aButton['command'] = self.showInfo # self.menu.aButton['extraArgs'] = ["不对…头好晕…这药水有毒! ", goods, "drinked", None, None, 100] # self.menu.aButton['text'] = "喝一口" # self.menu.bButton['command'] = self.changWord # self.menu.bButton['extraArgs'] = ["后方墙上的一些文字在光芒照射下\n变成了蓝色。手电筒电量耗尽了。", goods, "shined"] # self.menu.bButton['text'] = "用手电筒照一下." # else: self.menu.textLabel['text'] = "桌子上怎么有瓶蓝色药水?" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "不对…头好晕…这药水有毒!", goods, "drinked", None, None, 100 ] self.menu.aButton['text'] = "喝一口" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "放弃" elif goods.Name == "toilet_door": self.menu.selectDialog.show() if self.player.EROSION >= 50 and self.goods.state == "": self.menu.textLabel['text'] = "你的焦虑影响了你的思维。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "你用力向前一拍,砸碎了厕所的门。", goods, "unlockedOpen" ] self.menu.aButton['text'] = "我..." self.menu.bButton.hide() self.goods.OnClick() self.password = Password() self.password.passwordFrame.hide() self.password.unloadLeap() self.password.passState = True else: if self.goods.state == "unlockedOpen": self.menu.textLabel['text'] = "厕所门上现在没有上锁。" self.menu.aButton['command'] = self.openDoor self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "关闭厕所门" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" elif self.goods.state == "unlockedClose": self.menu.textLabel['text'] = "厕所门上现在没有上锁。" self.menu.aButton['command'] = self.openDoor self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "打开厕所门" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" else: self.menu.textLabel['text'] = "厕所门上有一个四位数的密码锁。" self.menu.aButton['command'] = self.openDoor self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "输入密码" self.menu.bButton['command'] = self.showInfo self.menu.bButton['extraArgs'] = [ "这个密码到底是什么呢……", goods, "" ] self.menu.bButton['text'] = "暂时离开" elif goods.Name == "matong_box3": self.menu.selectDialog.show() if goods.state == "searched": self.menu.textLabel['text'] = "这个马桶已经被调查过了。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() else: self.menu.textLabel['text'] = "上完厕所后冲了一下水,\n发现一个发条卡在马桶的排水口。" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "获得发条", goods, "searched", ["spring"] ] self.menu.aButton['text'] = "拿起发条" self.menu.bButton.hide() self.getSpringSound = loader.loadSfx("res/sounds/toilte.mp3") self.getSpringSound.setPlayRate(1.5) self.getSpringSound.play() elif goods.Name == "bookshelf_box": self.menu.selectDialog.show() if self.bookIndex == 3: self.bookIndex = 0 if self.bookIndex == 0: self.menu.textLabel['text'] = "《Erosion研究报告IV》根据我对数据研究证明,被Erosion侵蚀的人在晚期\n" \ "会看到海市蜃楼景象,甚至分不清什么是真实什么是虚妄的幻境。如果没人\n" \ "提醒,那些人会沉湎在幻想美梦中而无法醒来,从而被Erosion完全控制。" elif self.bookIndex == 1: self.menu.textLabel[ 'text'] = "《格林童话集》为什么这个房间会有这种书?但是我没时间在这里浪费了。" elif self.bookIndex == 2: self.menu.textLabel[ 'text'] = "《人民日报》上面日期写着2011年2月5日。\n报纸都泛黄了,似乎已经过去了很久。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() self.bookIndex += 1 elif goods.Name == "bed_box": self.menu.selectDialog.show() self.menu.textLabel['text'] = "一点都不困,还是不要睡了。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "xishoupen": self.menu.selectDialog.show() if goods.state is not "searched": self.menu.textLabel['text'] = "洗手台里好像有什么东西?" self.menu.aButton['command'] = self.showInfo self.menu.aButton['extraArgs'] = [ "在洗手台的上方\n发现了一支抑制剂。", goods, "searched", ["injection"] ] self.menu.aButton['text'] = "查看" self.menu.bButton.hide() else: self.menu.textLabel['text'] = "洗手台里什么都没有了。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "离开" self.menu.bButton.hide() elif goods.Name == "MusicBox": self.menu.selectDialog.show() self.menu.textLabel['text'] = "一个装饰精美的八音盒,貌似缺少了什么。" self.menu.aButton['command'] = self.doNothing self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "暂时离开" self.menu.bButton.hide() elif goods.Name == "Scene1_Exit": self.menu.selectDialog.show() if self.goods.state == "unlockedOpen": self.menu.textLabel['text'] = "房间门上现在没有上锁。" self.menu.aButton['command'] = self.openExitDoor self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "关闭房间门" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" elif self.goods.state == "unlockedClose": self.menu.textLabel['text'] = "房间门上现在没有上锁。" self.menu.aButton['command'] = self.openExitDoor self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "打开房间门" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" else: self.menu.textLabel['text'] = "房间门上有一个密码锁。" self.menu.aButton['command'] = self.openExitDoor self.menu.aButton['extraArgs'] = [] self.menu.aButton['text'] = "输入密码" self.menu.bButton['command'] = self.showInfo self.menu.bButton['extraArgs'] = ["这个密码到底是什么呢……", goods, ""] self.menu.bButton['text'] = "暂时离开" elif goods.Name == "Scene1_wallword_1": self.menu.selectDialog.show() if goods.state == "changed": self.menu.textLabel['text'] = "之前我记得有这么几道文字被凸显了出来" self.menu.aButton['text'] = "查看文字" self.menu.aButton['extraArgs'] = [] self.menu.aButton['command'] = self.showWordAfter self.menu.bButton['text'] = "离开" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] else: if (self.player.bag.haveItem("res/models/items/" + "torch" + ".png")): self.menu.textLabel['text'] = "文字并没有发生任何变化" else: self.menu.textLabel['text'] = "墙上这些文字和鬼画符一样,用肉眼难以看懂" self.menu.aButton['text'] = "查看文字" self.menu.aButton['command'] = self.showWordBefore self.menu.aButton['extraArgs'] = [] self.menu.bButton['text'] = "离开" self.menu.bButton['command'] = self.doNothing self.menu.bButton['extraArgs'] = [] elif goods.Name == "enemy": self.menu.infoDialog.show() if goods.state == 1: self.showTutorial(1) self.showTips('系统提示:请时刻注意你的侵蚀度。') goods.state = 2 elif goods.state == 2: self.showTutorial(2) self.showTips('系统提示:按下Space发动入魔。') goods.state = 3 elif goods.state == 3: self.showTutorial(3) self.showTips('系统提示:在侵蚀度高于50%时你会有破坏\n' '东西的冲动和焦虑感,可能会影响剧情的发展。') goods.state = 4 elif goods.state == 4: self.showTutorial(4) self.showTips('系统提示:留意自己的心跳声。') goods.state = 5 elif goods.state == 5: self.showTutorial(5) self.showTips('系统提示:按下鼠标右键可以\n' '向前方发射侵蚀之门,如果场景中\n' '存在两个侵蚀之门即可互相穿梭。') goods.state = 1 else: self.resume() def waitPaper(self, task): if self.paperState == True: base.accept("mouse1", self.player.__setattr__, ["LeftButton", 1]) base.accept("mouse1-up", self.player.__setattr__, ["LeftButton", 0]) base.accept("escape", self.player.game.pauseGame) self.player.bag.paperFrame.hide() self.player.mission.paperState = True self.player.initTask() return task.done return task.cont ''' wall word ''' def showWordBefore(self): self.menu.selectDialog.hide() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) self.wordframe = DirectFrame(frameColor=(0, 0, 0, 1), frameSize=(-2, 2, -2, 2), pos=(0, 0, 0)) self.wordImage = OnscreenImage( 'res/models/SceneJPG/Scene1_Wall_Hall.png', pos=(0, 0, 0), scale=(1.4, 1, 1)) self.wordImage.reparentTo(self.wordframe) # self.leaveButton=DirectButton self.wordframe.show() self.player.initTask() base.accept("mouse1", self.wordReturn) base.accept("escape", self.wordReturn) def showWordAfter(self): self.menu.selectDialog.hide() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) self.wordframe = DirectFrame(frameColor=(0, 0, 0, 1), frameSize=(-2, 2, -2, 2), pos=(0, 0, 0)) self.wordImage = OnscreenImage( 'res/models/SceneJPG/Scene1_Wall_Hall2.png', pos=(0, 0, 0), scale=(1.4, 1, 1)) self.wordImage.reparentTo(self.wordframe) # self.wordImage.removeNode() self.wordframe.show() self.player.initTask() base.accept("escape", self.wordReturn) base.accept("mouse1", self.wordReturn) def wordReturn(self): self.wordframe.hide() self.resume() self.player.initTask() base.accept("mouse1", self.player.__setattr__, ["LeftButton", 1]) base.accept('escape', self.player.game.pauseGame) def changWord(self, info, goods, state, items=None): goods.state = state self.manager.GoodsIta["Scene1_wallword_1"].CloseHighLight() self.manager.GoodsIta["Scene1_wallword_1"].Node.hide() self.manager.GoodsIta["Scene1_wallword_1"].state = "changed" self.manager.GoodsIta["Scene1_wallword_2"].Node.show() self.menu.infoLabel['text'] = info self.menu.infoDialog.show() self.resume() self.player.initTask() ''' password door ''' def openDoor(self): if self.password is None: self.password = Password() self.password.password = "******" else: self.password.reloadLeap() props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() if self.password.passState == False: self.password.passwordFrame.show() self.menu.selectDialog.hide() taskMgr.add(self.waitPass, "waitPass") base.accept('escape', self.waitPassReturn) def waitPass(self, task): if self.password.passState: self.password.passwordFrame.hide() self.password.unloadLeap() self.goods = self.player.goodmanager.GoodsIta['toilet_door'] self.goods.OnClick() if self.goods.state == "unlockedOpen": self.goods.state = "unlockedClose" else: self.goods.state = "unlockedOpen" self.resume() self.player.initTask() base.accept('escape', self.player.game.pauseGame) return if self.password.wrongTime == 1: self.password.passwordFrame.hide() self.password.wrongTime = 0 self.password.unloadLeap() self.showInfo("密码错误,侵蚀度+5", self.goods, "", None, None, 5) base.accept('escape', self.player.game.pauseGame) return task.done return task.cont def waitPassReturn(self): self.resume() self.player.initTask() base.accept('escape', self.player.game.pauseGame) self.password.unloadLeap() self.password.passwordFrame.hide() def openExitDoor(self): if self.passwordExit is None: self.passwordExit = Gpassword() else: self.passwordExit.reloadLeap() base.accept('b', self.menu.nothing) props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.passwordExit.passwordFrame.show() self.menu.selectDialog.hide() taskMgr.add(self.waitExitPass, "waitExitPass") base.accept('escape', self.waitExitPassReturn) def waitExitPass(self, task): if self.passwordExit.passState: self.passwordExit.passwordFrame.hide() self.passwordExit.unloadLeap() base.accept("mouse1", self.player.__setattr__, ["LeftButton", 1]) base.accept("mouse1-up", self.player.__setattr__, ["LeftButton", 0]) self.goods.OnClick() if self.goods.state == "unlockedOpen": self.goods.state = "unlockedClose" else: self.goods.state = "unlockedOpen" self.resume() self.player.initTask() base.accept('escape', self.player.game.pauseGame) # self.moveToLevelTwo() self.player.mouseIconNormal.show() self.player.mouseIconWatch.hide() self.player.isInteractive = False self.player.node.setPos(-250, 265, 0) self.menu.passFrame.show() taskMgr.add(self.fadeMove, "fadeMove") self.resume() return if self.passwordExit.wrongTime == 1: self.passwordExit.passwordFrame.hide() self.passwordExit.wrongTime = 0 self.passwordExit.clear() self.passwordExit.unloadLeap() base.accept("mouse1", self.player.__setattr__, ["LeftButton", 1]) base.accept("mouse1-up", self.player.__setattr__, ["LeftButton", 0]) self.showInfo("房间门没有任何反应。", self.goods, "") base.accept('escape', self.player.game.pauseGame) return task.done return task.cont def waitExitPassReturn(self): self.resume() self.player.initTask() base.accept("mouse1", self.player.__setattr__, ["LeftButton", 1]) base.accept("mouse1-up", self.player.__setattr__, ["LeftButton", 0]) # self.player.game. base.accept('escape', self.player.game.pauseGame) base.accept('b', self.player.game.openBag) self.passwordExit.unloadLeap() self.passwordExit.clear() self.passwordExit.passwordFrame.hide() def doNothing(self): self.resume() self.player.initTask() def showTutorial(self, tutorialIndex): self.menu.selectDialog.hide() self.menu.tutorialDialog.show() self.menu.nextButton['text'] = self.tutorialText[tutorialIndex] def hideTutorial(self): self.menu.bButton.show() self.menu.selectDialog.hide() self.menu.tutorialDialog.hide() self.skip() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) base.win.movePointer(0, base.win.getXSize() / 2, base.win.getYSize() / 2) self.player.initTask() def hideOcanio(self): self.menu.tutorialDialog.hide() self.menu.ocanioDialog.hide() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) base.win.movePointer(0, base.win.getXSize() / 2, base.win.getYSize() / 2) self.player.initTask() def showInfo(self, info, goods, state, items=None, index=None, addErosion=None): self.menu.infoDialog.show() goods.state = state self.menu.infoLabel['text'] = info if items is not None: for item in items: if item == "paper": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.paper, "一张纸条")) elif item == "torch": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.torch, "一个手电筒")) elif item == "groupPhoto": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.photo, "一张合影")) self.memoryNum = 1 elif item == "injection": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.injection, "抑制剂")) elif item == "spring": self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.spring, "发条")) else: self.player.bag.addItem( Goods("res/models/items/" + item + ".png", self.player.bag.panda, "这是啥?")) if index is not None: if index == 3: self.beginMemory(0) self.menu.selectDialog.hide() self.skip() else: self.showTutorial(index) self.skip() else: self.resume() self.player.initTask() if addErosion is not None: if self.player.EROSION + addErosion < 0: self.player.EROSION = 0 elif self.player.EROSION + addErosion > 100: self.player.EROSION = 100 else: self.player.EROSION += addErosion def beginMemory(self, index): if index < 3 or index == 4: self.menu.tutorialDialog.hide() self.menu.ocanioDialog.show() self.menu.ocanioButton['text'] = self.memoryText[5][index] self.menu.ocanioButton['command'] = self.beginMemory self.menu.ocanioButton['extraArgs'] = [index + 1] elif index == 3 or index == 5: self.menu.tutorialDialog.show() self.menu.ocanioDialog.hide() self.menu.nextButton['text'] = self.memoryText[5][index] self.menu.nextButton['command'] = self.beginMemory self.menu.nextButton['extraArgs'] = [index + 1] elif index == 6: self.menu.tutorialDialog.hide() self.menu.ocanioDialog.show() self.menu.ocanioButton['text'] = self.memoryText[5][index] self.menu.ocanioButton['command'] = self.hideOcanio self.menu.ocanioButton['extraArgs'] = [] def aCommand(self): self.resume() self.player.initTask() def bCommand(self): self.menu.infoDialog.show() self.menu.infoLabel['text'] = "get something!" self.resume() self.player.initTask() def skip(self): taskMgr.add(self.fadeTask, "fadeTask") def fadeTask(self, task): if task.time < 1.0: return task.cont self.menu.infoDialog.hide() return task.done def showTips(self, tips): self.menu.infoDialog.hide() self.menu.tipDialog.show() self.menu.tipLabel['text'] = tips taskMgr.add(self.fadeTipsTask, 'fadeTipsTask') def fadeTipsTask(self, task): if task.time < 3.0: return task.cont self.menu.tipDialog.hide() return task.done def resume(self): self.menu.bButton.show() self.menu.selectDialog.hide() # self.menu.tutorialDialog.hide() taskMgr.remove("fadeTask") self.skip() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) base.win.movePointer(0, base.win.getXSize() / 2, base.win.getYSize() / 2) def end(self, fun="endB"): self.endFun = fun self.menu.tutorialDialog.hide() taskMgr.add(self.fadeEnd, "fadeEnd") self.player.erosionFrame.hide() self.player.currentItemFrame.hide() self.menu.passFrame.show() def fadeEnd(self, task): if task.time < 1.0: self.menu.passFrame['frameColor'] = (0, 0, 0, task.time) return task.cont self.menu.passFrame.hide() self.menu.infoDialog.hide() if self.endFun == "endA": self.endA() self.showEndPicture('deadend_text.png') elif self.endFun == "end1": self.end1() self.showEndPicture('deadend_text.png') elif self.endFun == "endB": self.endB() self.showEndPicture('end_text.png') elif self.endFun == "endC": self.endC() self.showEndPicture('deadend+_text.png') elif self.endFun == "endD": self.endD() elif self.endFun == "endE": self.endE() elif self.endFun == "endF": self.endF() elif self.endFun == "endG": self.endG() self.showEndPicture('deadend2+.png') elif self.endFun == "trueEnd": self.trueEnd() return task.done else: return task.done self.menu.mainFrame.hide() base.accept('mouse1-up', self.removeEndPicture) return task.done def removeEndPicture(self): self.menu.endPictureFrame.hide() self.menu.mainFrame.show() def endA(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.menu.mainFrame.show() self.menu.infoDialog.show() self.player.erosionFrame.hide() self.player.currentItemFrame.hide() self.menu.infoLabel['text'] = "Erosion max!" self.menu.infoDialog.hide() self.skip() def endB(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.menu.mainFrame.show() self.menu.infoLabel['text'] = "Kura被你吓死了!" self.menu.infoDialog.show() self.player.erosionFrame.hide() self.player.currentItemFrame.hide() self.menu.tutorialDialog.hide() self.skip() def endC(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.menu.mainFrame.show() self.menu.infoLabel['text'] = '谁动了我的蛋糕?' self.menu.infoDialog.show() self.player.erosionFrame.hide() self.player.currentItemFrame.hide() self.menu.tutorialDialog.hide() self.skip() def endD(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.menu.mainFrame.show() self.menu.infoLabel['text'] = '活该' self.menu.infoDialog.show() self.player.erosionFrame.hide() self.player.currentItemFrame.hide() self.menu.tutorialDialog.hide() self.skip() def endE(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.menu.mainFrame.show() self.menu.infoLabel['text'] = '活该' self.menu.infoDialog.show() self.player.erosionFrame.hide() self.player.currentItemFrame.hide() self.menu.tutorialDialog.hide() self.skip() def endF(self): self.resume() self.player.initTask() def endG(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.menu.mainFrame.show() self.menu.infoLabel['text'] = '书不能乱读' self.menu.infoDialog.show() self.player.erosionFrame.hide() self.player.currentItemFrame.hide() self.menu.tutorialDialog.hide() self.skip() def end1(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) self.player.endTask() self.menu.mainFrame.show() self.menu.infoLabel['text'] = "Erosion max!" self.menu.infoDialog.hide() self.player.erosionFrame.hide() self.player.currentItemFrame.hide() self.skip() def showEndPicture(self, pic): self.menu.endBackground.setImage('res/end/' + pic) self.menu.endPictureFrame.show() base.accept('mouse1-up', self.removeEndPicture) # def fadeEnd(self, task): # if task.time < 2.0: # self.menu.passFrame['frameColor'] = (0, 0, 0, task.time) # return task.cont # self.menu.passFrame.hide() # self.menu.infoDialog.hide() # if self.endFun == "endA": # self.endA() # elif self.endFun == "end1": # self.end1() # elif self.endFun == "endB": # self.endB() # return task.done # # def endA(self): # props = WindowProperties() # props.setCursorHidden(False) # base.win.requestProperties(props) # self.player.endTask() # self.menu.mainFrame.show() # self.menu.infoDialog.show() # self.player.erosionFrame.hide() # self.player.currentItemFrame.hide() # self.menu.infoLabel['text'] = "Erosion max!" # self.skip() # # def endB(self): # props = WindowProperties() # props.setCursorHidden(False) # base.win.requestProperties(props) # self.player.endTask() # self.menu.mainFrame.show() # self.menu.infoDialog.show() # self.player.erosionFrame.hide() # self.player.currentItemFrame.hide() # self.menu.tutorialDialog.hide() # self.menu.infoDialog['text'] = "Kura被你吓死了!" # self.skip() def moveToLevelTwo(self): self.removeGame() self.player.erosionFrame.hide() self.player.currentItemFrame.hide() self.player.shoot.TwoBullet[0].Disappera() self.player.shoot.TwoBullet[1].Disappera() self.menu.selectedSave = 2 self.menu.tempPlayer = self.player self.menu.loadSave() def removeGame(self): ''' 释放内存 ''' names = [ 'wall', 'bed_box', 'bookshelf_box', 'box', 'chair1', 'chair2', 'chair3', 'chair4', 'desk2', 'desk3_2', 'matong_box3', 'xishoupen', 'yaoshui', 'Scene1_Exit', 'Scene1_wallword_1', 'Scene1_wallword_2', 'MusicBox', 'toilet_door', 'enemy' ] for name in names: self.player.goodmanager.UnLoad(name) def fadeMove(self, task): if task.time < 1.0: self.menu.passFrame['frameColor'] = (0, 0, 0, task.time) return task.cont else: self.menu.passFrame.hide() self.moveToLevelTwo() return task.done