def kickEnemy(self): if self.state != GameLoop.STATE_BATTLE: print(cl.y("Чё машешь копытами? Ищи мудака которого будешь пинать!")) else: my_strikes = self.person.getStrikesAccuracy() first_strike = True for p in my_strikes: if not first_strike: print(cl.g("Из-за большой ловкости ты можешь пнуть ещё раз")) first_strike = False if prob(p): strike = random.randint(self.person.getMinStrike(), self.person.getMaxStrike()) doubleStrike = prob(50) if doubleStrike: strike = self.person.getMaxStrike() * 2 print(cl.g("Точный удар!!!")) strike -= self.enemy.eff_shield() if strike < 0: strike = 0 new_enemy_health = self.enemy.current_health - strike self.enemy.current_health = new_enemy_health print(cl.g("Ты пнул врага на {0}з. У него осталось {1}".format(strike, new_enemy_health))) if self.enemy.isDead(): print(cl.g("Враг сдох.")) self.finishBattle() return else: print(cl.r("Ты промазал")) enemy_strikes = self.enemy.getStrikesAccuracy() first_strike = True for p in enemy_strikes: if not first_strike: print(cl.r("Из-за большой ловкости враг может пнуть ещё раз")) first_strike = False if prob(p): strike = random.randint(self.enemy.getMinStrike(), self.enemy.getMaxStrike()) doubleStrike = prob(50) if doubleStrike: strike = self.enemy.getMaxStrike() * 2 variants = [0, 1, 2] v = random.choice(variants) if v == 0: print(cl.r("Враг:Сдохни урод!!!")) elif v == 1: print(cl.r("Враг:Получи гнида!!")) else: print(cl.r("Тебе не хило врезали!")) strike -= self.person.eff_shield() if strike < 0: strike = 0 new_person_health = self.person.current_health - strike self.person.current_health = new_person_health print(cl.r("Он пнул тебя на {0}з. У тебя осталось {1}".format(strike, new_person_health))) if self.person.isDead(): print(cl.r("Ты сдох.")) self.exitGame() return else: print(cl.g("Враг промазал"))
def startNewGame(self): random.seed() default_name = cl.w("Раз") + cl.y("дол") + cl.r("бай") self.person = Person(Type.POTSAN, default_name) input(cl.w("Год 2xxx от Р.Х.")) print(cl.w("Последний день ты пришел в универ")) print(cl.w("Ты по-страшному косил и забивал")) print(cl.w("Ты ещё мог сдать все задания, которые ты взял у друзей")) input(cl.w("Но тут...")) input(cl.y("Ректор: Ах ты урод, чёртов забивала. Вали из универа!")) input(cl.g("Ты: А типа чё?")) input(cl.y("Ректор: Ты отчислен мудак!!! Как ты был лохом так и останешься.")) input(cl.r("Это слышали все и ты из пацана превратился в опущенного.") + "\n") print(cl.w("Ты не можешь стерпеть такой наезд, однако ректор офигительно крутой.")) input(cl.w("Ты решил доказать свою крутизну всему миру (в твоем понимании - Городу).")) person_selected = False first_time = True while not person_selected: if first_time: print(cl.w("Выбери кем ты будешь:")) else: print(cl.w("А теперь выбирай:")) print(cl.w("0-Пацан")) print(cl.w("1-Отморозок")) print(cl.w("2-Гопник")) print(cl.w("3-Вор")) if first_time: print(cl.w("4-Чё за батва?")) val = input(cl.w("")) if first_time and val == "4": print(cl.lb("Пацан - это нормальный тип. (Бонус - Гёлфренд, Клуб)")) print(cl.lb("Отморозок - тупой корявый мудак. (Бонус - Самолечение царапин)")) print(cl.lb("Гопник - гоп он и ест гоп. (Бонус - Притон)")) print(cl.lb("Вор - везучий ублюдок. (Бонус - Воровство, Барыги)")) first_time = False else: if val == "1": self.person = Person(Type.OTMOROZOK, default_name) elif val == "2": self.person = Person(Type.GOPNIK, default_name) self.pr_discovered = True elif val == "3": self.person = Person(Type.VOR, default_name) self.bmar_discovered = True else: # По-умолчанию - пацан self.person = Person(Type.POTSAN, default_name) self.girl_discovered = True self.kl_discovered = True person_selected = True name = input(cl.g("А зовут тебя:")) if name != "": self.person.name = name print(cl.lb("Ты стоишь у дверей университета.")) print(cl.lb("Отсюда ты начинаешь свой нелёгкий путь гопника.")) print(cl.w("Доказать свою крутизну ты можешь, отпинывая разных мудаков.")) print(cl.w("Тебе придётся поработать над собой, чтобы стать крутым.")) print(cl.w("Введи ") + cl.y("i") + cl.w(" чтобы посмотреть команды, введи ") + cl.y("help") + cl.w(" чтобы узнать чё за ботва"))
def goToGirlfriend(self): if not self.girl_discovered: print(cl.r("У тебя пока нет девчонки")) else: if self.person.money < 12: print(cl.y("Ну не пойдёшь же как придурок без ничего")) else: print(cl.g("Ты пришёл к своей подруге.")) print(cl.y("Ты купил ей чё-то, потратив 12 рублей.")) print(cl.g("Ты расслабился, отдохнул и снова можешь творить свои гоповские дела.")) self.person.money -= 12 self.person.current_health = self.person.getMaxHealth()
def enemyStr(self): result = cl.g("Это {0} {1} уровня - {2}\n".format( str(self.person_type), str(self.level), self.levelStr())) result += cl.w("Сл:") + self.eff_strength_s() + cl.w( " Лв:") + self.eff_agility_s() + cl.w( " Жв:") + self.eff_vitality_s() + cl.w( " Уд:") + self.eff_luck_s() + "\n" weaponstr = "Урон {0}-{1}".format(self.getMinStrike(), self.getMaxStrike()) if (len(self.weapons) > 0): weaponstr += " " for w in self.weapons: weaponstr += str(w) weaponstr += " " weaponstr = cl.lb(weaponstr) else: weaponstr = cl.w(weaponstr) weaponstr += "\n" result += weaponstr healthstr = "Здоровье {0}/{1}".format(self.current_health, self.getMaxHealth()) if self.broken_leg: healthstr += cl.r(" Сломана нога") if self.broken_jaw: healthstr += cl.r(" Сломана челюсть") healthstr += "\n" if self.current_health > (self.getMaxHealth() * 2 / 3): result += cl.g(healthstr) elif self.current_health > (self.getMaxHealth() * 1 / 3): result += cl.y(healthstr) else: result += cl.r(healthstr) strikes = self.getStrikesAccuracy() accstr = "" if len(strikes) == 1: accstr = "Точность {0}%\n".format(strikes[0]) elif len(strikes) == 2: accstr = "Точность 90%, Второй удар {0}%\n".format(strikes[1]) else: accstr = "Точность 90% - {1} ударов, Точность {2} удара {3}%\n".format( len(strikes) - 1, len(strikes), strikes[len(strikes) - 1]) result += cl.w(accstr) if (self.eff_shield() > 0): shieldstr = "Броня {0}".format(self.eff_shield()) shieldstr += " " for s in self.shields: shieldstr += str(s) shieldstr += " " shieldstr += "\n" result += cl.w(shieldstr) return result
def party(self): if self.person.money < 15: print(cl.r("Не хватает")) else: self.person.money -= 15 self.person.agility += 1 print(cl.g("Ты прокачиваешь ловкость")) print(cl.b("Ловкость +1"))
def repair(self): if self.person.money < 7: return print("Ого! Да тебя не иначе как грузовик откатал!") print(cl.g("Твои переломы залечены.")) self.person.broken_jaw = False self.person.broken_leg = False self.person.money -= 7
def spyForCheaters(self): if self.person.money < 22: print(cl.r("Не хватает")) else: self.person.money -= 22 self.person.luck += 1 print(cl.g("Ты прокачиваешь удачу")) print(cl.b("Удача +1"))
def trainSkill(self): if self.person.money < 10: print(cl.r("Не хватает")) else: self.person.money -= 10 self.person.increaseExp(10) print(cl.g("Ты тренируешься")) print(cl.b(" +10 качков опыта"))
def trainShield(self): if self.person.money < 20: print(cl.r("Не хватает")) else: self.person.money -= 20 self.person.shield += 1 print(cl.g("Ты прокачиваешь пресс")) print(cl.b("Броня +1"))
def trainVitality(self): if self.person.money < 20: print(cl.r("Не хватает")) else: self.person.money -= 20 self.person.vitality += 1 print(cl.g("Ты прокачиваешь выносливость")) print(cl.b("Выносливость +1"))
def trainStrength(self): if self.person.money < 20: print(cl.r("Не хватает")) else: self.person.money -= 20 self.person.strength += 1 print(cl.g("Ты прокачиваешь силу")) print(cl.b("Сила +1"))
def buyJawShield(self): if self.person.money < 30: print(cl.r("Не хватает")) else: if self.person.jaw_shield: print(cl.y("У тебя есть эта штучка")) else: self.person.money -= 30 self.person.jaw_shield = True print(cl.g("Ты купил защиту"))
def goToHospital(self): if not self.rep_discovered: print(cl.y("Сначала найди где находится эта больница")) else: print(cl.w("Ты пришёл на ремонт, к ветеринару напиши ") + cl.y("w") + cl.w(" чтобы уйти")) if self.person.current_health >= self.person.getMaxHealth(): print("Док: вали отсюда ты здоров") return else: print("Док: не волнуйся всё зарастёт как на собаке") price_1 = "3" price_2 = "7" if self.person.money < 3: price_1 = cl.r("3") if self.person.money < 7: price_2 = cl.r("7") print(cl.g("h") + cl.w(" - за ") + price_1 + cl.w(" рубля тебя залатают")) print(cl.g("r") + cl.w(" - за ") + price_2 + cl.w(" рублей починят переломы")) self.state = GameLoop.STATE_HOSPITAL
def greetings(self): lines = [ "┌─── ┌───┐ ┌───┐ ╷ ╷ ╷ ╷ ╷ ╷", "│ │ │ │ │ │ │ │ │ │ ╱ ", "│ │ │ │ │ │ │ │ │ │ ╱ ", "│ │ │ │ │ ├───┤ │ ╱│ │╱ ", "│ │ │ │ │ │ │ │ ╱ │ │╲ ", "│ │ │ │ │ │ │ │╱ │ │ ╲ ", "│ │ │ │ │ │ │ │ │ │ ╲ ", "╵ └───┘ ╵ ╵ ╵ ╵ ╵ ╵ ╵ ╵", " Версия 2.00 ", ] print(cl.grey(lines[0])) print(cl.b(lines[1])) print(cl.g(lines[2])) print(cl.cyan(lines[3])) print(cl.r(lines[4])) print(cl.magenta(lines[5])) print(cl.y(lines[6])) print(cl.w(lines[7])) print(cl.g(lines[8]))
def drinkBeer(self): if self.person.current_health >= self.person.getMaxHealth(): print(cl.y("Блин только тупить не надо - и так здоровья до фига.")) return if self.person.broken_jaw: print(cl.r("Ты не можешь пить из-за сломаной челюсти.")) return if self.person.beer > 0: add_health = self.person.getMaxHealth() - self.person.current_health if add_health > 5: add_health = 5 self.person.current_health += add_health self.person.beer -= 0.5 if self.person.beer < 0: self.person.beer = 0 print(cl.g("Пиво прибавляет {0}з. Здоровья:{1}/{2}. Осталось {3}л. пива".format( add_health, self.person.current_health, self.person.getMaxHealth(), round(self.person.beer, 1)))) else: print(cl.r("Пива нету"))
def meetGod(self): def meetGodImpl(person): '''Реализация случайного благославления''' choice = random.choice([0, 1, 2, 3, 4, 5, 6]) god_say = "" if choice == 0: god_say += cl.b("Да увеличится, офигенно, твоя понтовость среди гопоты!\n") god_say += cl.b("Получи 100!") person.pont += 100 elif choice == 1: god_say += cl.b("Да увеличится твоя понтовость!") person.increaseExp(self.person.nextLevelSkill() - person.skill) elif choice == 2: god_say += cl.b("Да увеличится твоя сила!") person.strength += 1 person.current_health = person.getMaxHealth() elif choice == 3: god_say += cl.b("Да возрастут твои силы жизненные!") person.vitality += 1 person.current_health = person.getMaxHealth() elif choice == 4: god_say += cl.b("Да уменьшится твоя корявость!") person.agility += 1 elif choice == 5: god_say += cl.b("Накладываю на тебя защиту!") person.shield += 1 elif choice == 6: god_say += cl.b("Дарю тебе феньку!") variants = [artefacts.GodSaveRing(), artefacts.GodHelpRing(), artefacts.MegaRing(), artefacts.GodForgiveRing()] artefact = random.choice(variants) if artefact.description != "": god_say += "\n" + cl.b(artefact.description) person.artefacts.append(artefact) input(god_say) input(cl.w("Бродя по окрестностям с самыми грязными намерениями...")) input(cl.w("Ты наткнулся на храм Божий.")) if self.church_visited_ctr == 0: input(cl.w("Раз такая батва...")) input(cl.w("Надо типа помолиться Господу Богу...")) input(cl.w("Как делают новые руссские.")) input(cl.g("\"Господи, Братан, прости грешника\". - Начал было ты...")) input(cl.b("Громовой голос: \"Да пошёл ты нахрен!\"")) input(cl.g(" - Эээ.. типа.. а чё?..")) input(cl.b(" - \"а чё?\" блин! ") + self.person.name + cl.b("-" + str(self.person.person_type) + " чёртов!")) input(cl.g("Ну..")) input(cl.b("Ладна насылаю на тебя, типа, \"моё благославление\"")) meetGodImpl(self.person) print(cl.b("А теперь вали отсюда и никогда здесь не появляйся!")) print("") print(cl.w("Ты идёшь дальше")) print(cl.w("Ничё не происходит")) elif self.church_visited_ctr == 1: input(cl.w("В прошлый раз Бог сказал чтобы ты не осквернял своей рожей святой храм")) input(cl.w("Но надо бы типа помолиться о прощении")) input(cl.g("\"Господи, Братан, прости грешника опять\".")) input(cl.b("Бог: \"Да блин, упорный чудак!\"")) input(cl.b("Ладно насылаю на тебя, типа, \"моё благославление\" снова")) meetGodImpl(self.person) else: input(cl.b("Бог: \"А ты опять.\"")) input(cl.b("Ну ладно насылаю на тебя \"благославление\"")) meetGodImpl(self.person) print(cl.b("А теперь проваливай!")) self.church_visited_ctr += 1
def __str__(self): result = cl.g("Ты {0} {1} уровня - {2}\n".format( str(self.person_type), str(self.level), self.levelStr())) result += cl.g("А зовут тебя: ") result += self.name result += "\n" result += cl.y( "Сейчас у тебя {0} опыта, а для прокачки надо {1}\n".format( self.skill, self.nextLevelSkill())) result += cl.w("Сл:") + self.eff_strength_s() + cl.w( " Лв:") + self.eff_agility_s() + cl.w( " Жв:") + self.eff_vitality_s() + cl.w( " Уд:") + self.eff_luck_s() + "\n" simple_artefacts_str = cl.w("Феньки:") simple_artefacts_count = 0 power_artefacts_str = cl.w("Мощные феньки:") power_artefacts_count = 0 for a in self.artefacts: if a.is_powerful: power_artefacts_count += 1 power_artefacts_str += cl.b(" {0}".format(str(a))) else: simple_artefacts_count += 1 simple_artefacts_str += cl.b(" {0}".format(str(a))) if simple_artefacts_count > 0: result += simple_artefacts_str result += "\n" if power_artefacts_count > 0: result += power_artefacts_str result += "\n" if self.mobile: result += cl.lb("У тебя есть мобильник\n") if self.sun_glass: result += cl.lb("У тебя есть тёмные очки\n") if self.tattoo: result += cl.lb("На тебе зоновская наколка\n") weaponstr = "Урон {0}-{1}".format(self.getMinStrike(), self.getMaxStrike()) if (len(self.weapons) > 0): weaponstr += " " for w in self.weapons: weaponstr += str(w) weaponstr += " " weaponstr = cl.lb(weaponstr) else: weaponstr = cl.w(weaponstr) weaponstr += "\n" result += weaponstr healthstr = "Здоровье {0}/{1}".format(self.current_health, self.getMaxHealth()) if self.jaw_shield: healthstr += cl.b(" Зубная защита") if self.broken_leg: healthstr += cl.r(" Сломана нога") if self.broken_jaw: healthstr += cl.r(" Сломана челюсть") healthstr += "\n" if self.current_health > (self.getMaxHealth() * 2 / 3): result += cl.g(healthstr) elif self.current_health > (self.getMaxHealth() * 1 / 3): result += cl.y(healthstr) else: result += cl.r(healthstr) strikes = self.getStrikesAccuracy() accstr = "" if len(strikes) == 1: accstr = "Точность {0}%\n".format(strikes[0]) elif len(strikes) == 2: accstr = "Точность 90%, Второй удар {0}%\n".format(strikes[1]) else: accstr = "Точность 90% - {1} ударов, Точность {2} удара {3}%\n".format( len(strikes) - 1, len(strikes), strikes[len(strikes) - 1]) result += cl.w(accstr) if (len(self.shields) > 0): shieldstr = "Броня {0}".format(self.shield) shieldstr += " " for s in self.shields: shieldstr += str(s) shieldstr += " " shieldstr += "\n" result += cl.w(shieldstr) if (self.pot > 0): result += cl.w("Косяки {0}\n".format(self.pot)) if self.beer > 0: result += cl.w("Пиво {0}л.\n".format(round(self.beer, 1))) else: result += cl.r("Пива нет\n") if self.money > 0: result += cl.w("Бабки {0}".format(self.money)) else: result += cl.r("Бабок нет") if self.stuff > 0: result += cl.w("\nХлам {0}".format(self.stuff)) return result
def walk(self): if self.state != GameLoop.STATE_WAIT_CMD: self.state = GameLoop.STATE_WAIT_CMD return self.person.step() if prob(1): self.meetGod() return if not self.rep_discovered: if prob(5): print(cl.lb("Ты спросил у прохожего где тут больница.")) self.rep_discovered = True if not self.trn_discovered: if prob(5): print(cl.lb("На стене реклама: \"Жизнь тяжела. Если не хочешь сдохнуть качайся!\".")) self.trn_discovered = True r = random.uniform(0, 100) if r < 5: if not self.evil_enemies: print(cl.y("Ты зашёл на тропинку где бродит искитимская гопота.")) self.evil_enemies = True else: print(cl.y("Ты вышел с тропинки.")) self.evil_enemies = True return if r < 60: print(cl.w("Ничё не происходит.")) return if r < 70: print(cl.w("Совсем ничё не происходит.")) return newenemy = self.generateEnemy() aggressive_types = [Type.POTSAN, Type.OTMOROZOK, Type.GOPNIK, Type.VOR] aggressive = random.choice([True, False]) and (newenemy.person_type in aggressive_types) if newenemy.person_type in [Type.POTSAN, Type.OTMOROZOK, Type.GOPNIK, Type.VOR, Type.DOHLAK, Type.NEFOR, Type.NARK]: aggressive_str = "" if aggressive: aggressive_str = ", ищущий кого отпинать" print(cl.y("Идёт {0} {1} уровня{2}. Хочешь наехать?").format(str(newenemy.person_type), str(newenemy.level), aggressive_str)) reply = input() if reply == "y": variants = [0, 1] v = random.choice(variants) if v == 0: print(cl.w("Слышь Вась..")) print(cl.r("А чё ваще?")) else: print(cl.r("Пацан ты из какого района?")) print(cl.w("А ты по пинкам суди!")) self.enemy = newenemy self.state = GameLoop.STATE_BATTLE_START return elif aggressive: found_threshold = 50 val = random.uniform(0, 100) if val > found_threshold: print(cl.r("Он тебя заметил.")) print(cl.r("Эй мудак?!")) self.enemy = newenemy self.state = GameLoop.STATE_BATTLE_START else: print(cl.g("Ты смылся.")) elif newenemy.person_type == Type.MENT: print(cl.y("Идёт ментяра {0} уровня гроза гопов.".format(str(newenemy.level)))) if self.person.sun_glass: print(cl.g("Ты напялил тёмные очки и мент не узнал твою рожу, которая висит на почётном стенде \"Разыскиваются за гопничество\"")) return found_threshold = 50 val = random.uniform(0, 100) if val > found_threshold: print(cl.r("Запалил!")) print(cl.r("Блин! это же ") + self.person.name + cl.r(" - известный {0}".format(str(self.person.person_type)))) self.enemy = newenemy self.state = GameLoop.STATE_BATTLE_START else: print(cl.g("Ты затаился, прикинулся не гопом... Мент вроде не заметил")) elif newenemy.person_type == Type.MANIAC: print(cl.y("Идёт Маньячок {0}, ищущий кого отпинать.".format(str(newenemy.level)))) found_threshold = 50 val = random.uniform(0, 100) if val > found_threshold: print(cl.r("Он тебя заметил.")) print(cl.r("Я МАНЬЯК!!!")) print(cl.w("Рад познакомиться - " + str(self.person.person_type))) self.enemy = newenemy self.state = GameLoop.STATE_BATTLE_START else: print(cl.g("Ты смылся."))
def rename(self): print(cl.g("Звали тебя: " + self.person.name)) name = input(cl.g("А теперь будут: ") + cl.w("")) if name != "": self.person.name = cl.w(name)