def createCharacter(name): global newPlayer newPlayer = Player.Player(name) newPlayer.equipt("Head", Items.Armour("Nothing", 0, "Head")) newPlayer.equipt("Chest", Items.Armour("Nothing", 0, "Chest")) newPlayer.equipt("Legs", Items.Armour("Nothing", 0, "Legs")) newPlayer.equipt("Left Hand", Items.Weapon(1, 5, "Fist")) newPlayer.equipt("Right Hand", Items.Weapon(1, 5, "Fist"))
def generateNewLevel(): global newMap global level level += 1 itemlevelmodifier = 1 + (level * 0.5) enemylevelmodifer = level * 2 itemSpawnRateModifier = 1 + (level * 0.1) enemySpawnRateModifer = 1 + (level * 0.3) UI.root.title("Dungeon Salvos | Level: {0}".format(level)) #Create the parameters for enemies, items here minEnemies = round(3 * enemySpawnRateModifer) maxEnemies = round(5 * enemySpawnRateModifer) numberOfEnemies = random.randint(minEnemies, maxEnemies) minItems = round(3 * itemSpawnRateModifier) maxItems = round(7 * itemSpawnRateModifier) numberOfItems = random.randint(minItems, maxItems) #global stat variables global enemiesStats global weapons global armour global consumables #Stores data of every enemy within the level global enemies enemies = [] newMap = Map.Map(40, 100, 10, 3, 4, 8) newMap.generateDungeon() placePlayer() #Create enemies and place them randomly for i in range(numberOfEnemies): randomEnemyIndex = random.randint(0, len(enemiesStats) - 1) enemyStats = enemiesStats[randomEnemyIndex] name = enemyStats[0] health = enemyStats[1] damage = enemyStats[2] graphic = enemyStats[3] health = round(health * enemylevelmodifer) damage = round(damage * enemylevelmodifer) print("Creating enemy {0}".format(name)) newEnemy = Enemy.Enemy(name, health, damage, graphic) emptyTile = newMap.getEmptyTile() newEnemy.setTile(newMap, emptyTile.x, emptyTile.y) enemies.append(newEnemy) for i in range(numberOfItems): itemTypeChance = random.randint(1, 5) itemRarity = random.randint( 1, 10 ) #60% chance of tier 1, 30% chance of tier 2, 10% chance of tier 3 if itemTypeChance == 5: #spawn consumable if itemRarity == 10: itemStats = consumables[2] elif itemRarity <= 6: itemStats = consumables[0] else: itemStats = consumables[1] name = itemStats[0] stat = itemStats[1] modifier = itemStats[2] modifier = round(modifier * itemlevelmodifier) item = Items.Consumable(name, stat, modifier) elif itemTypeChance <= 2: #spawn weapon if itemRarity == 10: itemStats = weapons[2] elif itemRarity <= 6: itemStats = weapons[0] else: itemStats = weapons[1] randomItem = random.randint(0, len(itemStats) - 1) itemStats = itemStats[randomItem] minDamage = itemStats[0] maxDamage = itemStats[1] name = itemStats[2] minDamage = round(minDamage * itemlevelmodifier) maxDamage = round(maxDamage * itemlevelmodifier) item = Items.Weapon(minDamage, maxDamage, name) else: #spawn armour if itemRarity == 10: itemStats = armour[2] elif itemRarity <= 6: itemStats = armour[0] else: itemStats = armour[1] randomItem = random.randint(0, len(itemStats) - 1) itemStats = itemStats[randomItem] name = itemStats[0] defence = itemStats[1] slot = itemStats[2] defence = round(defence * itemlevelmodifier) item = Items.Armour(name, defence, slot) emptyTile = newMap.getEmptyTile() emptyTile.entity = item