blob: f3acdb87f7976690bc2da0e08ed959f7263f7ccd (
plain) (
blame)
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
|
#include "creature.hh"
#include "enums.hh"
// Creature Functions
//==============================================================================
// TODO(fusion): This was the first function I attempted to cleanup but soon
// realized we should start with the building blocks of the codebase, namely
// TSkill, TSkillBase, etc...
// We should probably come back to this once we start doing creature functions
// again.
void CheckMana(TCreature *Creature, int ManaPoints, int SoulPoints, int Delay){
if(Creature == NULL){
error("CheckMana: Übergebene Kreatur existiert nicht.\n");
throw ERROR;
}
if(Creature->Type != PLAYER || ManaPoints < 0)
return;
TSkill *Mana = Creature->Skills[SKILL_MANA];
if(Mana == NULL){
error("CheckMana: Kein Skill MANA!\n");
throw ERROR;
}
TSkill *Soul = Creature->Skills[SKILL_SOUL];
if(Soul == NULL){
error("CheckMana: Kein Skill SOULPOINTS!\n");
throw ERROR;
}
if(!CheckRight(Creature->ID, UNLIMITED_MANA)){
if(Mana->Get() < ManaPoints)
throw NOTENOUGHMANA;
if(Soul->Get() < SoulPoints)
throw NOTENOUGHSOULPOINTS;
Mana->Change(-ManaPoints);
Soul->Change(-SoulPoints);
}
if(ManaPoints > 0){
Creature->Skills[SKILL_MAGIC_LEVEL]->Increase(ManaPoints);
}
// NOTE(fusion): Maintain largest exhaust?
int EarliestSpellTime = Delay + ServerMilliseconds;
if(Creature->EarliestSpellTime < EarliestSpellTime){
Creature->EarliestSpellTime = EarliestSpellTime;
}
}
|