def orc(point=None, dungeon_level=1): #create an orc health_component = Health(20) ai_component = BasicNPC() npc = Character(point, 'O', 'orc', COLORS.get('orc'), ai=ai_component, species=Species.ORC, health=health_component, act_energy=5) npc.add_component(Offence(base_power=10), 'offence') npc.add_component(Defence(defence=4), 'defence') npc.add_component(Level(xp_value=10), 'level') npc.movement.routing_avoid.extend(npc_avoid) item = equipment.create_weapon('shortsword') item.lootable = False npc.inventory.add_item(item) npc.equipment.toggle_equip(item) return npc
def goblin(point=None, dungeon_level=1): #create a goblin health_component = Health(20) ai_component = BasicNPC() npc = Character(point, 'G', 'goblin', COLORS.get('goblin'), ai=ai_component, species=Species.GOBLIN, health=health_component, act_energy=5) npc.add_component(Offence(base_power=5), 'offence') npc.add_component(Defence(defence=5), 'defence') npc.add_component(Level(xp_value=10), 'level') npc.movement.routing_avoid.extend(npc_avoid) dagger = equipment.create_weapon('dagger') dagger.lootable = False npc.inventory.add_item(dagger) npc.equipment.toggle_equip(dagger) pubsub.pubsub.subscribe( pubsub.Subscription(npc, pubsub.PubSubTypes.DEATH, goblin_observed_death)) return npc
def troll(point=None, dungeon_level=1): #create a troll health_component = Health(30) ai_component = BasicNPC() npc = Character(point, 'T', 'troll', COLORS.get('troll'), ai=ai_component, species=Species.TROLL, health=health_component, act_energy=6) npc.add_component(Offence(base_power=12), 'offence') npc.add_component(Defence(defence=8), 'defence') npc.add_component(Level(xp_value=10), 'level') regen = Regeneration() npc.add_component(regen, 'regeneration') npc.add_component(DamageModifier(fire=1.5), 'damagemodifier') regen.start() npc.movement.routing_avoid.extend(npc_avoid) item = None dice = randint(1, 100) if dice > 75: item = equipment.create_weapon('heavy mace') equipment.add_smashing(item) else: item = equipment.create_weapon('longsword') item.lootable = False npc.inventory.add_item(item) npc.equipment.toggle_equip(item) return npc
def warlord(point=None, dungeon_level=1): #create a warlord ai_component = WarlordNPC() health_component = Health(50) npc = Character(point, 'W', 'Warlord', COLORS.get('warlord'), ai=ai_component, species=Species.ORC, death=WarlordDeath(), health=health_component) npc.add_component(Offence(base_power=10), 'offence') npc.add_component(Defence(defence=4), 'defence') npc.add_component(Level(xp_value=10), 'level') npc.movement.routing_avoid.extend(npc_avoid) npc_level = (dungeon_level - 1) + randint(-1, 1) if npc_level > 1: npc.level.random_level_up(npc_level - 1) item = equipment.create_weapon('longsword') item.base_name = item.base_name + " of I'll F*****G Have You" item.color = COLORS.get('equipment_epic') item.equippable.power = item.equippable.power * 2 npc.inventory.add_item(item) npc.equipment.toggle_equip(item) shield = equipment.create_armour('steel shield') shield.base_name = shield.base_name + " of Hide and Seek" shield.color = COLORS.get('equipment_epic') shield.equippable.power = item.equippable.defence * 2 npc.inventory.add_item(shield) npc.equipment.toggle_equip(shield) breastplate = equipment.create_armour('breastplate') breastplate.base_name = breastplate.base_name + " of Rebounding" breastplate.color = COLORS.get('equipment_epic') breastplate.equippable.power = item.equippable.defence * 2 npc.inventory.add_item(breastplate) npc.equipment.toggle_equip(breastplate) return npc
def convert_to_archer(npc): bow = equipment.create_weapon('short bow') npc.inventory.add_item(bow) npc.equipment.toggle_equip(bow) npc.base_name = f"Archer {npc.base_name}" npc.add_component(ArcherNPC(bow.equippable.reach - 1), 'ai')
def create_player(): #create object representing the player health_component = Health(30) player = Character(None, '@', 'player', COLORS.get('player'), death=PlayerDeath(), health=health_component, species=Species.PLAYER, act_energy=4) player.add_component(Offence(base_power=6), 'offence') player.add_component(Defence(defence=6), 'defence') player.add_component(Level(), 'level') player.add_component(FOV(), 'fov') #initial equipment: a dagger dagger = equipment.create_weapon('dagger') player.inventory.add_item(dagger) player.equipment.toggle_equip(dagger) armour = equipment.create_armour('leather shirt') player.inventory.add_item(armour) player.equipment.toggle_equip(armour) if CONFIG.get('debug'): player.level.random_level_up(30) weapon = equipment.random_magic_weapon() player.inventory.add_item(weapon) player.equipment.toggle_equip(weapon) armour = equipment.random_armour() #equipment.add_damage_aura(armour) player.inventory.add_item(armour) player.equipment.toggle_equip(armour) ring = equipment.random_ring() player.inventory.add_item(ring) player.equipment.toggle_equip(ring) potion = equipment.healing_potion() player.inventory.add_item(potion) potion2 = equipment.power_potion() potion2.identifiable.identified = True player.inventory.add_item(potion2) potion3 = equipment.defence_potion() potion3.identifiable.identified = True player.inventory.add_item(potion3) potion4 = equipment.speed_potion() potion4.identifiable.identified = True player.inventory.add_item(potion4) scroll1 = equipment.lighting_scroll() scroll1.identifiable.identified = True player.inventory.add_item(scroll1) scroll2 = equipment.fireball_scroll() scroll2.identifiable.identified = True player.inventory.add_item(scroll2) scroll3 = equipment.confusion_scroll() scroll3.identifiable.identified = True player.inventory.add_item(scroll3) scroll4 = equipment.identify_scroll() scroll4.identifiable.identified = True player.inventory.add_item(scroll4) scroll5 = equipment.speed_scroll() scroll5.identifiable.identified = True player.inventory.add_item(scroll5) scroll6 = equipment.teleport_scroll() scroll6.identifiable.identified = True player.inventory.add_item(scroll6) scroll7 = equipment.map_scroll() scroll7.identifiable.identified = True player.inventory.add_item(scroll7) scroll8 = equipment.chain_lightning_scroll() scroll8.identifiable.identified = True player.inventory.add_item(scroll8) pubsub.pubsub.subscribe( pubsub.Subscription(player, pubsub.PubSubTypes.EARNEDXP, earn_quest_xp)) return player