Mercurial > fhrl
changeset 31:9d36c1dc6b0c
saw
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sat, 16 Mar 2013 09:11:11 +0100 |
| parents | 072f93dc8b7c |
| children | 970194e9147c |
| files | fhrl/__main__.py fhrl/display.py fhrl/items.png fhrl/level.py fhrl/mobs.py |
| diffstat | 5 files changed, 76 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/fhrl/__main__.py Sat Mar 16 08:38:13 2013 +0100 +++ b/fhrl/__main__.py Sat Mar 16 09:11:11 2013 +0100 @@ -15,8 +15,8 @@ def run(self): hero = Hero() - for level in xrange(5): - self.level = Level((24, 24), hero) + for level in xrange(6): + self.level = Level((24, 24), hero, level) self.display.load_level(self.level) self.display.scroll_by( self.level.hero.x * 48 - self.display.width // 2,
--- a/fhrl/display.py Sat Mar 16 08:38:13 2013 +0100 +++ b/fhrl/display.py Sat Mar 16 09:11:11 2013 +0100 @@ -140,6 +140,9 @@ def update_hud(self, hero): self.health_number.set_number(hero.health) + self.balls_number.set_number(hero.balls) + self.gasoline_number.set_number(hero.gasoline) + self.battery_number.set_number(hero.battery) def render_level(self, surf, level):
--- a/fhrl/level.py Sat Mar 16 08:38:13 2013 +0100 +++ b/fhrl/level.py Sat Mar 16 09:11:11 2013 +0100 @@ -6,7 +6,7 @@ class Level(object): - def __init__(self, (width, height), hero, level=1): + def __init__(self, (width, height), hero, level=0): self.hero = hero self.width = width self.height = height
--- a/fhrl/mobs.py Sat Mar 16 08:38:13 2013 +0100 +++ b/fhrl/mobs.py Sat Mar 16 09:11:11 2013 +0100 @@ -249,7 +249,7 @@ self.gasoline += item.kind.get('gasoline', 0) self.battery += item.kind.get('battery', 0) self.balls += item.kind.get('balls', 0) - if item.kind.get('gun') and item.kind not in self.items: + if item.kind.get('shoot') and item.kind not in self.items: self.items.append(item.kind) return [item._pick_anim(display)] @@ -424,7 +424,7 @@ def gun_cannon((x, y), direction, level, display): steps = 0 anims = [] - while not level.is_wall((x, y)) and steps < 5: + while not level.is_wall((x, y)) and steps < 4: mob = level.find_mob((x, y)) effect = Effect( display.resources.effect[0:4], @@ -445,6 +445,29 @@ return anims +def gun_vulcan((x, y), direction, level, display): + steps = 0 + anims = [] + while not level.is_wall((x, y)) and steps < 7: + mob = level.find_mob((x, y)) + effect = Effect( + display.resources.effect[0:4], + (x * 48 + display.x, y * 32 + display.y) + ) + display.sprites.add(effect) + anims.append(effect.anim()) + if mob: + anims.extend(mob.wound(10, display)) + stuff = level.find_stuff((x, y)) + if stuff and stuff.kind not in (5, 7, 8): + break + x += DX[direction] + y += DY[direction] + steps += 1 + return anims + + + def gun_beam((x, y), direction, level, display): steps = 0 anims = [] @@ -484,6 +507,23 @@ break return anims +def gun_saw((x, y), direction, level, display): + anims = [] + effect = Effect( + display.resources.effect[0:4], + (x * 48 + display.x, y * 32 + display.y) + ) + display.sprites.add(effect) + anims.append(effect.anim()) + mob = level.find_mob((x, y)) + if mob: + anims.extend(mob.wound(99, display)) + stuff = level.find_stuff((x, y)) + if stuff and stuff.kind not in (5, 7, 8): + stuff.kind = 8 + anims.append(stuff._morph_anim(display)) + return anims + def gun_drill((x, y), direction, level, display): anims = [] @@ -499,7 +539,7 @@ anims.append(effect.anim()) mob = level.find_mob((x, y)) if mob: - anims.extend(mob.wound(100, display)) + anims.extend(mob.wound(99, display)) stuff = level.find_stuff((x, y)) if stuff and stuff.kind not in (5, 7, 8): stuff.kind = 8 @@ -610,12 +650,12 @@ 'balls': 5, 'shoot': gun_cannon, }, - 'teleporter': { - 'name': "Teleport Device", + 'saw': { + 'name': "Mechanic Saw", 'sprite': 3, - 'ammo': 'battery', - 'battery': 5, - 'shoot': gun_beam, + 'ammo': 'gasoline', + 'gasoline': 5, + 'shoot': gun_saw, }, 'flamer': { 'name': "Flame Thrower", @@ -629,7 +669,7 @@ 'sprite': 5, 'ammo': 'balls', 'balls': 5, - 'shoot': gun_cannon, + 'shoot': gun_vulcan, }, 'deevo': { 'name': "Deevolution Inducer", @@ -643,7 +683,6 @@ 'sprite': 7, 'ammo': 'battery', 'battery': 5, - 'shoot': gun_flames, }, 'balls': { 'name': "Cannon Balls", @@ -655,7 +694,7 @@ 'sprite': 9, 'gasoline': 10, }, - 'medkit': { + 'medikit': { 'name': "First Aid Kit", 'sprite': 10, 'health': 10, @@ -669,10 +708,26 @@ def make_monster(level, pos): - kind = random.choice(MONSTERS.values()) - return Mob(kind, pos) + levels = [ + ['guard'], + ['guard', 'worker', 'guard'], + ['guard', 'worker', 'robot'], + ['worker', 'robot', 'beast'], + ['robot', 'beast', 'beast'], + ['professor'], + ] + name = random.choice(levels[level]) + return Mob(MONSTERS[name], pos) def make_item(level, pos): - kind = random.choice(ITEMS.values()) - return Item(kind, pos) + levels = [ + ['medikit', 'balls', 'cannon'], + ['saw', 'flamer', 'gasoline', 'balls', 'medikit'], + ['saw', 'flamer', 'gasoline', 'balls', 'medikit', 'vulcan'], + ['drill', 'flamer', 'gasoline', 'balls', 'battery', 'medikit', 'beam'], + ['drill', 'flamer', 'gasoline', 'balls', 'battery', 'medikit', 'beam', 'teleporter'], + ['toaster'], + ] + name = random.choice(levels[level]) + return Item(ITEMS[name], pos)
