print('[help] for command list')
def help():
print("[inv] to open inventory")
print("[stats] to show player stats")
enemy = { #stats of the enemy (changes depending on monster type)
'health': 0,
'onfire': 0,
'stun': 0,
'atkblocked': False
}
player = { #stats of the player
'otherspells': [],
'combatspells': [],
'passivespells': [],
'health': 100,
'onfire': 0,
'protegocooldown': 0,
'incendiocooldown': 0,
}
game = { #game varables
'dooropen': False,
'stage': 0,
'light': False,
'allspells': ["alohomora", "stupefy", "incendio", "protego", "lumos", "episkey"], #all obtainable spells in the game
'spelltype': ["passive", 'combat', 'combat', 'combat', 'passive', 'other'] #type of spell corresponding to allspells index
}
#functions of all spells for easy casting
def alohomora(use):
global enemy
global player
global game
if 'alohomora' in player['combatspells']:
if use == "use":
if game['stage'] == 10: #change this to where the door is
game['doorlocked'] = False
else:
print("No door to unlock.")
elif use == 'stats':
print("Alohomora is a spell that unlocks doors. Cannot be used in battle.\n")
def stupefy(use):
global enemy
global player
global game
if 'stupefy' in player['combatspells']:
if use == 'use':
enemy['health'] -= 5
print("Dealed 5 damage using Stupefy.")
elif use == 'stats':
print("Stupefy is an attack spell, only useable in combat. Deals 5 damage, no cooldown.\n")
def protego(use):
global enemy
global player
global game
if 'protego' in player['combatspells']:
if use == 'use':
if player['protegocooldown'] == 0: #check cooldown
enemy['atkblocked'] = True #variable to check if protego has been sucecssfully casted
print("BLOCKED\n")
else:
print("Protego on cooldown. {} turns remaining.".format(player['protegocooldown']))
def incendio(use):
global enemy
global player
global game
if 'incendio' in player['combatspells']:
if use == 'use':
if player['incendiocooldown'] == 0: #check cooldown
enemy['health'] -= 8
print("Dealed 8 damage using Incendio. Enemy burning for 2 rounds.")
player['incendiocooldown'] += 3
else:
print("Incendio on cooldown. {} turns remaining.".format(player['incendiocooldown']))
def lumos(use):
global enemy
global player
global game
if 'lumos' in player['passivespells']:
if use == 'use':
if game['stage'] == 16: #change this to whatever stage uses lumos
game['light'] == True #variable to check if lumos has been sucecssfully casted
else:
print("Lumos has no use here.")
elif use == 'stats':
print("Lumos casts light into the dark, letting you see. Cannot be used in combat.")
def newspell(spell):
global enemy
global player
global game
if spell in game['allspells']:
spellindex = game['allspells'].index(spell)
spelltype = game['spelltype'][spellindex]
if spelltype == 'combat':
player['combatspells'].append(spell)
elif spelltype == 'passive':
player['passivespells'].append(spell)
elif spelltype == 'other':
player['otherspells'].append(spell)
else:
print("spell not found")
print(spell, 'added to inventory.\n')
cHJpbnQoJ1toZWxwXSBmb3IgY29tbWFuZCBsaXN0JykKZGVmIGhlbHAoKToKICAgIHByaW50KCJbaW52XSB0byBvcGVuIGludmVudG9yeSIpCiAgICBwcmludCgiW3N0YXRzXSB0byBzaG93IHBsYXllciBzdGF0cyIpCgoKIAoKZW5lbXkgPSB7ICNzdGF0cyBvZiB0aGUgZW5lbXkgKGNoYW5nZXMgZGVwZW5kaW5nIG9uIG1vbnN0ZXIgdHlwZSkKICAgICdoZWFsdGgnOiAwLAogICAgJ29uZmlyZSc6IDAsCiAgICAnc3R1bic6IDAsCiAgICAnYXRrYmxvY2tlZCc6IEZhbHNlCn0KCgoKCnBsYXllciA9IHsgI3N0YXRzIG9mIHRoZSBwbGF5ZXIKICAgICdvdGhlcnNwZWxscyc6IFtdLAogICAgJ2NvbWJhdHNwZWxscyc6IFtdLAogICAgJ3Bhc3NpdmVzcGVsbHMnOiBbXSwKICAgICdoZWFsdGgnOiAxMDAsCiAgICAnb25maXJlJzogMCwKICAgICdwcm90ZWdvY29vbGRvd24nOiAwLAogICAgJ2luY2VuZGlvY29vbGRvd24nOiAwLAp9CgpnYW1lID0geyAjZ2FtZSB2YXJhYmxlcwogICAgJ2Rvb3JvcGVuJzogRmFsc2UsCiAgICAnc3RhZ2UnOiAwLAogICAgJ2xpZ2h0JzogRmFsc2UsCiAgICAnYWxsc3BlbGxzJzogWyJhbG9ob21vcmEiLCAic3R1cGVmeSIsICJpbmNlbmRpbyIsICJwcm90ZWdvIiwgImx1bW9zIiwgImVwaXNrZXkiXSwgI2FsbCBvYnRhaW5hYmxlIHNwZWxscyBpbiB0aGUgZ2FtZQogICAgJ3NwZWxsdHlwZSc6IFsicGFzc2l2ZSIsICdjb21iYXQnLCAnY29tYmF0JywgJ2NvbWJhdCcsICdwYXNzaXZlJywgJ290aGVyJ10gI3R5cGUgb2Ygc3BlbGwgY29ycmVzcG9uZGluZyB0byBhbGxzcGVsbHMgaW5kZXgKfQoKI2Z1bmN0aW9ucyBvZiBhbGwgc3BlbGxzIGZvciBlYXN5IGNhc3RpbmcKCmRlZiBhbG9ob21vcmEodXNlKTogCiAgICBnbG9iYWwgZW5lbXkKICAgIGdsb2JhbCBwbGF5ZXIKICAgIGdsb2JhbCBnYW1lCiAgICBpZiAnYWxvaG9tb3JhJyBpbiBwbGF5ZXJbJ2NvbWJhdHNwZWxscyddOgogICAgICAgICAgICAKICAgICAgICBpZiB1c2UgPT0gInVzZSI6CiAgICAgICAgICAgIGlmIGdhbWVbJ3N0YWdlJ10gPT0gMTA6ICNjaGFuZ2UgdGhpcyB0byB3aGVyZSB0aGUgZG9vciBpcwogICAgICAgICAgICAgICAgZ2FtZVsnZG9vcmxvY2tlZCddID0gRmFsc2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByaW50KCJObyBkb29yIHRvIHVubG9jay4iKQogICAgICAgIGVsaWYgdXNlID09ICdzdGF0cyc6CiAgICAgICAgICAgIHByaW50KCJBbG9ob21vcmEgaXMgYSBzcGVsbCB0aGF0IHVubG9ja3MgZG9vcnMuIENhbm5vdCBiZSB1c2VkIGluIGJhdHRsZS5cbiIpCgogICAgCmRlZiBzdHVwZWZ5KHVzZSk6CiAgICBnbG9iYWwgZW5lbXkKICAgIGdsb2JhbCBwbGF5ZXIKICAgIGdsb2JhbCBnYW1lCiAgICBpZiAnc3R1cGVmeScgaW4gcGxheWVyWydjb21iYXRzcGVsbHMnXToKICAgICAgICAgICAgCiAgICAgICAgaWYgdXNlID09ICd1c2UnOgogICAgICAgICAgICBlbmVteVsnaGVhbHRoJ10gLT0gNQogICAgICAgICAgICBwcmludCgiRGVhbGVkIDUgZGFtYWdlIHVzaW5nIFN0dXBlZnkuIikKCiAgICAgICAgZWxpZiB1c2UgPT0gJ3N0YXRzJzoKICAgICAgICAgICAgcHJpbnQoIlN0dXBlZnkgaXMgYW4gYXR0YWNrIHNwZWxsLCBvbmx5IHVzZWFibGUgaW4gY29tYmF0LiBEZWFscyA1IGRhbWFnZSwgbm8gY29vbGRvd24uXG4iKQogICAgCmRlZiBwcm90ZWdvKHVzZSk6CiAgICBnbG9iYWwgZW5lbXkKICAgIGdsb2JhbCBwbGF5ZXIKICAgIGdsb2JhbCBnYW1lCiAgICBpZiAncHJvdGVnbycgaW4gcGxheWVyWydjb21iYXRzcGVsbHMnXToKICAgICAgICAKICAgICAgICBpZiB1c2UgPT0gJ3VzZSc6CiAgICAgICAgICAgIGlmIHBsYXllclsncHJvdGVnb2Nvb2xkb3duJ10gPT0gMDogI2NoZWNrIGNvb2xkb3duCiAgICAgICAgICAgICAgICBlbmVteVsnYXRrYmxvY2tlZCddID0gVHJ1ZSAjdmFyaWFibGUgdG8gY2hlY2sgaWYgcHJvdGVnbyBoYXMgYmVlbiBzdWNlY3NzZnVsbHkgY2FzdGVkCiAgICAgICAgICAgICAgICBwcmludCgiQkxPQ0tFRFxuIikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByaW50KCJQcm90ZWdvIG9uIGNvb2xkb3duLiB7fSB0dXJucyByZW1haW5pbmcuIi5mb3JtYXQocGxheWVyWydwcm90ZWdvY29vbGRvd24nXSkpIAoKZGVmIGluY2VuZGlvKHVzZSk6CiAgICBnbG9iYWwgZW5lbXkKICAgIGdsb2JhbCBwbGF5ZXIKICAgIGdsb2JhbCBnYW1lCiAgICBpZiAnaW5jZW5kaW8nIGluIHBsYXllclsnY29tYmF0c3BlbGxzJ106CgogICAgICAgIGlmIHVzZSA9PSAndXNlJzoKICAgICAgICAgICAgaWYgcGxheWVyWydpbmNlbmRpb2Nvb2xkb3duJ10gPT0gMDogI2NoZWNrIGNvb2xkb3duCiAgICAgICAgICAgICAgICBlbmVteVsnaGVhbHRoJ10gLT0gOAogICAgICAgICAgICAgICAgcHJpbnQoIkRlYWxlZCA4IGRhbWFnZSB1c2luZyBJbmNlbmRpby4gRW5lbXkgYnVybmluZyBmb3IgMiByb3VuZHMuIikKICAgICAgICAgICAgICAgIHBsYXllclsnaW5jZW5kaW9jb29sZG93biddICs9IDMKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByaW50KCJJbmNlbmRpbyBvbiBjb29sZG93bi4ge30gdHVybnMgcmVtYWluaW5nLiIuZm9ybWF0KHBsYXllclsnaW5jZW5kaW9jb29sZG93biddKSkKCmRlZiBsdW1vcyh1c2UpOgogICAgZ2xvYmFsIGVuZW15CiAgICBnbG9iYWwgcGxheWVyCiAgICBnbG9iYWwgZ2FtZQoKICAgIGlmICdsdW1vcycgaW4gcGxheWVyWydwYXNzaXZlc3BlbGxzJ106CiAgICAgICAgaWYgdXNlID09ICd1c2UnOgogICAgICAgICAgICBpZiBnYW1lWydzdGFnZSddID09IDE2OiAjY2hhbmdlIHRoaXMgdG8gd2hhdGV2ZXIgc3RhZ2UgdXNlcyBsdW1vcwogICAgICAgICAgICAgICAgZ2FtZVsnbGlnaHQnXSA9PSBUcnVlICN2YXJpYWJsZSB0byBjaGVjayBpZiBsdW1vcyBoYXMgYmVlbiBzdWNlY3NzZnVsbHkgY2FzdGVkCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmludCgiTHVtb3MgaGFzIG5vIHVzZSBoZXJlLiIpCiAgICAgICAgZWxpZiB1c2UgPT0gJ3N0YXRzJzoKICAgICAgICAgICAgcHJpbnQoIkx1bW9zIGNhc3RzIGxpZ2h0IGludG8gdGhlIGRhcmssIGxldHRpbmcgeW91IHNlZS4gQ2Fubm90IGJlIHVzZWQgaW4gY29tYmF0LiIpCgogICAgCgpkZWYgbmV3c3BlbGwoc3BlbGwpOgogICAgZ2xvYmFsIGVuZW15CiAgICBnbG9iYWwgcGxheWVyCiAgICBnbG9iYWwgZ2FtZQoKICAgIGlmIHNwZWxsIGluIGdhbWVbJ2FsbHNwZWxscyddOgogICAgICAgIHNwZWxsaW5kZXggPSBnYW1lWydhbGxzcGVsbHMnXS5pbmRleChzcGVsbCkKICAgICAgICBzcGVsbHR5cGUgPSBnYW1lWydzcGVsbHR5cGUnXVtzcGVsbGluZGV4XQogICAgICAgIGlmIHNwZWxsdHlwZSA9PSAnY29tYmF0JzoKICAgICAgICAgICAgcGxheWVyWydjb21iYXRzcGVsbHMnXS5hcHBlbmQoc3BlbGwpCiAgICAgICAgZWxpZiBzcGVsbHR5cGUgPT0gJ3Bhc3NpdmUnOgogICAgICAgICAgICBwbGF5ZXJbJ3Bhc3NpdmVzcGVsbHMnXS5hcHBlbmQoc3BlbGwpCiAgICAgICAgZWxpZiBzcGVsbHR5cGUgPT0gJ290aGVyJzoKICAgICAgICAgICAgcGxheWVyWydvdGhlcnNwZWxscyddLmFwcGVuZChzcGVsbCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcmludCgic3BlbGwgbm90IGZvdW5kIikKICAgICAgICBwcmludChzcGVsbCwgJ2FkZGVkIHRvIGludmVudG9yeS5cbicpCgogICAgCgoKCgoKICAgICAgICAgICAgCgoKCg==