-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmagic.py
43 lines (38 loc) · 1.63 KB
/
magic.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import pygame
from settings import *
from random import randint
class MagicPlayer:
def __init__(self,animation_player):
self.animation_player = animation_player
self.sounds = {
'heal': pygame.mixer.Sound('audio/heal.wav'),
'flame':pygame.mixer.Sound('audio/Fire.wav')
}
def heal(self,player,strength,cost,groups):
if player.energy >= cost:
self.sounds['heal'].play()
player.health += strength
player.energy -= cost
if player.health >= player.stats['health']:
player.health = player.stats['health']
self.animation_player.create_particles('aura',player.rect.center,groups)
self.animation_player.create_particles('heal',player.rect.center,groups)
def flame(self,player,cost,groups):
if player.energy >= cost:
player.energy -= cost
self.sounds['flame'].play()
if player.status.split('_')[0] == 'right': direction = pygame.math.Vector2(1,0)
elif player.status.split('_')[0] == 'left': direction = pygame.math.Vector2(-1,0)
elif player.status.split('_')[0] == 'up': direction = pygame.math.Vector2(0,-1)
else: direction = pygame.math.Vector2(0,1)
for i in range(1,16):
if direction.x: #horizontal
offset_x = (direction.x * i) * TILESIZE
x = player.rect.centerx + offset_x + randint(-TILESIZE // 3, TILESIZE // 3)
y = player.rect.centery
self.animation_player.create_particles('flame',(x,y),groups)
else: # vertical
offset_y = (direction.y * i) * TILESIZE
x = player.rect.centerx
y = player.rect.centery + offset_y + randint(-TILESIZE // 3, TILESIZE // 3)
self.animation_player.create_particles('flame',(x,y),groups)