-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmagic.py
55 lines (41 loc) · 2.14 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
44
45
46
47
48
49
50
51
52
53
54
55
import pygame
from random import randint
from settings import *
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/flame.mp3')
}
def heal(self, player, strength, cost, groups):
if player.health != player.stats['max_health'] and player.energy >= cost:
self.sounds['heal'].play()
player.health = min(player.health + strength, player.stats['max_health'])
player.energy -= cost
self.animation_player.animation_particles(player.rect.center, groups, 'aura')
self.animation_player.animation_particles(player.rect.center, groups, 'heal')
def flame(self, player, cost, groups):
if player.energy >= cost:
self.sounds['flame'].play()
player.energy -= cost
player_direction = player.status.split('_')[0]
if player_direction == 'up':
direction = pygame.math.Vector2(0, -1)
elif player_direction == 'right':
direction = pygame.math.Vector2(1, 0)
elif player_direction == 'down':
direction = pygame.math.Vector2(0, 1)
else:
direction = pygame.math.Vector2(-1, 0)
for i in range(1, 6):
if direction.x:
offset_x = (direction.x * i) * TILESIZE
x = player.rect.centerx + offset_x + randint(-TILESIZE // 4, TILESIZE // 4)
y = player.rect.centery + randint(-TILESIZE // 4, TILESIZE // 4)
self.animation_player.animation_particles((x, y), groups, 'flame')
else:
offset_y = (direction.y * i) * TILESIZE
x = player.rect.centerx + randint(-TILESIZE // 4, TILESIZE // 4)
y = player.rect.centery + offset_y + randint(-TILESIZE // 4, TILESIZE // 4)
self.animation_player.animation_particles((x, y), groups, 'flame')