You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openmw-tes3coop/apps/openmw-mp/Spells.hpp

95 lines
1.7 KiB
C++

//
// Created by koncord on 25.08.17.
//
#pragma once
#include <components/esm/records.hpp>
#include "BaseMgr.hpp"
class LuaState;
class Player;
class Effect
{
public:
static void Init(LuaState &lua);
public:
explicit Effect(ESM::ENAMstruct effect);
short getId() const;
void setId(short id);
signed char getSkill() const;
void setSkill(signed char skill);
signed char getAttribute() const;
void setAttribute(signed char attr);
int getRange() const;
void setRange(int range);
int getArea() const;
void setArea(int area);
int getDuration() const;
void setDuration(int dur);
int getMinMag() const;
int getMaxMag() const;
void setMinMag(int mag);
void setMaxMag(int mag);
ESM::ENAMstruct effect;
};
class Spell
{
public:
static void Init(LuaState &lua);
public:
explicit Spell(const ESM::Spell &spell);
std::string getId() const;
void setId(const std::string &id);
std::string getName() const;
void setName(const std::string &name);
int getType() const;
void setType(int type);
int getCost() const;
void setCost(int cost);
int getFlags() const;
void setFlags(int flags);
size_t getEffectCount() const;
void addEffect(Effect effect);
Effect getEffect(int i);
ESM::Spell spell;
};
class Spells final: public BaseMgr
{
public:
static void Init(LuaState &lua);
public:
explicit Spells(Player *player);
void addCustomSpell(Spell spell);
Spell getCustomSpell(unsigned int i);
void addDefaultSpell(const std::string &spell);
size_t size() const;
private:
void clear();
void processUpdate() final;
};