def __init__(self, name="Mr. Swagger"): self.name = name self.hp = 20 self.maxHP = self.hp self.lvl = 100 self.xp = 0 self.lvlup = 1 self.money = 20 self.effects = [] self.defence = 0 self.attack = 0 self.reach = 2 self.view = 5 self.maxInv = 15 # Add a couple of test items to the player's inventory self.inv = [item(0,0,"h","Noob Helmet","It is a starter's helmet.","head",1,[]), item(0,0,"c","Noob Chest Plate","It is a starter's chest plate.","body",3,[]), item(0,0,"l","Noob Pants","It is a pair of starter's pants.","legs",2,[ExtraPocketsEffect, LargePocketsEffect]), item(0,0,"f","Noob Boots","It is a pair of starter's boots.","feet",1,[]), item(0,0,"s","Noob Sword","It is a starter's sword.","weapon",3,[]), item(0,0,"s","Wooden Stick","A very sturdy stick covered in bark that can be used as a weapon.","weapon",1,[]), item(0,0,"f","Apple","It is a beautifully red apple. It looks like it would get rid of hunger.","healing",1,[])] # This equips the weapons and armor to the player. self.inv[0].equipped=True self.inv[1].equipped=True self.inv[2].equipped=True self.inv[3].equipped=True self.inv[4].equipped=True self.equipped = {"head":self.inv[0], "body":self.inv[1], "legs":self.inv[2], "feet":self.inv[3], "weapon":self.inv[4]} self.achievements = [] # This currently is not used, but is in place for later. self.maxHunger = 10 self.hunger = self.maxHunger self.hungerTimerCountDown = 50 self.hTimer = 0 self.moved = False self.fighting = False self.x = 0 self.y = 0 self.ax = 0 self.ay = 0 self.wx = 1 self.wy = 1
def __init__(self,x=0,y=0,n="Enemy Name",desc="An evil creature.",lev=1,hp=3): self.name = n self.lvl = lev self.hp = hp self.desc = desc self.icon ="E" self.inv = [] self.weapon = item(0,0,"s","Enemy Sword","It is a sword that is usually used by evil creatures.","weapon",1) self.xp = int( (0.0+self.lvl) * self.weapon.damage / 2 + 0.5) self.x = x self.y = y self.attack = False
def generateNewConsumable(self,itemType=-1,rarity=-1,playerLevel=-1): newItem = item(0,0,"c","ConsumableTest","Description for consumable test.","healing") if not rarity == -1: r = self.rarity[rarity] # This runs if there is not a rarity specified # It will generate a rarity based on a random number generator else: if playerLevel >= 25: num = random.randint(0+int(playerLevel/2),255) elif playerLevel >= 20: num = random.randint(0+int(playerLevel/2),245) elif playerLevel >= 10: num = random.randint(0+int(playerLevel/2),240) elif playerLevel >= 5: num = random.randint(0+int(playerLevel/2),220) else: num = random.randint(0+int(playerLevel/2),210) rares = [] for rare in self.rarity: if self.rarity[rare][1] <= num <= self.rarity[rare][2] and playerLevel>=self.rarity[rare][0]: rares.append(rare) num = random.randint(0,len(rares)-1) rarity = rares[num] r = self.rarity[rarity] newItem.rarity = rarity if itemType == -1: n = random.randint(0,3) if n == 0 or n == 1: itemType = "Neutral" elif n == 2: itemType = "Good" else: itemType = "Bad" newItem.name = random.choice(open(self.folder + self.consumable[itemType][0]).read().splitlines()) newItem.desc = random.choice(open(self.folder + self.consumable[itemType][1]).read().splitlines()) newItem.desc = newItem.desc.replace("<itemType>",itemType) newItem.desc = newItem.desc.replace("<itemName>",newItem.name) return newItem
def generateNewWeapon(self,race=-1,playerLevel=-1,rarity=-1, inv=[]): log("Generating new weapon...") # Create a new item with some pre-setup stats. newItem = item(0,0,"w","Weapon Generation Test","This is being used as a weapon generation test for the game.","weapon") # Item generation code: # Choose a minimum playerlevel if one not decided: log("Setting item level...") if playerLevel == -1: playerLevel = random.randint(1,20) # with 20 being max so that it does not generate something with level 100 or something else: playerLevel = playerLevel + random.randint(0,2) - 1 log("Player level: %d" % (playerLevel)) # This chooses a rarity to use. # This code runs if there is a rarity already specified log("Setting item rarity...") if not rarity == -1: r = self.rarity[rarity] # This runs if there is not a rarity specified else: if playerLevel >= 25: num = random.randint(0+int(playerLevel/2),255) elif playerLevel >= 20: num = random.randint(0+int(playerLevel/2),245) elif playerLevel >= 10: num = random.randint(0+int(playerLevel/2),240) elif playerLevel >= 5: num = random.randint(0+int(playerLevel/2),220) else: num = random.randint(0+int(playerLevel/2),210) rares = [] for rare in self.rarity: if self.rarity[rare][1] <= num <= self.rarity[rare][2] and playerLevel>=self.rarity[rare][0]: rares.append(rare) num = random.randint(0,len(rares)-1) rarity = rares[num] r = self.rarity[rarity] newItem.rarity = rarity log("Item worth: %s" % (rarity)) worth = random.randint(int(playerLevel*self.rarity[rarity][3]/2),playerLevel*self.rarity[rarity][3]) log("Item worth: %d" % (worth)) log("Setting item effects and damage.") while worth >= 0: if worth > 30 and len(newItem.effects) < 3: if random.choice([True, False, False, False, False]): log("Generating item effect.") newEffect = itemEffect() n = random.randint(0,0) if n == 0: newEffect.effect = "DamageInstant" newEffect.name = random.choice(open(self.folder + self.effects["weapons"][0] + self.effects["weapons"][1+n]).read().splitlines()) newEffect.desc = newEffect.name.split("|")[1] newEffect.name = newEffect.name.split("|")[0] newEffect.effectStrength = random.randint(1,int((worth-30)/3 + 1)) newEffect.worth = 30 + ((newEffect.effectStrength-1) * 3) # Issue #10 happens here. newItem.effects.append(newEffect) worth -= newItem.effects[len(newItem.effects)-1].worth for i in inv: if i.iType == "weapon": log(str(i)) else: d = random.randint(1,int(worth)/4+1) newItem.damage += d worth -= (3+random.randint(0,1)) * d else: newItem.damage += 1 worth -= 3+random.randint(0,1) # This sets up the weapons race if there is not one specified if race == -1: race = random.choice(self.weaponRaces.keys()) log("Item race: %s" % (race)) # This sets the weapon type which will be used later. wepType = random.choice(open(self.folder + self.weaponRaces[race][1]).read().splitlines()) newItem.weaponType = wepType newItem.icon = wepType[0] log("Setting item name and description.") # This generates the item based on its rarity that was decided above if rarity == "Very Common" or rarity == "Common" or rarity == "Uncommon": newItem.name = "%s" % (wepType) elif rarity == "Rare" or rarity == "Exotic": newItem.name = "%s %s" % (random.choice(open(self.folder + self.weaponRaces[race][0]).read().splitlines()), wepType) elif rarity == "Legendary" or rarity == "Ascendent": newItem.name = "%s %s %s" % (random.choice(open(self.folder + self.weaponRaces[race][0]).read().splitlines()), wepType, random.choice(open(self.folder + self.weaponRaces[race][2]).read().splitlines())) elif rarity == "Godly": newItem.name = "%s %s %s" % (random.choice(open(self.folder + self.weaponRaces[race][0]).read().splitlines()), wepType, random.choice(open(self.folder + self.weaponRaces[race][2]).read().splitlines())) # You can use <weptype> and <wepname> to make descriptions more dynamic newItem.desc = random.choice(open(self.folder+self.weaponRaces[race][3]).read().splitlines()) for e in newItem.effects: newItem.desc = newItem.desc + e.desc newItem.desc = newItem.desc.replace("<weptype>",newItem.weaponType) newItem.desc = newItem.desc.replace("<wepname>",newItem.name) # Returns the new item to whatever called for it. log("Returning item.") return newItem
def generateNewArmor(self,armorType=-1,race=-1,playerLevel=-1,rarity=-1): # If there is no armor type specified: if armorType == -1: a = random.randint(0,3) # This is set to 1,1 so that only body armor will spawn if a == 0: armorType = "head" elif a == 1: armorType = "body" elif a == 2: armorType = "legs" elif a == 3: armorType = "feet" # Create a new item with some pre-setup stats. newItem = item(0,0,armorType[0],"Armor Generation Test","This is being used as an armor generation test for the game.",armorType) if armorType == "head": fileNum = 1 elif armorType == "body": fileNum = 2 elif armorType == "legs": fileNum = 3 elif armorType == "feet": fileNum = 4 # Item generation code: # Choose a minimum playerlevel if one not decided: if playerLevel == -1: playerLevel = random.randint(1,20) # with 20 being max so that it does not generate something with level 100 or something else: playerLevel = playerLevel + random.randint(0,2) - 1 # This chooses a rarity to use. # This code runs if there is a rarity already specified if not rarity == -1: r = self.rarity[rarity] # This runs if there is not a rarity specified # It will generate a rarity based on a random number generator else: if playerLevel >= 25: num = random.randint(0+int(playerLevel/2),255) elif playerLevel >= 20: num = random.randint(0+int(playerLevel/2),245) elif playerLevel >= 10: num = random.randint(0+int(playerLevel/2),240) elif playerLevel >= 5: num = random.randint(0+int(playerLevel/2),220) else: num = random.randint(0+int(playerLevel/2),210) rares = [] for rare in self.rarity: if self.rarity[rare][1] <= num <= self.rarity[rare][2] and playerLevel>=self.rarity[rare][0]: rares.append(rare) num = random.randint(0,len(rares)-1) rarity = rares[num] r = self.rarity[rarity] newItem.rarity = rarity # This sets up the weapons race if there is not one specified if race == -1: race = random.choice(self.armorRaces.keys()) # This sets the weapon type which will be used later. armType = random.choice(open(self.folder + self.armorRaces[race][fileNum]).read().splitlines()) newItem.armorType = armType # This generates the item based on its rarity that was decided above if rarity == "Very Common" or rarity == "Common" or rarity == "Uncommon": newItem.name = "%s" % (armType) elif rarity == "Rare" or rarity == "Exotic": newItem.name = "%s %s" % (random.choice(open(self.folder + self.armorRaces[race][0]).read().splitlines()), armType) elif rarity == "Legendary" or rarity == "Ascendent": newItem.name = "%s %s %s" % (random.choice(open(self.folder + self.armorRaces[race][0]).read().splitlines()), armType, random.choice(open(self.folder + self.armorRaces[race][7]).read().splitlines())) elif rarity == "Godly": newItem.name = "%s %s %s %s" % (random.choice(open(self.folder + self.armorRaces[race][0]).read().splitlines()), random.choice(open(self.folder + self.armorRaces[race][0]).read().splitlines()), armType, random.choice(open(self.folder + self.armorRaces[race][7]).read().splitlines())) # You can use <weptype> and <wepname> to make descriptions more dynamic newItem.desc = random.choice(open(self.folder+self.armorRaces[race][6]).read().splitlines()) newItem.desc = newItem.desc.replace("<armType>",armType) newItem.desc = newItem.desc.replace("<itype>",newItem.iType) # Returns the new item to whatever called for it. return newItem