mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-19 21:53:51 +00:00
2d0840cb3a
This commit changes the style of tes3mp serverside scripting mods. Short list of changes: * Break compatibility with old server mods * OOP style lua API * Basic dependency checker, allowing the installation of multiple server mods without changing configs * Remove support for C++ plugins * Change outdated LuaBridge to [sol2](https://github.com/ThePhD/sol2); * Support GCC, Clang and MSVC compilers * New environment variables: "TES3MP_SERVER_DIR" and "TES3MP_SERVER_USERDIR"; * New entity "Command controller" for registering new chat commands; * New Event system * Simplified Timer API * All Lua mods now run in their own environments * Add global namespace - Data that can be used for communicating between mods * Player and Actor inherit base class NetActor
98 lines
1.7 KiB
C++
98 lines
1.7 KiB
C++
//
|
|
// Created by koncord on 25.08.17.
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include <components/esm/records.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
|
|
{
|
|
public:
|
|
static void Init(LuaState &lua);
|
|
public:
|
|
explicit Spells(Player *player);
|
|
~Spells();
|
|
|
|
void update();
|
|
|
|
void addCustomSpell(Spell spell);
|
|
Spell getCustomSpell(unsigned int i);
|
|
void addDefaultSpell(const std::string &spell);
|
|
|
|
size_t size() const;
|
|
|
|
private:
|
|
void clear();
|
|
|
|
Player *player;
|
|
bool changed;
|
|
};
|
|
|
|
|