def __init__(self, id_, class_, class_data, model, y_positions, enemy_handler): Unit.__init__(self, "enemy_" + str(id_), class_, class_data) self.transport_snd = None self._move_int = None self._rb_node = None self._tooltip = "Skinhead - " + self.class_ self._y_positions = y_positions self._y_pos = take_random(self._y_positions) self._x_range = (-0.3, 0.4) if self.class_data["part"] == "side" else (0.6, 1.3) self.node = render.attachNewNode(self.id + "_node") # noqa: F821 self.node.setPos(self._io_dist, -7, 0) self.model = model self.model.pose("ride", 1) self.model.reparentTo(self.node) # organize movement and aiming tasks time_to_overtake = random.randint(33, 50) self._move(time_to_overtake, (self._y_pos, random.uniform(*self._x_range), 0)) taskMgr.doMethodLater( # noqa: F821 time_to_overtake + 2, self._float_move, self.id + "_float_move" )
def _die(self): """Character death sequence. Stop all the character's tasks, play death animation and plan the character object clearing. """ if self._team.hold_together: self.health = 1 return False if not Shooter._die(self): return False Unit._die(self) if base.common_ctrl.chosen_char == self: # noqa: F821 base.common_ctrl.deselect(clear_resting=False) # noqa: F821 self._health_bar.hide_health() self._stop_tasks( "_reduce_energy", "_get_well", "_infect", "_stop_stimul", "_gain_energy" ) base.char_gui.destroy_char_button(self.id) # noqa: F821 self._team.delete_relations(self.id) LerpAnimInterval(self.model, 0.3, "stand_and_aim", "die").start() LerpAnimInterval(self.model, 0.3, self._current_anim, "die").start() self.model.hprInterval(1, (self.current_part.angle, 0, 0)).start() self.model.play("die") self._die_snd.play() taskMgr.doMethodLater(3, self._hide, self.id + "_hide") # noqa: F821
def __init__(self, name='SpellCaster', hit_points_limit=80, mana_limit=100): Unit.__init__(self, name, hit_points_limit) self.mana = mana_limit self.mana_limit = mana_limit self.is_battle_mage = False self.spellbook = {}
def get_damage(self, damage): """Take damage points and change model color. The more damage the unit taken the more red it'll be. Args: damage (int): Damage points to get. """ Unit.get_damage(self, damage) self.model.setColorScale(self.model.getColorScale()[0] + 0.018, 1, 1, 1)
def get_damage(self, damage): """Getting damage. Args: damage (int): Damage points to get. """ if base.labels.TRAITS[2][0] in self.traits: # noqa: F821 # Masochism self.energy += 1 Unit.get_damage(self, damage)
def __init__(self, title, hit_points_limit, damage, mana_limit, spell=Lightning()): Unit.__init__(self, title, hit_points_limit, damage) self._magic_state = MagicState(title, hit_points_limit, damage, mana_limit) self._spell = spell self._magic_abilitiy = MagicAbilitiy(self, self._spell) self._spell_book = SpellBook(self._spell)
def __init__(self, id_, name, class_, sex, team, desc=None): Unit.__init__( self, "character_" + str(id_), class_, CLASSES[sex + "_" + class_] ) Shooter.__init__(self) self._team = team self._current_pos = None self._current_anim = None self._idle_seq = None self._cohesion_ball = None self._is_stunned = False self._is_stimulated = False self._health_bar = None self.inhale = 15 self.damage_range = [5, 8] self.clear_damage = [5, 8] self.effects = {} self._yeah_snds = [] self.name = name self.sex = sex if sex == "male": self.heshe = base.labels.PRONOUNS[0] # noqa: F821 self.hisher = base.labels.PRONOUNS[1] # noqa: F821 self.himher = base.labels.PRONOUNS[2] # noqa: F821 else: self.heshe = base.labels.PRONOUNS[3] # noqa: F821 self.hisher = base.labels.PRONOUNS[4] # noqa: F821 self.himher = base.labels.PRONOUNS[5] # noqa: F821 if desc: self._energy = desc["energy"] self.is_diseased = desc["is_diseased"] self.get_well_score = desc["get_well_score"] self.traits = desc["traits"] self.disabled_traits = desc["disabled_traits"] if self.is_diseased: taskMgr.doMethodLater( # noqa: F821 60, self.get_well, self.id + "_get_well" ) else: self._energy = 100 self.is_diseased = False self.get_well_score = 0 self.disabled_traits = [] self.traits = [] traits = copy.copy(base.labels.TRAITS) # noqa: F821 for _ in range(random.randint(0, 2)): self.traits.append(random.choice(take_random(traits)))
def _die(self): """Make this enemy unit die. Play death sequence of movements and sounds, stop all the tasks for this enemy, plan clearing. Returns: bool: True, if the unit dies for the first time. """ if not Unit._die(self): return False self.model.setColorScale(1, 1, 1, 1) self._stop_tasks("_float_move") self._move_int.pause() self.model.play("die") if self.id in base.world.enemy.active_units: # noqa: F821 base.world.enemy.active_units.pop(self.id) # noqa: F821 if self.current_part: self.current_part.enemies.remove(self) self._explode() self.transport_snd.stop() self._y_positions.append(self._y_pos) base.add_head(self.class_data["class"].__name__) # noqa: F821 return True
import sys import os sys.path.append(os.path.abspath('..')) from units.unitcollection import UnitCollection from units.unit import Unit unit1 = Unit(60, os.path.join('..', 'images', 'units', 'fighter.png')) unit2 = Unit(60, os.path.join('..', 'images', 'units', 'gtk3-demo.png')) unit3 = Unit(60, os.path.join('..', 'images', 'units', 'fighter.png')) units = UnitCollection() units.addUnit(unit1, (0, 3)) units.addUnit(unit2, (2, 2)) try: units.addUnit(unit1, (1, 5)) print('failed to fail') except: print('successfully failed') try: units.addUnit(unit3, (2, 2)) print('failed to fail') except: print('successfully failed') units.addUnit(unit3, (1, 2)) try: units.moveUnit(unit3, (-1, 1))
def __repr__(self): if self.title == 'Vampire' or 'Werewolf' or 'Wolf': return Unit.__repr__(self) return Unit.__repr__(self) + 'Mana: %d\n' % (self._magic_state.mana)
def __init__(self, title='Vampire', hit_points_limit=130, damage=60): Unit.__init__(self, title, hit_points_limit, damage) self._vampire_abilitiy = VampireAbilitiy(self)
def __init__(self, coords, size): Unit.__init__(self, coords, size) self.timer = Timer() self.legs_are_open = True
def __str__(self): return '{0}\nMana[{1}/{2}] {3} > has in Spellbook:\n{4}'.format( Unit.__str__(self), self.mana, self.mana_limit, (' battle mage' if self.is_battle_mage else ' healer'), self.show_spellbook())
def __init__(self, title='Roque', hit_points_limit=150, damage=40): Unit.__init__(self, title, hit_points_limit, damage) self._roque_abilitiy = RoqueAbilitiy(self)
def __init__(self, title='Soldier', hit_points_limit=200, damage=45): Unit.__init__(self, title, hit_points_limit, damage)
def __init__(self, title='Werewolf', hit_points_limit=170, damage=40): Unit.__init__(self, title, hit_points_limit, damage) self._werewolf_state = WerewolfState(title, hit_points_limit, damage, self) self._werewolf_abilitiy = WerewolfAbilitiy(self, self._werewolf_state)
import pygame from units.unit import Unit from units.unitcollection import UnitCollection from interface.inputhandler import InputHandler from interface.mapwindow import MapWindow from interface.graphicsengine import GraphicsEngine pygame.init() tilesize = 60 screen = pygame.display.set_mode((800, 600)) mapview = MapWindow((500, 500), tilesize) units = UnitCollection() engine = GraphicsEngine(screen, mapview, units) me = Unit(tilesize, os.path.join('..', 'images', 'units', 'fighter.png')) units.addUnit(me, (1, 1)) inputHandler = InputHandler(engine, mapview, units) inputHandler.linkUnit(me) enemy = Unit(tilesize, os.path.join('..', 'images', 'units', 'skeleton.png')) units.addUnit(enemy, (4, 3)) while engine.requestQuit != True: engine.runFrame() inputHandler.handleInput() pygame.time.wait(60) sys.exit()
def __init__(self, title='Berserker', hit_points_limit=190, damage=35): Unit.__init__(self, title, hit_points_limit, damage) self._berserker_state = BerserkerState(title, hit_points_limit, damage)
def __init__(self, coords, size): Unit.__init__(self, coords, size) pass
def __init__(self, warlock, title='Demon', hit_points_limit=80, damage=30): Unit.__init__(self, title, hit_points_limit, damage) self._warlock = warlock