2019-04-20 14:02:55 +02:00
|
|
|
#ifndef ENTITY_H
|
|
|
|
#define ENTITY_H
|
|
|
|
|
2019-06-11 15:20:05 +02:00
|
|
|
#include "core/io/networked_multiplayer_peer.h"
|
|
|
|
|
2019-05-07 15:05:55 +02:00
|
|
|
#ifdef ENTITIES_2D
|
|
|
|
#include "scene/2d/physics_body_2d.h"
|
|
|
|
#else
|
|
|
|
#include "scene/3d/physics_body.h"
|
|
|
|
#endif
|
|
|
|
|
2019-10-07 15:25:36 +02:00
|
|
|
#include "../data/craft_recipe.h"
|
2019-09-12 13:26:52 +02:00
|
|
|
#include "../data/item_instance.h"
|
2019-04-20 14:02:55 +02:00
|
|
|
#include "../data/spell.h"
|
|
|
|
#include "../data/xp_data.h"
|
2019-09-12 13:26:52 +02:00
|
|
|
#include "./data/entity_data.h"
|
2019-04-20 14:02:55 +02:00
|
|
|
#include "core/hash_map.h"
|
|
|
|
#include "core/object.h"
|
|
|
|
#include "core/ustring.h"
|
|
|
|
#include "core/vector.h"
|
2019-05-07 15:05:55 +02:00
|
|
|
|
2019-04-20 14:02:55 +02:00
|
|
|
#include "../data/spell.h"
|
2019-10-28 14:45:38 +01:00
|
|
|
#include "entity_resource.h"
|
2019-04-20 14:02:55 +02:00
|
|
|
#include "stats/stat.h"
|
|
|
|
|
2019-10-19 13:21:21 +02:00
|
|
|
#include "../entity_data_manager.h"
|
2019-04-20 14:02:55 +02:00
|
|
|
#include "../entity_enums.h"
|
2019-05-01 02:49:06 +02:00
|
|
|
#include "../skeleton/character_skeleton.h"
|
2019-05-04 18:39:42 +02:00
|
|
|
#include "../utility/entity_create_info.h"
|
|
|
|
|
2019-10-28 14:45:38 +01:00
|
|
|
#include "../inventory/bag.h"
|
2019-05-27 02:50:00 +02:00
|
|
|
#include "../utility/category_cooldown.h"
|
2019-09-12 13:26:52 +02:00
|
|
|
#include "../utility/cooldown.h"
|
2019-09-11 17:24:22 +02:00
|
|
|
#include "./data/entity_data_container.h"
|
2019-09-13 01:23:28 +02:00
|
|
|
#include "./skills/entity_skill.h"
|
|
|
|
|
2019-10-14 19:49:40 +02:00
|
|
|
#include "../profile_manager/actionbar/action_bar_profile.h"
|
|
|
|
|
2019-10-31 01:35:29 +01:00
|
|
|
#include "../ai/ai_fsm_action.h"
|
|
|
|
|
2019-11-01 22:07:56 +01:00
|
|
|
#include "../data/aura_group.h"
|
|
|
|
|
2019-11-04 01:38:27 +01:00
|
|
|
#include "../profile_manager/input/input_profile.h"
|
|
|
|
#include "../profile_manager/profile_manager.h"
|
|
|
|
|
2019-09-09 14:26:18 +02:00
|
|
|
class EntityData;
|
2019-04-20 14:02:55 +02:00
|
|
|
class AuraData;
|
|
|
|
class Spell;
|
|
|
|
class SpellDamageInfo;
|
2019-05-06 02:07:51 +02:00
|
|
|
class SpellHealInfo;
|
2019-04-20 14:02:55 +02:00
|
|
|
class SpellCastInfo;
|
2019-05-04 18:39:42 +02:00
|
|
|
class EntityCreateInfo;
|
2019-10-06 16:47:03 +02:00
|
|
|
class TalentRowData;
|
|
|
|
class CharacterSpec;
|
2019-04-20 14:02:55 +02:00
|
|
|
|
|
|
|
enum SpellCastDataSignals {
|
|
|
|
CastFailed,
|
|
|
|
StartCasting,
|
|
|
|
CastFinished,
|
|
|
|
SetTarget
|
|
|
|
};
|
|
|
|
|
|
|
|
VARIANT_ENUM_CAST(SpellCastDataSignals);
|
|
|
|
|
|
|
|
enum PlayerStates {
|
|
|
|
STATE_FREEZE,
|
|
|
|
STATE_NORMAL
|
|
|
|
};
|
|
|
|
|
|
|
|
VARIANT_ENUM_CAST(PlayerStates);
|
|
|
|
|
|
|
|
enum PlayerSendFlags {
|
|
|
|
SEND_FLAG_NONE,
|
|
|
|
SEND_FLAG_INVENTORY,
|
|
|
|
SEND_FLAG_SPELL_DATA,
|
|
|
|
SEND_FLAG_AURAS,
|
|
|
|
};
|
|
|
|
|
2019-10-28 14:45:38 +01:00
|
|
|
#define ISSERVER() (is_inside_tree() && (!get_tree()->has_network_peer() || (get_tree()->has_network_peer() && get_tree()->is_network_server())))
|
2019-10-29 13:36:33 +01:00
|
|
|
#define ISCLIENT() (is_inside_tree() && get_tree()->has_network_peer() && !get_tree()->is_network_server())
|
2019-10-28 14:45:38 +01:00
|
|
|
|
2019-06-18 02:32:39 +02:00
|
|
|
#define SET_RPC_OFF(p_method_name) rpc_config(p_method_name, MultiplayerAPI::RPC_MODE_DISABLED);
|
2019-06-11 15:20:05 +02:00
|
|
|
#define SET_RPC_REMOTE(p_method_name) rpc_config(p_method_name, MultiplayerAPI::RPC_MODE_REMOTE);
|
|
|
|
#define SET_RPC_MASTER(p_method_name) rpc_config(p_method_name, MultiplayerAPI::RPC_MODE_MASTER);
|
|
|
|
#define SET_RPC_PUPPET(p_method_name) rpc_config(p_method_name, MultiplayerAPI::RPC_MODE_PUPPET);
|
2019-06-18 02:32:39 +02:00
|
|
|
#define SET_RPC_REMOTESYNC(p_method_name) rpc_config(p_method_name, MultiplayerAPI::RPC_MODE_REMOTESYNC);
|
|
|
|
#define SET_RPC_MASTERSYNC(p_method_name) rpc_config(p_method_name, MultiplayerAPI::RPC_MODE_MASTERSYNC);
|
|
|
|
#define SET_RPC_PUPPETSYNC(p_method_name) rpc_config(p_method_name, MultiplayerAPI::RPC_MODE_PUPPETSYNC);
|
2019-06-11 15:20:05 +02:00
|
|
|
|
2019-10-28 14:45:38 +01:00
|
|
|
// f.e. RPC(method, arg0, arg1, etc)
|
2019-10-28 21:48:50 +01:00
|
|
|
#define RPC(func, ...) \
|
|
|
|
if (is_inside_tree() && get_tree()->has_network_peer()) { \
|
2019-10-29 00:33:30 +01:00
|
|
|
rpc(#func, ##__VA_ARGS__); \
|
2019-10-28 21:48:50 +01:00
|
|
|
} \
|
2019-10-28 14:45:38 +01:00
|
|
|
func(__VA_ARGS__);
|
|
|
|
|
2019-10-28 21:48:50 +01:00
|
|
|
#define VRPC(func, ...) \
|
|
|
|
if (is_inside_tree() && get_tree()->has_network_peer()) { \
|
2019-10-29 00:33:30 +01:00
|
|
|
vrpc(#func, ##__VA_ARGS__); \
|
2019-10-28 21:48:50 +01:00
|
|
|
} \
|
2019-10-28 14:45:38 +01:00
|
|
|
func(__VA_ARGS__);
|
2019-06-17 00:07:38 +02:00
|
|
|
|
2019-10-28 21:48:50 +01:00
|
|
|
#define ORPC(func, ...) \
|
|
|
|
if (is_inside_tree() && get_tree()->has_network_peer()) { \
|
|
|
|
if (get_tree()->is_network_server() && get_network_master() != 1) \
|
2019-10-29 00:33:30 +01:00
|
|
|
rpc_id(get_network_master(), #func, ##__VA_ARGS__); \
|
2019-10-28 21:48:50 +01:00
|
|
|
} \
|
2019-10-28 14:45:38 +01:00
|
|
|
func(__VA_ARGS__);
|
|
|
|
|
2019-10-28 21:48:50 +01:00
|
|
|
#define RPCS(func, ...) \
|
|
|
|
if (is_inside_tree() && get_tree()->has_network_peer()) { \
|
|
|
|
if (get_tree()->is_network_server()) { \
|
|
|
|
func(__VA_ARGS__); \
|
|
|
|
} else { \
|
2019-10-29 00:33:30 +01:00
|
|
|
rpc_id(1, #func, ##__VA_ARGS__); \
|
2019-10-28 21:48:50 +01:00
|
|
|
} \
|
|
|
|
} else { \
|
|
|
|
func(__VA_ARGS__); \
|
|
|
|
}
|
|
|
|
|
|
|
|
//RPC Objects
|
|
|
|
|
|
|
|
#define RPCOBJ(rpcfunc, rpc_var, normalfunc, normal_var) \
|
|
|
|
if (is_inside_tree() && get_tree()->has_network_peer()) { \
|
|
|
|
rpc(#rpcfunc, rpc_var); \
|
|
|
|
} \
|
|
|
|
normalfunc(normal_var);
|
|
|
|
|
|
|
|
#define VRPCOBJ(rpcfunc, rpc_var, normalfunc, normal_var) \
|
|
|
|
if (is_inside_tree() && get_tree()->has_network_peer()) { \
|
|
|
|
vrpc(#rpcfunc, rpc_var); \
|
|
|
|
} \
|
|
|
|
normalfunc(normal_var);
|
|
|
|
|
|
|
|
#define ORPCOBJ(rpcfunc, rpc_var, normalfunc, normal_var) \
|
|
|
|
if (is_inside_tree() && get_tree()->has_network_peer()) { \
|
|
|
|
if (get_tree()->is_network_server() && get_network_master() != 1) \
|
|
|
|
rpc_id(get_network_master(), #rpcfunc, rpc_var); \
|
|
|
|
} \
|
|
|
|
normalfunc(normal_var);
|
|
|
|
|
|
|
|
#define RPCSOBJ(rpcfunc, rpc_var, normalfunc, normal_var) \
|
|
|
|
if (is_inside_tree() && get_tree()->has_network_peer()) { \
|
|
|
|
if (get_tree()->is_network_server()) { \
|
|
|
|
normalfunc(normal_var); \
|
|
|
|
} else { \
|
|
|
|
rpc_id(1, #rpcfunc, rpc_var); \
|
|
|
|
} \
|
|
|
|
} else { \
|
|
|
|
normalfunc(normal_var); \
|
2019-06-18 15:33:28 +02:00
|
|
|
}
|
2019-06-11 15:20:05 +02:00
|
|
|
|
2019-11-04 16:50:53 +01:00
|
|
|
#define ORPCOBJP(rpcfunc, rpc_var1, rpc_var2, normalfunc, normal_var1, normal_var2) \
|
|
|
|
if (is_inside_tree() && get_tree()->has_network_peer()) { \
|
|
|
|
if (get_tree()->is_network_server() && get_network_master() != 1) \
|
|
|
|
rpc_id(get_network_master(), #rpcfunc, rpc_var1, rpc_var2); \
|
|
|
|
} \
|
|
|
|
normalfunc(normal_var1, normal_var2);
|
|
|
|
|
2019-10-28 14:45:38 +01:00
|
|
|
// f.e. RSET(rset("property", "value"), property, value)
|
2019-10-28 21:48:50 +01:00
|
|
|
#define RSET(rset_func, variable, value) \
|
|
|
|
if (is_inside_tree() && get_tree()->has_network_peer()) { \
|
|
|
|
rset_func; \
|
|
|
|
} \
|
2019-09-12 13:26:52 +02:00
|
|
|
variable = value;
|
2019-06-11 15:20:05 +02:00
|
|
|
|
2019-04-20 19:09:22 +02:00
|
|
|
#ifdef ENTITIES_2D
|
2019-04-22 10:25:41 +02:00
|
|
|
class Entity : public KinematicBody2D {
|
|
|
|
GDCLASS(Entity, KinematicBody2D);
|
2019-05-03 23:19:10 +02:00
|
|
|
|
2019-04-20 19:09:22 +02:00
|
|
|
#else
|
2019-05-03 23:19:10 +02:00
|
|
|
|
2019-04-20 19:09:22 +02:00
|
|
|
class Entity : public KinematicBody {
|
|
|
|
GDCLASS(Entity, KinematicBody);
|
2019-05-03 23:19:10 +02:00
|
|
|
|
2019-04-20 19:09:22 +02:00
|
|
|
#endif
|
2019-05-03 23:19:10 +02:00
|
|
|
|
2019-04-20 14:02:55 +02:00
|
|
|
public:
|
2019-05-04 23:20:22 +02:00
|
|
|
void initialize(Ref<EntityCreateInfo> info);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
|
|
|
//// Base ////
|
|
|
|
|
2019-05-01 02:49:06 +02:00
|
|
|
NodePath get_character_skeleton_path();
|
|
|
|
void set_character_skeleton_path(NodePath value);
|
|
|
|
|
|
|
|
CharacterSkeleton *get_character_skeleton();
|
|
|
|
|
2019-09-16 21:57:55 +02:00
|
|
|
//EntityType
|
2019-04-20 14:02:55 +02:00
|
|
|
EntityEnums::EntityType gets_entity_type();
|
|
|
|
void sets_entity_type(EntityEnums::EntityType value);
|
|
|
|
|
|
|
|
EntityEnums::EntityType getc_entity_type();
|
|
|
|
void setc_entity_type(EntityEnums::EntityType value);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-09-16 21:57:55 +02:00
|
|
|
//EntityInteractionType
|
|
|
|
EntityEnums::EntityInteractionType gets_entity_interaction_type();
|
|
|
|
void sets_entity_interaction_type(EntityEnums::EntityInteractionType value);
|
|
|
|
|
|
|
|
EntityEnums::EntityInteractionType getc_entity_interaction_type();
|
|
|
|
void setc_entity_interaction_type(EntityEnums::EntityInteractionType value);
|
|
|
|
|
2019-09-12 13:26:52 +02:00
|
|
|
int gets_immunity_flags();
|
2019-09-11 11:25:52 +02:00
|
|
|
void sets_immunity_flags(int value);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
int gets_entity_flags();
|
2019-09-11 11:25:52 +02:00
|
|
|
void sets_entity_flags(int value);
|
|
|
|
|
|
|
|
int getc_entity_flags();
|
|
|
|
void setc_entity_flags(int value);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
EntityEnums::EntityController gets_entity_controller();
|
2019-09-11 11:25:52 +02:00
|
|
|
void sets_entity_controller(EntityEnums::EntityController value);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-09-17 15:35:03 +02:00
|
|
|
String gets_entity_name();
|
|
|
|
void sets_entity_name(String value);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-09-17 15:35:03 +02:00
|
|
|
String getc_entity_name();
|
|
|
|
void setc_entity_name(String value);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-11-03 22:39:19 +01:00
|
|
|
EntityEnums::EntityGender gets_gender();
|
|
|
|
void sets_gender(EntityEnums::EntityGender value);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-11-03 22:39:19 +01:00
|
|
|
EntityEnums::EntityGender getc_gender();
|
|
|
|
void setc_gender(EntityEnums::EntityGender value);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
|
|
|
int gets_level();
|
|
|
|
void sets_level(int value);
|
|
|
|
|
|
|
|
int getc_level();
|
|
|
|
void setc_level(int value);
|
|
|
|
|
|
|
|
int gets_xp();
|
|
|
|
void sets_xp(int value);
|
|
|
|
|
|
|
|
int getc_xp();
|
|
|
|
void setc_xp(int value);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
int gets_money();
|
2019-09-11 13:06:04 +02:00
|
|
|
void sets_money(int value);
|
|
|
|
|
|
|
|
int getc_money();
|
|
|
|
void setc_money(int value);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-10-28 14:45:38 +01:00
|
|
|
Ref<EntityData> gets_entity_data();
|
|
|
|
void sets_entity_data(Ref<EntityData> value);
|
|
|
|
|
2019-09-09 14:26:18 +02:00
|
|
|
Ref<EntityData> getc_entity_data();
|
|
|
|
void setc_entity_data(Ref<EntityData> value);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-10-28 14:45:38 +01:00
|
|
|
int gets_entity_data_id();
|
|
|
|
void sets_entity_data_id(int value);
|
|
|
|
|
|
|
|
int getc_entity_data_id();
|
|
|
|
void setc_entity_data_id(int value);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-11-04 01:38:27 +01:00
|
|
|
EntityEnums::AIStates gets_ai_state() const;
|
|
|
|
void sets_ai_state(EntityEnums::AIStates state);
|
|
|
|
|
|
|
|
int gets_seed();
|
|
|
|
void sets_seed(int value);
|
|
|
|
|
|
|
|
int getc_seed();
|
|
|
|
void setc_seed(int value);
|
|
|
|
|
2019-04-20 14:02:55 +02:00
|
|
|
//// Stats ////
|
|
|
|
|
2019-10-07 00:34:12 +02:00
|
|
|
_FORCE_INLINE_ Ref<Stat> get_health() { return _stats[Stat::STAT_ID_HEALTH]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_mana() { return _stats[Stat::STAT_ID_MANA]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_energy() { return _stats[Stat::STAT_ID_RAGE]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_rage() { return _stats[Stat::STAT_ID_ENERGY]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_speed() { return _stats[Stat::STAT_ID_SPEED]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_gcd() { return _stats[Stat::STAT_ID_GLOBAL_COOLDOWN]; }
|
|
|
|
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_melee_crit() { return _stats[Stat::STAT_ID_MELEE_CRIT]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_melee_crit_bonus() { return _stats[Stat::STAT_ID_MELEE_CRIT_BONUS]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_spell_crit() { return _stats[Stat::STAT_ID_SPELL_CRIT]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_spell_crit_bonus() { return _stats[Stat::STAT_ID_SPELL_CRIT_BONUS]; }
|
|
|
|
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_block() { return _stats[Stat::STAT_ID_BLOCK]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_parry() { return _stats[Stat::STAT_ID_PARRY]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_damage_reduction() { return _stats[Stat::STAT_ID_DAMAGE_REDUCTION]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_melee_damage_reduction() { return _stats[Stat::STAT_ID_MELEE_DAMAGE_REDUCTION]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_spell_damage_reduction() { return _stats[Stat::STAT_ID_SPELL_DAMAGE_REDUCTION]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_damage_taken() { return _stats[Stat::STAT_ID_DAMAGE_TAKEN]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_heal_taken() { return _stats[Stat::STAT_ID_HEAL_TAKEN]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_melee_damage() { return _stats[Stat::STAT_ID_MELEE_DAMAGE]; }
|
|
|
|
_FORCE_INLINE_ Ref<Stat> get_spell_damage() { return _stats[Stat::STAT_ID_SPELL_DAMAGE]; }
|
2019-04-20 14:02:55 +02:00
|
|
|
|
|
|
|
Ref<Stat> get_stat_int(int index);
|
|
|
|
void set_stat_int(int index, Ref<Stat> entry);
|
|
|
|
|
|
|
|
Ref<Stat> get_stat_enum(Stat::StatId stat_id);
|
|
|
|
void set_stat_enum(Stat::StatId stat_id, Ref<Stat> entry);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
void sdie();
|
|
|
|
void cdie();
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-08-13 23:58:42 +02:00
|
|
|
void ons_stat_changed(Ref<Stat> stat);
|
|
|
|
void onc_stat_changed(Ref<Stat> stat);
|
|
|
|
|
2019-10-28 21:48:50 +01:00
|
|
|
void ssend_stat(int id, int ccurrent, int cmax);
|
|
|
|
void creceive_stat(int id, int ccurrent, int cmax);
|
|
|
|
|
2019-10-07 00:29:05 +02:00
|
|
|
//// Equip Slots ////
|
|
|
|
|
2019-10-13 22:48:25 +02:00
|
|
|
bool should_deny_equip(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item);
|
|
|
|
|
2019-10-13 13:12:27 +02:00
|
|
|
void son_equip_success(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
|
|
|
void son_equip_fail(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
|
|
|
|
|
|
|
void con_equip_success(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
|
|
|
void con_equip_fail(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
|
|
|
|
2019-10-13 13:53:03 +02:00
|
|
|
void crequest_equip(ItemEnums::EquipSlots equip_slot, int bag_slot);
|
|
|
|
void sequip(ItemEnums::EquipSlots equip_slot, int bag_slot);
|
|
|
|
void _sequip(ItemEnums::EquipSlots equip_slot, int bag_slot);
|
2019-10-13 13:31:49 +02:00
|
|
|
|
2019-10-13 13:53:03 +02:00
|
|
|
void cequip_success(ItemEnums::EquipSlots equip_slot, int bag_slot);
|
|
|
|
void cequip_fail(ItemEnums::EquipSlots equip_slot, int bag_slot);
|
2019-10-13 13:31:49 +02:00
|
|
|
|
|
|
|
Ref<ItemInstance> gets_equip_slot(int index);
|
2019-10-13 13:53:03 +02:00
|
|
|
void sets_equip_slot(int index, Ref<ItemInstance> item);
|
|
|
|
|
2019-10-13 13:31:49 +02:00
|
|
|
Ref<ItemInstance> getc_equip_slot(int index);
|
2019-10-13 13:53:03 +02:00
|
|
|
void setc_equip_slot(int index, Ref<ItemInstance> item);
|
2019-10-13 13:31:49 +02:00
|
|
|
|
|
|
|
void sapply_item_stats(Ref<ItemInstance> item);
|
|
|
|
void sdeapply_item_stats(Ref<ItemInstance> item);
|
|
|
|
|
|
|
|
void _sapply_item_stats(Ref<ItemInstance> item);
|
|
|
|
void _sdeapply_item_stats(Ref<ItemInstance> item);
|
2019-10-07 00:29:05 +02:00
|
|
|
|
2019-06-22 23:28:36 +02:00
|
|
|
//// Resources ////
|
|
|
|
|
|
|
|
Ref<EntityResource> gets_resource(int index);
|
2019-08-13 23:58:42 +02:00
|
|
|
Ref<EntityResource> gets_resource_type(int type);
|
2019-06-22 23:28:36 +02:00
|
|
|
void adds_resource(Ref<EntityResource> resource);
|
|
|
|
int gets_resource_count();
|
|
|
|
void removes_resource(int index);
|
2019-08-13 23:58:42 +02:00
|
|
|
void clears_resource();
|
2019-06-22 23:28:36 +02:00
|
|
|
|
|
|
|
Ref<EntityResource> getc_resource(int index);
|
2019-08-13 23:58:42 +02:00
|
|
|
Ref<EntityResource> getc_resource_type(int type);
|
2019-06-22 23:28:36 +02:00
|
|
|
void addc_resource(Ref<EntityResource> resource);
|
|
|
|
int getc_resource_count();
|
|
|
|
void removec_resource(int index);
|
2019-08-13 23:58:42 +02:00
|
|
|
void clearc_resource();
|
2019-06-22 23:28:36 +02:00
|
|
|
|
2019-10-07 00:29:05 +02:00
|
|
|
//// Global Cooldown ////
|
|
|
|
|
2019-05-27 02:50:00 +02:00
|
|
|
bool getc_has_global_cooldown();
|
|
|
|
bool gets_has_global_cooldown();
|
|
|
|
bool getc_global_cooldown();
|
|
|
|
bool gets_global_cooldown();
|
|
|
|
void sstart_global_cooldown(float value);
|
|
|
|
void cstart_global_cooldown(float value);
|
|
|
|
|
|
|
|
//// States ////
|
|
|
|
int getc_state();
|
|
|
|
void setc_state(int state);
|
|
|
|
|
|
|
|
int gets_state();
|
|
|
|
void sets_state(int state);
|
|
|
|
|
|
|
|
void sadd_state_ref(int state_index);
|
|
|
|
void sremove_state_ref(int state_index);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-10-07 16:31:43 +02:00
|
|
|
//// Crafting System ////
|
|
|
|
|
|
|
|
void crequest_craft(int id);
|
|
|
|
void scraft(int id);
|
|
|
|
|
|
|
|
bool hass_craft_recipe(Ref<CraftRecipe> craft_recipe);
|
2019-11-04 01:16:50 +01:00
|
|
|
bool hass_craft_recipe_id(int id);
|
2019-10-07 16:31:43 +02:00
|
|
|
void adds_craft_recipe(Ref<CraftRecipe> craft_recipe);
|
2019-11-04 01:16:50 +01:00
|
|
|
void adds_craft_recipe_id(int id);
|
2019-10-07 16:31:43 +02:00
|
|
|
void removes_craft_recipe(Ref<CraftRecipe> craft_recipe);
|
2019-11-04 01:16:50 +01:00
|
|
|
void removes_craft_recipe_id(int id);
|
2019-10-07 16:31:43 +02:00
|
|
|
Ref<CraftRecipe> gets_craft_recipe(int index);
|
2019-11-04 01:16:50 +01:00
|
|
|
Ref<CraftRecipe> gets_craft_recipe_id(int id);
|
2019-10-07 16:31:43 +02:00
|
|
|
int gets_craft_recipe_count();
|
|
|
|
|
|
|
|
bool hasc_craft_recipe(Ref<CraftRecipe> craft_recipe);
|
2019-11-04 01:16:50 +01:00
|
|
|
bool hasc_craft_recipe_id(int id);
|
2019-10-07 16:31:43 +02:00
|
|
|
void addc_craft_recipe(Ref<CraftRecipe> craft_recipe);
|
2019-11-04 01:16:50 +01:00
|
|
|
void addc_craft_recipe_id(int id);
|
2019-10-07 16:31:43 +02:00
|
|
|
void removec_craft_recipe(Ref<CraftRecipe> craft_recipe);
|
2019-11-04 01:16:50 +01:00
|
|
|
void removec_craft_recipe_id(int id);
|
2019-10-07 16:31:43 +02:00
|
|
|
Ref<CraftRecipe> getc_craft_recipe(int index);
|
|
|
|
int getc_craft_recipe_count();
|
|
|
|
|
2019-05-27 02:50:00 +02:00
|
|
|
//// SpellSystem ////
|
2019-05-03 23:19:10 +02:00
|
|
|
|
|
|
|
//EventHandlers
|
|
|
|
void son_before_aura_applied(Ref<AuraData> data);
|
|
|
|
void son_after_aura_applied(Ref<AuraData> data);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-09-11 11:01:30 +02:00
|
|
|
void son_before_damage_hit(Ref<SpellDamageInfo> info);
|
2019-09-12 13:26:52 +02:00
|
|
|
void son_hit(Ref<SpellDamageInfo> info);
|
2019-08-05 01:36:33 +02:00
|
|
|
void son_before_damage(Ref<SpellDamageInfo> info);
|
|
|
|
void son_damage_receive(Ref<SpellDamageInfo> info);
|
|
|
|
void son_dealt_damage(Ref<SpellDamageInfo> info);
|
|
|
|
void son_damage_dealt(Ref<SpellDamageInfo> info);
|
2019-05-03 23:19:10 +02:00
|
|
|
|
2019-09-12 13:26:52 +02:00
|
|
|
void son_before_heal_hit(Ref<SpellHealInfo> info);
|
2019-08-05 01:36:33 +02:00
|
|
|
void son_before_heal(Ref<SpellHealInfo> info);
|
|
|
|
void son_heal_receive(Ref<SpellHealInfo> info);
|
|
|
|
void son_dealt_heal(Ref<SpellHealInfo> info);
|
|
|
|
void son_heal_dealt(Ref<SpellHealInfo> info);
|
2019-05-06 02:07:51 +02:00
|
|
|
|
2019-05-03 23:19:10 +02:00
|
|
|
void son_before_cast(Ref<SpellCastInfo> info);
|
|
|
|
void son_before_cast_target(Ref<SpellCastInfo> info);
|
|
|
|
void son_cast_finished_target(Ref<SpellCastInfo> info);
|
|
|
|
void son_cast_finished(Ref<SpellCastInfo> info);
|
|
|
|
void son_cast_started(Ref<SpellCastInfo> info);
|
|
|
|
void son_cast_failed(Ref<SpellCastInfo> info);
|
2019-09-28 17:36:02 +02:00
|
|
|
void son_spell_cast_success(Ref<SpellCastInfo> info);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
void son_death();
|
2019-06-17 00:07:38 +02:00
|
|
|
|
2019-08-05 01:36:33 +02:00
|
|
|
void son_cooldown_added(Ref<Cooldown> cooldown);
|
|
|
|
void son_cooldown_removed(Ref<Cooldown> cooldown);
|
|
|
|
|
|
|
|
void son_category_cooldown_added(Ref<CategoryCooldown> category_cooldown);
|
|
|
|
void son_category_cooldown_removed(Ref<CategoryCooldown> category_cooldown);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-08-05 23:59:37 +02:00
|
|
|
void son_gcd_started();
|
|
|
|
void son_gcd_finished();
|
|
|
|
void con_gcd_started();
|
|
|
|
void con_gcd_finished();
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
void son_physics_process();
|
|
|
|
|
|
|
|
void son_xp_gained(int value);
|
|
|
|
void son_level_up(int value);
|
|
|
|
|
2019-05-03 23:19:10 +02:00
|
|
|
//Clientside EventHandlers
|
|
|
|
void con_cast_failed(Ref<SpellCastInfo> info);
|
|
|
|
void con_cast_started(Ref<SpellCastInfo> info);
|
|
|
|
void con_cast_state_changed(Ref<SpellCastInfo> info);
|
|
|
|
void con_cast_finished(Ref<SpellCastInfo> info);
|
|
|
|
void con_spell_cast_success(Ref<SpellCastInfo> info);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
void con_death();
|
|
|
|
|
2019-08-05 01:36:33 +02:00
|
|
|
void con_cooldown_added(Ref<Cooldown> cooldown);
|
|
|
|
void con_cooldown_removed(Ref<Cooldown> cooldown);
|
|
|
|
void con_category_cooldown_added(Ref<CategoryCooldown> category_cooldown);
|
|
|
|
void con_category_cooldown_removed(Ref<CategoryCooldown> category_cooldown);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-08-04 19:13:00 +02:00
|
|
|
void con_aura_added(Ref<AuraData> data);
|
|
|
|
void con_aura_removed(Ref<AuraData> data);
|
|
|
|
void con_aura_refresh(Ref<AuraData> data);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-08-05 01:36:33 +02:00
|
|
|
void con_damage_dealt(Ref<SpellDamageInfo> info);
|
|
|
|
void con_dealt_damage(Ref<SpellDamageInfo> info);
|
|
|
|
void con_heal_dealt(Ref<SpellHealInfo> info);
|
|
|
|
void con_dealt_heal(Ref<SpellHealInfo> info);
|
2019-05-03 23:19:10 +02:00
|
|
|
|
2019-09-12 13:26:52 +02:00
|
|
|
void con_xp_gained(int value);
|
|
|
|
void con_level_up(int value);
|
|
|
|
|
2019-05-03 23:19:10 +02:00
|
|
|
//Modifiers/Requesters
|
2019-08-05 01:36:33 +02:00
|
|
|
void sapply_passives_damage_receive(Ref<SpellDamageInfo> info);
|
|
|
|
void sapply_passives_damage_deal(Ref<SpellDamageInfo> info);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-08-05 01:36:33 +02:00
|
|
|
void sapply_passives_heal_receive(Ref<SpellHealInfo> info);
|
|
|
|
void sapply_passives_heal_deal(Ref<SpellHealInfo> info);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-05-03 23:19:10 +02:00
|
|
|
//Spell operations
|
|
|
|
void scast_spell(int spell_id);
|
|
|
|
void crequest_spell_cast(int spell_id);
|
|
|
|
|
|
|
|
//Damage Operations
|
2019-08-05 01:36:33 +02:00
|
|
|
void stake_damage(Ref<SpellDamageInfo> info);
|
|
|
|
void sdeal_damage_to(Ref<SpellDamageInfo> info);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-05-06 02:07:51 +02:00
|
|
|
//Heal Operations
|
2019-08-05 01:36:33 +02:00
|
|
|
void stake_heal(Ref<SpellHealInfo> info);
|
|
|
|
void sdeal_heal_to(Ref<SpellHealInfo> info);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-10-29 18:12:15 +01:00
|
|
|
//Damage, Heal RPCs
|
|
|
|
void cdamage_dealt_rpc(String data);
|
|
|
|
void cdealt_damage_rpc(String data);
|
|
|
|
void cheal_dealt_rpc(String data);
|
|
|
|
void cdealt_heal_rpc(String data);
|
|
|
|
|
2019-09-12 13:26:52 +02:00
|
|
|
//Interactions
|
|
|
|
bool cans_interact();
|
|
|
|
void sinteract();
|
2019-09-17 02:14:24 +02:00
|
|
|
|
|
|
|
bool canc_interact();
|
2019-09-11 12:54:51 +02:00
|
|
|
void crequest_interact();
|
2019-05-06 02:07:51 +02:00
|
|
|
|
2019-09-17 02:14:24 +02:00
|
|
|
void ssend_open_loot_window();
|
|
|
|
void ssend_open_container_window();
|
|
|
|
void ssend_open_vendor_window();
|
|
|
|
|
|
|
|
void copen_loot_window();
|
|
|
|
void copen_container_window();
|
|
|
|
void copen_vendor_window();
|
|
|
|
|
2019-09-12 13:26:52 +02:00
|
|
|
//XP Operations
|
|
|
|
void adds_xp(int value);
|
|
|
|
void addc_xp(int value);
|
2019-10-08 00:30:16 +02:00
|
|
|
void slevelup(int value);
|
|
|
|
void clevelup(int value);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-05-03 23:19:10 +02:00
|
|
|
//Aura Manipulation
|
|
|
|
void sadd_aura(Ref<AuraData> aura);
|
2019-04-20 14:02:55 +02:00
|
|
|
void sremove_aura(Ref<AuraData> aura);
|
2019-06-22 23:28:36 +02:00
|
|
|
void sremove_aura_exact(Ref<AuraData> aura);
|
2019-05-03 23:19:10 +02:00
|
|
|
void sremove_aura_expired(Ref<AuraData> aura);
|
|
|
|
void sremove_aura_dispelled(Ref<AuraData> aura);
|
2019-06-22 23:28:36 +02:00
|
|
|
void saura_refreshed(Ref<AuraData> aura);
|
2019-10-29 00:24:37 +01:00
|
|
|
|
2019-10-28 21:48:50 +01:00
|
|
|
void cadd_aura_rpc(String data);
|
|
|
|
void cremove_aura_rpc(String data);
|
|
|
|
void cremove_aura_exact_rpc(String data);
|
|
|
|
void cremove_aura_expired_rpc(String data);
|
|
|
|
void cremove_aura_dispelled_rpc(String data);
|
|
|
|
void caura_refreshed_rpc(String data);
|
2019-05-03 23:19:10 +02:00
|
|
|
|
|
|
|
void cadd_aura(Ref<AuraData> aura);
|
2019-04-20 14:02:55 +02:00
|
|
|
void cremove_aura(Ref<AuraData> aura);
|
2019-06-22 23:28:36 +02:00
|
|
|
void cremove_aura_exact(Ref<AuraData> aura);
|
2019-05-03 23:19:10 +02:00
|
|
|
void cremove_aura_expired(Ref<AuraData> aura);
|
|
|
|
void cremove_aura_dispelled(Ref<AuraData> aura);
|
2019-06-22 23:28:36 +02:00
|
|
|
void caura_refreshed(Ref<AuraData> aura);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-11-01 22:07:56 +01:00
|
|
|
void sremove_auras_with_group(Ref<AuraGroup> aura_group);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-08-05 23:59:37 +02:00
|
|
|
//NOTE: No reason for shas_aura_by, just query it, and check for null.
|
2019-05-03 23:19:10 +02:00
|
|
|
int sget_aura_count();
|
2019-06-22 23:28:36 +02:00
|
|
|
Ref<AuraData> sget_aura(int index);
|
2019-08-05 23:59:37 +02:00
|
|
|
Ref<AuraData> sget_aura_by(Entity *caster, int aura_id);
|
|
|
|
Ref<AuraData> sget_aura_by_bind(Node *caster, int aura_id);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-11-01 22:07:56 +01:00
|
|
|
Ref<AuraData> sget_aura_with_group_by(Entity *caster, Ref<AuraGroup> aura_group);
|
|
|
|
Ref<AuraData> sget_aura_with_group_by_bind(Node *caster, Ref<AuraGroup> aura_group);
|
|
|
|
|
2019-05-03 23:19:10 +02:00
|
|
|
int cget_aura_count();
|
2019-06-22 23:28:36 +02:00
|
|
|
Ref<AuraData> cget_aura(int index);
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-05-03 23:19:10 +02:00
|
|
|
//Hooks
|
|
|
|
void moved();
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-09-25 12:59:21 +02:00
|
|
|
void onc_mouse_enter();
|
|
|
|
void onc_mouse_exit();
|
|
|
|
|
2019-09-27 18:05:43 +02:00
|
|
|
void onc_targeted();
|
|
|
|
void onc_untargeted();
|
|
|
|
|
2019-05-03 23:19:10 +02:00
|
|
|
//Update
|
|
|
|
void update_auras(float delta);
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-04-20 14:02:55 +02:00
|
|
|
bool gets_is_dead();
|
|
|
|
bool getc_is_dead();
|
|
|
|
|
2019-05-27 02:50:00 +02:00
|
|
|
//// Casting System ////
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-08-05 23:59:37 +02:00
|
|
|
bool sis_casting();
|
|
|
|
bool cis_casting();
|
2019-05-27 02:50:00 +02:00
|
|
|
|
2019-05-03 23:19:10 +02:00
|
|
|
Ref<SpellCastInfo> gets_spell_cast_info();
|
|
|
|
void sets_spell_cast_info(Ref<SpellCastInfo> info);
|
|
|
|
|
|
|
|
Ref<SpellCastInfo> getc_spell_cast_info();
|
|
|
|
void setc_spell_cast_info(Ref<SpellCastInfo> info);
|
|
|
|
|
2019-04-20 14:02:55 +02:00
|
|
|
void sstart_casting(Ref<SpellCastInfo> info);
|
|
|
|
void sfail_cast();
|
|
|
|
void sdelay_cast();
|
|
|
|
void sfinish_cast();
|
|
|
|
void sinterrupt_cast();
|
|
|
|
|
2019-10-28 21:48:50 +01:00
|
|
|
void cstart_casting_rpc(String data);
|
2019-04-20 14:02:55 +02:00
|
|
|
void cstart_casting(Ref<SpellCastInfo> info);
|
|
|
|
void cfail_cast();
|
|
|
|
void cdelay_cast();
|
|
|
|
void cfinish_cast();
|
|
|
|
void cinterrupt_cast();
|
|
|
|
|
2019-09-28 17:36:02 +02:00
|
|
|
void sspell_cast_success(Ref<SpellCastInfo> info);
|
2019-10-28 21:48:50 +01:00
|
|
|
|
|
|
|
void cspell_cast_success_rpc(String data);
|
2019-09-28 17:36:02 +02:00
|
|
|
void cspell_cast_success(Ref<SpellCastInfo> info);
|
|
|
|
|
2019-05-27 02:50:00 +02:00
|
|
|
//// Cooldowns ////
|
2019-10-06 18:51:16 +02:00
|
|
|
|
2019-05-27 02:50:00 +02:00
|
|
|
Vector<Ref<Cooldown> > *gets_cooldowns();
|
|
|
|
Vector<Ref<Cooldown> > *getc_cooldowns();
|
|
|
|
|
|
|
|
HashMap<int, Ref<Cooldown> > *gets_cooldown_map();
|
|
|
|
HashMap<int, Ref<Cooldown> > *getc_cooldown_map();
|
|
|
|
|
|
|
|
bool hass_cooldown(int spell_id);
|
|
|
|
void adds_cooldown(int spell_id, float value);
|
|
|
|
void removes_cooldown(int spell_id);
|
|
|
|
Ref<Cooldown> gets_cooldown(int spell_id);
|
|
|
|
Ref<Cooldown> gets_cooldown_index(int index);
|
|
|
|
int gets_cooldown_count();
|
|
|
|
|
|
|
|
bool hasc_cooldown(int spell_id);
|
|
|
|
void addc_cooldown(int spell_id, float value);
|
|
|
|
void removec_cooldown(int spell_id);
|
|
|
|
Ref<Cooldown> getc_cooldown(int spell_id);
|
|
|
|
Ref<Cooldown> getc_cooldown_index(int index);
|
|
|
|
int getc_cooldown_count();
|
|
|
|
|
|
|
|
//Category Cooldowns
|
2019-10-06 18:51:16 +02:00
|
|
|
|
2019-08-05 01:36:33 +02:00
|
|
|
Vector<Ref<CategoryCooldown> > gets_category_cooldowns();
|
|
|
|
Vector<Ref<CategoryCooldown> > getc_category_cooldowns();
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-06-17 00:07:38 +02:00
|
|
|
bool hass_category_cooldown(int category_id);
|
|
|
|
void adds_category_cooldown(int category_id, float value);
|
|
|
|
void removes_category_cooldown(int category_id);
|
2019-05-27 02:50:00 +02:00
|
|
|
Ref<CategoryCooldown> gets_category_cooldown(int category_id);
|
|
|
|
Ref<CategoryCooldown> gets_category_cooldown_index(int index);
|
|
|
|
int gets_category_cooldown_count();
|
|
|
|
|
2019-06-17 00:07:38 +02:00
|
|
|
bool hasc_category_cooldown(int category_id);
|
|
|
|
void addc_category_cooldown(int category_id, float value);
|
2019-05-27 02:50:00 +02:00
|
|
|
void removec_category_cooldown(int spell_id);
|
|
|
|
Ref<CategoryCooldown> getc_category_cooldown(int category_id);
|
|
|
|
Ref<CategoryCooldown> getc_category_cooldown_index(int index);
|
|
|
|
int getc_category_cooldown_count();
|
|
|
|
|
2019-09-13 01:23:28 +02:00
|
|
|
//Known Spells
|
2019-10-06 18:51:16 +02:00
|
|
|
|
|
|
|
int gets_free_spell_points();
|
|
|
|
void sets_free_spell_points(int value);
|
|
|
|
|
|
|
|
int getc_free_spell_points();
|
|
|
|
void setc_free_spell_points(int value);
|
|
|
|
|
2019-10-10 00:46:12 +02:00
|
|
|
void crequest_spell_learn(int id);
|
|
|
|
void slearn_spell(int id);
|
|
|
|
|
2019-09-13 01:23:28 +02:00
|
|
|
bool hass_spell(Ref<Spell> spell);
|
2019-11-01 20:33:14 +01:00
|
|
|
bool hass_spell_id(int id);
|
2019-09-13 01:23:28 +02:00
|
|
|
void adds_spell(Ref<Spell> spell);
|
|
|
|
void removes_spell(Ref<Spell> spell);
|
|
|
|
Ref<Spell> gets_spell(int index);
|
|
|
|
int gets_spell_count();
|
|
|
|
|
|
|
|
bool hasc_spell(Ref<Spell> spell);
|
2019-11-01 20:33:14 +01:00
|
|
|
bool hasc_spell_id(int id);
|
2019-09-13 01:23:28 +02:00
|
|
|
void addc_spell(Ref<Spell> spell);
|
|
|
|
void removec_spell(Ref<Spell> spell);
|
|
|
|
Ref<Spell> getc_spell(int index);
|
|
|
|
int getc_spell_count();
|
|
|
|
|
2019-10-28 21:48:50 +01:00
|
|
|
void addc_spell_rpc(int id);
|
|
|
|
void removec_spell_rpc(int id);
|
|
|
|
|
2019-09-13 01:23:28 +02:00
|
|
|
//Skills
|
2019-10-06 18:51:16 +02:00
|
|
|
|
2019-09-13 01:23:28 +02:00
|
|
|
bool hass_skill(Ref<EntitySkill> skill);
|
|
|
|
void adds_skill(Ref<EntitySkill> skill);
|
|
|
|
void removes_skill(Ref<EntitySkill> skill);
|
|
|
|
Ref<EntitySkill> gets_skill(int skill);
|
|
|
|
int gets_skill_count();
|
|
|
|
|
|
|
|
bool hasc_skill(Ref<EntitySkill> skill);
|
|
|
|
void addc_skill(Ref<EntitySkill> skill);
|
|
|
|
void removec_skill(Ref<EntitySkill> skill);
|
|
|
|
Ref<EntitySkill> getc_skill(int index);
|
|
|
|
int getc_skill_count();
|
|
|
|
|
2019-09-16 21:57:55 +02:00
|
|
|
//// Target ////
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-06-22 01:57:43 +02:00
|
|
|
void crequest_target_change(NodePath path);
|
2019-06-18 15:33:28 +02:00
|
|
|
void net_sets_target(NodePath path);
|
|
|
|
void net_setc_target(NodePath path);
|
|
|
|
|
2019-04-20 14:02:55 +02:00
|
|
|
Entity *gets_target();
|
|
|
|
void sets_target(Node *p_target);
|
|
|
|
|
|
|
|
Entity *getc_target();
|
|
|
|
void setc_target(Node *p_target);
|
|
|
|
|
2019-09-16 21:57:55 +02:00
|
|
|
//// Talents ////
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-10-06 18:51:16 +02:00
|
|
|
int gets_free_talent_points();
|
|
|
|
void sets_free_talent_points(int value);
|
|
|
|
|
|
|
|
int getc_free_talent_points();
|
|
|
|
void setc_free_talent_points(int value);
|
|
|
|
|
2019-10-06 16:47:03 +02:00
|
|
|
void crequest_talent_learn(int spec_index, int talent_row, int talent_culomn);
|
|
|
|
void sreceive_talent_learn_request(int spec_index, int talent_row, int talent_culomn);
|
|
|
|
void _sreceive_talent_learn_request(int spec_index, int talent_row, int talent_culomn);
|
2019-09-17 14:06:41 +02:00
|
|
|
|
|
|
|
void crequest_talent_reset();
|
|
|
|
void sreceive_reset_talent_request();
|
2019-10-06 16:47:03 +02:00
|
|
|
void _sreceive_reset_talent_request();
|
|
|
|
|
|
|
|
void sreset_talents();
|
|
|
|
void creset_talents();
|
|
|
|
|
|
|
|
void adds_talent(int talent);
|
|
|
|
void removes_talent(int talent);
|
|
|
|
bool hass_talent(int talent);
|
|
|
|
int gets_talent(int index);
|
|
|
|
int gets_talent_count();
|
|
|
|
void sclear_talents();
|
|
|
|
|
|
|
|
void addc_talent(int talent);
|
|
|
|
void removec_talent(int talent);
|
|
|
|
bool hasc_talent(int talent);
|
|
|
|
int getc_talent(int index);
|
|
|
|
int getc_talent_count();
|
|
|
|
void cclear_talents();
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-09-16 21:57:55 +02:00
|
|
|
//// Inventory ////
|
|
|
|
|
|
|
|
Ref<Bag> gets_bag() const;
|
|
|
|
void sets_bag(const Ref<Bag> bag);
|
2019-10-09 14:37:23 +02:00
|
|
|
|
|
|
|
Ref<Bag> getc_bag() const;
|
2019-09-16 21:57:55 +02:00
|
|
|
void setc_bag(const Ref<Bag> bag);
|
|
|
|
|
|
|
|
Ref<Bag> gets_target_bag() const;
|
|
|
|
void sets_target_bag(const Ref<Bag> bag);
|
|
|
|
|
|
|
|
Ref<Bag> getc_target_bag() const;
|
|
|
|
void setc_target_bag(const Ref<Bag> bag);
|
|
|
|
|
2019-10-29 00:15:52 +01:00
|
|
|
void setc_bag_rpc(String data);
|
|
|
|
void setc_target_bag_rpc(String data);
|
|
|
|
|
2019-10-02 13:23:04 +02:00
|
|
|
void crequest_loot(int index);
|
|
|
|
void sloot(int index);
|
2019-11-04 16:50:53 +01:00
|
|
|
void cloot(int index);
|
|
|
|
|
|
|
|
void ons_item_added(Ref<Bag> bag, Ref<ItemInstance> item, int slot_id);
|
|
|
|
void cadd_item_rpc(int slot_id, String item_data);
|
|
|
|
void cadd_item(int slot_id, Ref<ItemInstance> item);
|
|
|
|
|
|
|
|
//Bag
|
|
|
|
void ons_item_removed(Ref<Bag> bag, Ref<ItemInstance> item, int slot_id);
|
|
|
|
void sremove_item(const int slot_id);
|
|
|
|
void cremove_item(const int slot_id);
|
|
|
|
void cdenyremove_item(const int slot_id);
|
|
|
|
void crequest_remove_item(const int slot_id);
|
|
|
|
|
|
|
|
void ons_items_swapped(Ref<Bag> bag, int slot_id_1, int slot_id_2);
|
|
|
|
void sswap_items(int slot_id_1, int slot_id_2);
|
|
|
|
void cswap_items(int slot_id_1, int slot_id_2);
|
|
|
|
void cdeny_item_swap(int slot_id_1, int slot_id_2);
|
|
|
|
void crequest_item_swap(int slot_id_1, int slot_id_2);
|
|
|
|
|
|
|
|
void ons_item_count_changed(Ref<Bag> bag, Ref<ItemInstance> item, int slot_id);
|
|
|
|
void cchange_item_count(int slot_id, int new_count);
|
|
|
|
|
|
|
|
void ons_overburdened(Ref<Bag> bag);
|
|
|
|
void ons_overburden_removed(Ref<Bag> bag);
|
|
|
|
|
|
|
|
//Target Bag
|
|
|
|
void ons_target_item_added(Ref<Bag> bag, Ref<ItemInstance> item, int slot_id);
|
|
|
|
void cadd_target_item_rpc(int slot_id, String item_data);
|
|
|
|
void cadd_target_item(int slot_id, Ref<ItemInstance> item);
|
|
|
|
|
|
|
|
void ons_target_item_removed(Ref<Bag> bag, Ref<ItemInstance> item, int slot_id);
|
|
|
|
void sremove_target_item(const int slot_id);
|
|
|
|
void cremove_target_item(const int slot_id);
|
|
|
|
void cdenyremove_target_item(const int slot_id);
|
|
|
|
void crequest_target_remove_item(const int slot_id);
|
|
|
|
|
|
|
|
void ons_target_items_swapped(Ref<Bag> bag, int slot_id_1, int slot_id_2);
|
|
|
|
void sswap_target_items(int slot_id_1, int slot_id_2);
|
|
|
|
void cswap_target_items(int slot_id_1, int slot_id_2);
|
|
|
|
void cdeny_target_item_swap(int slot_id_1, int slot_id_2);
|
|
|
|
void crequest_target_item_swap(int slot_id_1, int slot_id_2);
|
|
|
|
|
|
|
|
void ons_target_item_count_changed(Ref<Bag> bag, Ref<ItemInstance> item, int slot_id);
|
|
|
|
void cchange_target_item_count(int slot_id, int new_count);
|
2019-10-02 13:23:04 +02:00
|
|
|
|
2019-09-12 13:26:52 +02:00
|
|
|
//// Data ////
|
2019-10-06 16:47:03 +02:00
|
|
|
|
2019-09-11 15:06:30 +02:00
|
|
|
void adds_data(Ref<EntityDataContainer> data);
|
|
|
|
void removes_data(int index);
|
|
|
|
Ref<EntityDataContainer> gets_data(int index);
|
|
|
|
int gets_data_count();
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
void addc_data(Ref<EntityDataContainer> data);
|
2019-09-11 15:06:30 +02:00
|
|
|
void removec_data(int index);
|
|
|
|
Ref<EntityDataContainer> getc_data(int index);
|
|
|
|
int getc_data_count();
|
|
|
|
|
2019-10-14 19:49:40 +02:00
|
|
|
//// Actionbars ////
|
|
|
|
|
|
|
|
bool get_actionbar_locked();
|
|
|
|
void set_actionbar_locked(bool value);
|
|
|
|
|
|
|
|
Ref<ActionBarProfile> get_action_bar_profile();
|
|
|
|
|
2019-04-20 14:02:55 +02:00
|
|
|
void loaded();
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-04-20 14:02:55 +02:00
|
|
|
String random_name();
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
void setup();
|
2019-09-16 21:57:55 +02:00
|
|
|
virtual void _setup();
|
2019-11-04 01:38:27 +01:00
|
|
|
void setup_actionbars();
|
2019-09-12 13:26:52 +02:00
|
|
|
|
2019-10-31 01:35:29 +01:00
|
|
|
//// AI ////
|
|
|
|
|
|
|
|
int get_formation_index();
|
|
|
|
void set_formation_index(int value);
|
|
|
|
|
2019-10-31 11:52:56 +01:00
|
|
|
Ref<AIFSMAction> gets_ai();
|
|
|
|
void sets_ai(Ref<AIFSMAction> value);
|
2019-10-31 01:35:29 +01:00
|
|
|
|
2019-10-15 18:34:19 +02:00
|
|
|
//// Serialization ////
|
|
|
|
|
|
|
|
bool is_deserialized();
|
|
|
|
|
2019-09-13 09:26:53 +02:00
|
|
|
Dictionary to_dict();
|
|
|
|
void from_dict(const Dictionary &dict);
|
|
|
|
|
2019-10-06 00:25:12 +02:00
|
|
|
virtual Dictionary _to_dict();
|
|
|
|
virtual void _from_dict(const Dictionary &dict);
|
2019-09-13 09:26:53 +02:00
|
|
|
|
2019-10-31 01:35:29 +01:00
|
|
|
// Networking
|
2019-10-28 16:53:48 +01:00
|
|
|
Entity *gets_sees(int index);
|
|
|
|
void removes_sees_index(int index);
|
|
|
|
void removes_sees(Entity *entity);
|
|
|
|
void removes_sees_bind(Node *entity);
|
|
|
|
void adds_sees(Entity *entity);
|
|
|
|
void adds_sees_bind(Node *entity);
|
|
|
|
int gets_sees_count();
|
|
|
|
|
2019-10-29 00:15:52 +01:00
|
|
|
Entity *gets_seen_by(int index);
|
|
|
|
void removes_seen_by_index(int index);
|
|
|
|
void removes_seen_by(Entity *entity);
|
|
|
|
void removes_seen_by_bind(Node *entity);
|
|
|
|
void adds_seen_by(Entity *entity);
|
|
|
|
void adds_seen_by_bind(Node *entity);
|
|
|
|
int gets_seen_by_count();
|
|
|
|
|
2019-10-28 16:53:48 +01:00
|
|
|
void vrpc(const StringName &p_method, VARIANT_ARG_LIST);
|
|
|
|
Variant _vrpc_bind(const Variant **p_args, int p_argcount, Variant::CallError &r_error);
|
2019-10-28 14:45:38 +01:00
|
|
|
|
2019-10-28 21:48:50 +01:00
|
|
|
Dictionary data_as_dict(String &data);
|
|
|
|
|
2019-08-16 02:24:32 +02:00
|
|
|
Entity();
|
|
|
|
~Entity();
|
2019-04-20 14:02:55 +02:00
|
|
|
|
|
|
|
protected:
|
|
|
|
static void _bind_methods();
|
2019-05-01 02:49:06 +02:00
|
|
|
virtual void _notification(int p_what);
|
2019-04-20 14:02:55 +02:00
|
|
|
virtual void update(float delta);
|
|
|
|
|
|
|
|
private:
|
|
|
|
const float SAVE_BASE_SECONDS = 10.0;
|
2019-10-13 20:05:03 +02:00
|
|
|
bool _deserialized;
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-05-01 02:49:06 +02:00
|
|
|
//// Paths ////
|
|
|
|
|
|
|
|
NodePath _character_skeleton_path;
|
|
|
|
CharacterSkeleton *_character_skeleton;
|
|
|
|
|
2019-04-20 14:02:55 +02:00
|
|
|
//// PlayerData ////
|
|
|
|
|
|
|
|
int _s_guid;
|
|
|
|
int _c_guid;
|
|
|
|
|
|
|
|
int _s_class_id;
|
|
|
|
int _c_class_id;
|
|
|
|
|
|
|
|
int _s_type;
|
|
|
|
int _c_type;
|
|
|
|
|
2019-11-03 22:39:19 +01:00
|
|
|
EntityEnums::EntityGender _s_gender;
|
|
|
|
EntityEnums::EntityGender _c_gender;
|
2019-04-20 14:02:55 +02:00
|
|
|
|
|
|
|
int _s_level;
|
|
|
|
int _c_level;
|
|
|
|
|
|
|
|
int _s_xp;
|
|
|
|
int _c_xp;
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
int _s_money;
|
|
|
|
int _c_money;
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-09-09 14:26:18 +02:00
|
|
|
Ref<EntityData> _s_entity_data;
|
|
|
|
Ref<EntityData> _c_entity_data;
|
2019-04-20 14:02:55 +02:00
|
|
|
|
|
|
|
int _s_send_flag;
|
|
|
|
|
2019-09-17 15:35:03 +02:00
|
|
|
String _s_entity_name;
|
|
|
|
String _c_entity_name;
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-09-16 21:57:55 +02:00
|
|
|
EntityEnums::EntityInteractionType _s_interaction_type;
|
|
|
|
EntityEnums::EntityInteractionType _c_interaction_type;
|
|
|
|
|
2019-10-31 01:35:29 +01:00
|
|
|
int _s_is_dead;
|
|
|
|
int _c_is_dead;
|
|
|
|
|
2019-11-04 01:38:27 +01:00
|
|
|
EntityEnums::AIStates _sai_state;
|
|
|
|
|
|
|
|
int _s_seed;
|
|
|
|
int _c_seed;
|
|
|
|
|
2019-04-20 14:02:55 +02:00
|
|
|
//// Stats ////
|
|
|
|
|
|
|
|
Ref<Stat> _stats[Stat::STAT_ID_TOTAL_STATS];
|
|
|
|
|
2019-10-07 00:29:05 +02:00
|
|
|
//// Equipment ////
|
|
|
|
|
2019-10-13 13:31:49 +02:00
|
|
|
Ref<ItemInstance> _s_equipment[ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX];
|
|
|
|
Ref<ItemInstance> _c_equipment[ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX];
|
2019-10-07 00:29:05 +02:00
|
|
|
|
2019-06-22 23:28:36 +02:00
|
|
|
//// Resources ////
|
|
|
|
|
|
|
|
Vector<Ref<EntityResource> > _s_resources;
|
|
|
|
Vector<Ref<EntityResource> > _c_resources;
|
|
|
|
|
2019-05-27 02:50:00 +02:00
|
|
|
//// GCD ////
|
2019-10-07 00:29:05 +02:00
|
|
|
|
2019-05-27 02:50:00 +02:00
|
|
|
float _s_gcd;
|
|
|
|
float _c_gcd;
|
|
|
|
|
|
|
|
//// States ////
|
2019-10-07 00:29:05 +02:00
|
|
|
|
2019-05-27 02:50:00 +02:00
|
|
|
int _s_states[EntityEnums::ENTITY_STATE_TYPE_INDEX_MAX];
|
|
|
|
|
|
|
|
int _s_state;
|
|
|
|
int _c_state;
|
|
|
|
|
2019-04-20 14:02:55 +02:00
|
|
|
//// SpellCastData ////
|
|
|
|
|
|
|
|
Ref<SpellCastInfo> _s_spell_cast_info;
|
|
|
|
Ref<SpellCastInfo> _c_spell_cast_info;
|
|
|
|
|
|
|
|
//// AuraComponent ////
|
|
|
|
|
2019-05-29 17:27:36 +02:00
|
|
|
Vector<Ref<AuraData> > _s_auras;
|
|
|
|
Vector<Ref<AuraData> > _c_auras;
|
2019-04-20 14:02:55 +02:00
|
|
|
|
|
|
|
EntityEnums::EntityType _s_entity_type;
|
|
|
|
EntityEnums::EntityType _c_entity_type;
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
int _s_immunity_flags;
|
|
|
|
|
|
|
|
int _s_entity_flags;
|
|
|
|
int _c_entity_flags;
|
|
|
|
|
|
|
|
EntityEnums::EntityController _s_entity_controller;
|
|
|
|
|
2019-05-27 02:50:00 +02:00
|
|
|
//// Cooldowns ////
|
2019-05-29 17:27:36 +02:00
|
|
|
Vector<Ref<Cooldown> > _s_cooldowns;
|
|
|
|
Vector<Ref<Cooldown> > _c_cooldowns;
|
2019-05-27 02:50:00 +02:00
|
|
|
|
2019-05-29 17:27:36 +02:00
|
|
|
HashMap<int, Ref<Cooldown> > _s_cooldown_map;
|
|
|
|
HashMap<int, Ref<Cooldown> > _c_cooldown_map;
|
2019-05-27 02:50:00 +02:00
|
|
|
|
2019-05-29 17:27:36 +02:00
|
|
|
Vector<Ref<CategoryCooldown> > _s_category_cooldowns;
|
|
|
|
Vector<Ref<CategoryCooldown> > _c_category_cooldowns;
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
int _s_active_category_cooldowns;
|
|
|
|
int _c_active_category_cooldowns;
|
2019-05-27 02:50:00 +02:00
|
|
|
|
2019-10-06 16:47:03 +02:00
|
|
|
//// Targeting ////
|
2019-04-20 14:02:55 +02:00
|
|
|
|
|
|
|
int _s_target_guid;
|
|
|
|
Entity *_s_target;
|
|
|
|
Entity *_c_target;
|
|
|
|
|
2019-10-06 16:47:03 +02:00
|
|
|
//// Talents ////
|
2019-04-20 14:02:55 +02:00
|
|
|
|
2019-10-06 18:51:16 +02:00
|
|
|
int _s_free_talent_points;
|
|
|
|
int _c_free_talent_points;
|
|
|
|
|
2019-10-06 16:47:03 +02:00
|
|
|
Vector<int> _s_talents;
|
|
|
|
Vector<int> _c_talents;
|
2019-09-12 13:26:52 +02:00
|
|
|
|
|
|
|
//// Data ////
|
2019-10-06 18:51:16 +02:00
|
|
|
|
2019-09-12 13:26:52 +02:00
|
|
|
Vector<Ref<EntityDataContainer> > _s_data;
|
2019-09-11 15:06:30 +02:00
|
|
|
Vector<Ref<EntityDataContainer> > _c_data;
|
2019-09-13 01:23:28 +02:00
|
|
|
|
2019-10-14 19:49:40 +02:00
|
|
|
//// Actionbars ////
|
|
|
|
|
|
|
|
bool _actionbar_locked;
|
|
|
|
Ref<ActionBarProfile> _action_bar_profile;
|
|
|
|
|
2019-10-07 16:31:43 +02:00
|
|
|
//// Crafting System ////
|
|
|
|
|
|
|
|
Vector<Ref<CraftRecipe> > _s_craft_recipes;
|
|
|
|
Vector<Ref<CraftRecipe> > _c_craft_recipes;
|
|
|
|
|
2019-09-13 01:23:28 +02:00
|
|
|
//// Known Spells ////
|
2019-10-06 18:51:16 +02:00
|
|
|
|
|
|
|
int _s_free_spell_points;
|
|
|
|
int _c_free_spell_points;
|
|
|
|
|
2019-09-13 01:23:28 +02:00
|
|
|
Vector<Ref<Spell> > _s_spells;
|
|
|
|
Vector<Ref<Spell> > _c_spells;
|
|
|
|
|
|
|
|
//// Skills ////
|
2019-10-07 00:29:05 +02:00
|
|
|
|
2019-09-13 01:23:28 +02:00
|
|
|
Vector<Ref<EntitySkill> > _s_skills;
|
|
|
|
Vector<Ref<EntitySkill> > _c_skills;
|
|
|
|
|
|
|
|
//// Stat Allocations ////
|
2019-10-07 00:29:05 +02:00
|
|
|
|
2019-09-13 01:23:28 +02:00
|
|
|
//int _unallocated_stats;
|
|
|
|
//int _stat_allocations[Stat::STAT_ID_TOTAL_STATS];
|
2019-09-16 21:57:55 +02:00
|
|
|
|
|
|
|
//// Inventory ////
|
|
|
|
|
|
|
|
Ref<Bag> _s_bag;
|
|
|
|
Ref<Bag> _c_bag;
|
|
|
|
|
|
|
|
Ref<Bag> _s_target_bag;
|
|
|
|
Ref<Bag> _c_target_bag;
|
2019-10-28 14:45:38 +01:00
|
|
|
|
2019-10-31 01:35:29 +01:00
|
|
|
//AI
|
|
|
|
|
|
|
|
int _formation_index;
|
2019-10-31 11:52:56 +01:00
|
|
|
Ref<AIFSMAction> _s_ai;
|
2019-10-31 01:35:29 +01:00
|
|
|
|
2019-10-28 14:45:38 +01:00
|
|
|
//Networking
|
2019-10-31 01:35:29 +01:00
|
|
|
|
2019-10-28 14:45:38 +01:00
|
|
|
Vector<Entity *> _s_sees;
|
2019-10-29 00:15:52 +01:00
|
|
|
Vector<Entity *> _s_seen_by;
|
2019-04-20 14:02:55 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|