comparison nagslang/protagonist.py @ 333:3dd32686dbc3

Better wolf claw attack.
author Jeremy Thurgood <firxen@gmail.com>
date Fri, 06 Sep 2013 10:49:19 +0200
parents 768e1d06155f
children a3f1b2f0e3fb
comparison
equal deleted inserted replaced
332:ffefb93127c5 333:3dd32686dbc3
4 4
5 from nagslang import render 5 from nagslang import render
6 from nagslang.constants import ( 6 from nagslang.constants import (
7 COLLISION_TYPE_PLAYER, ZORDER_MID, WEREWOLF_SOAK_FACTOR, 7 COLLISION_TYPE_PLAYER, ZORDER_MID, WEREWOLF_SOAK_FACTOR,
8 PROTAGONIST_HEALTH_MIN_LEVEL, PROTAGONIST_HEALTH_MAX_LEVEL, 8 PROTAGONIST_HEALTH_MIN_LEVEL, PROTAGONIST_HEALTH_MAX_LEVEL,
9 NON_GAME_OBJECT_COLLIDERS, COLLISION_TYPE_WEREWOLF_ATTACK) 9 NON_GAME_OBJECT_COLLIDERS, BULLET_DAMAGE, CLAW_DAMAGE)
10 from nagslang.events import FireEvent, ClawEvent 10 from nagslang.events import FireEvent, ClawEvent
11 from nagslang.game_object import GameObject, Physicser, make_body 11 from nagslang.game_object import GameObject, Physicser, make_body
12 from nagslang.mutators import FLIP_H 12 from nagslang.mutators import FLIP_H
13 from nagslang.resources import resources 13 from nagslang.resources import resources
14 from nagslang.events import ScreenChange 14 from nagslang.events import ScreenChange
57 self.zorder = ZORDER_MID 57 self.zorder = ZORDER_MID
58 58
59 self.health_level = 100 59 self.health_level = 100
60 60
61 self.go_human() 61 self.go_human()
62 self._time = 0
63 62
64 def _make_physics(self, space, position): 63 def _make_physics(self, space, position):
65 body = make_body(10, pymunk.inf, position, 0.8) 64 body = make_body(10, pymunk.inf, position, 0.8)
66 body.velocity_limit = 1000 65 body.velocity_limit = 1000
67 66
260 if not self.has_item('gun'): 259 if not self.has_item('gun'):
261 return 260 return
262 vec = Vec2d.unit() 261 vec = Vec2d.unit()
263 vec.angle = self.angle 262 vec.angle = self.angle
264 vec.length = 1000 263 vec.length = 1000
265 FireEvent.post(self.physicser.position, vec, 10, COLLISION_TYPE_PLAYER) 264 FireEvent.post(
265 self.physicser.position, vec, BULLET_DAMAGE, COLLISION_TYPE_PLAYER)
266 266
267 def claw(self): 267 def claw(self):
268 vec = Vec2d.unit() 268 vec = Vec2d.unit()
269 vec.angle = self.angle 269 vec.angle = self.angle
270 vec.length = 100 270 vec.length = 30
271 ClawEvent.post(self.physicser.position, vec, 271 ClawEvent.post(self.physicser.position, vec, CLAW_DAMAGE)
272 COLLISION_TYPE_WEREWOLF_ATTACK)
273 print "Claw", self.physicser.position, vec
274 272
275 def in_wolf_form(self): 273 def in_wolf_form(self):
276 return self.form == self.WOLF_FORM 274 return self.form == self.WOLF_FORM
277 275
278 def in_human_form(self): 276 def in_human_form(self):
308 self.health_level += amount 306 self.health_level += amount
309 if self.health_level > PROTAGONIST_HEALTH_MAX_LEVEL: 307 if self.health_level > PROTAGONIST_HEALTH_MAX_LEVEL:
310 self.health_level = PROTAGONIST_HEALTH_MAX_LEVEL 308 self.health_level = PROTAGONIST_HEALTH_MAX_LEVEL
311 309
312 def update(self, dt): 310 def update(self, dt):
313 last_secs = int(self._time) 311 if int(self.lifetime + dt) > int(self.lifetime):
314 self._time += dt 312 if self.form == self.WOLF_FORM:
315 secs = int(self._time) 313 self.gain_health(1)
316 if self.form == self.WOLF_FORM and secs > last_secs:
317 self.gain_health(1)
318 super(Protagonist, self).update(dt) 314 super(Protagonist, self).update(dt)