mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-08-23 09:30:56 +02:00
Updated Map Server namespace. Moved all other data folders (www and sql) to data folder. Renamed boot name to Project Meteor.
This commit is contained in:
parent
18ef69f3d1
commit
91549bff7a
1823 changed files with 102704 additions and 901 deletions
723
Map Server/Actors/Chara/Ai/StatusEffect.cs
Normal file
723
Map Server/Actors/Chara/Ai/StatusEffect.cs
Normal file
|
@ -0,0 +1,723 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015-2019 Project Meteor Dev Team
|
||||
|
||||
This file is part of Project Meteor Server.
|
||||
|
||||
Project Meteor Server is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Project Meteor Server is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with Project Meteor Server. If not, see <https:www.gnu.org/licenses/>.
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
using Meteor.Map.Actors;
|
||||
using Meteor.Map.lua;
|
||||
using Meteor.Map.packets.send.actor.battle;
|
||||
using System;
|
||||
using MoonSharp.Interpreter;
|
||||
using Meteor.Common;
|
||||
|
||||
namespace Meteor.Map.actors.chara.ai
|
||||
{
|
||||
enum StatusEffectId : uint
|
||||
{
|
||||
RageofHalone = 221021,
|
||||
|
||||
Quick = 223001,
|
||||
Haste = 223002,
|
||||
Slow = 223003,
|
||||
Petrification = 223004,
|
||||
Paralysis = 223005,
|
||||
Silence = 223006,
|
||||
Blind = 223007,
|
||||
Mute = 223008,
|
||||
Slowcast = 223009,
|
||||
Glare = 223010,
|
||||
Poison = 223011,
|
||||
Transfixion = 223012,
|
||||
Pacification = 223013,
|
||||
Amnesia = 223014,
|
||||
Stun = 223015,
|
||||
Daze = 223016,
|
||||
ExposedFront = 223017,
|
||||
ExposedRight = 223018,
|
||||
ExposedRear = 223019,
|
||||
ExposedLeft = 223020,
|
||||
Incapacitation = 223021,
|
||||
Incapacitation2 = 223022,
|
||||
Incapacitation3 = 223023,
|
||||
Incapacitation4 = 223024,
|
||||
Incapacitation5 = 223025,
|
||||
Incapacitation6 = 223026,
|
||||
Incapacitation7 = 223027,
|
||||
Incapacitation8 = 223028,
|
||||
HPBoost = 223029,
|
||||
HPPenalty = 223030,
|
||||
MPBoost = 223031,
|
||||
MPPenalty = 223032,
|
||||
AttackUp = 223033,
|
||||
AttackDown = 223034,
|
||||
AccuracyUp = 223035,
|
||||
AccuracyDown = 223036,
|
||||
DefenseUp = 223037,
|
||||
DefenseDown = 223038,
|
||||
EvasionUp = 223039,
|
||||
EvasionDown = 223040,
|
||||
MagicPotencyUp = 223041,
|
||||
MagicPotencyDown = 223042,
|
||||
MagicAccuracyUp = 223043,
|
||||
MagicAccuracyDown = 223044,
|
||||
MagicDefenseUp = 223045,
|
||||
MagicDefenseDown = 223046,
|
||||
MagicResistanceUp = 223047,
|
||||
MagicResistanceDown = 223048,
|
||||
CombatFinesse = 223049,
|
||||
CombatHindrance = 223050,
|
||||
MagicFinesse = 223051,
|
||||
MagicHindrance = 223052,
|
||||
CombatResilience = 223053,
|
||||
CombatVulnerability = 223054,
|
||||
MagicVulnerability = 223055,
|
||||
MagicResilience = 223056,
|
||||
Inhibited = 223057,
|
||||
AegisBoon = 223058,
|
||||
Deflection = 223059,
|
||||
Outmaneuver = 223060,
|
||||
Provoked = 223061,
|
||||
Sentinel = 223062,
|
||||
Cover = 223063,
|
||||
Rampart = 223064,
|
||||
StillPrecision = 223065,
|
||||
Cadence = 223066,
|
||||
DiscerningEye = 223067,
|
||||
TemperedWill = 223068,
|
||||
Obsess = 223069,
|
||||
Ambidexterity = 223070,
|
||||
BattleCalm = 223071,
|
||||
MasterofArms = 223072,
|
||||
Taunted = 223073,
|
||||
Blindside = 223074,
|
||||
Featherfoot = 223075,
|
||||
PresenceofMind = 223076,
|
||||
CoeurlStep = 223077,
|
||||
EnduringMarch = 223078,
|
||||
MurderousIntent = 223079,
|
||||
Entrench = 223080,
|
||||
Bloodbath = 223081,
|
||||
Retaliation = 223082,
|
||||
Foresight = 223083,
|
||||
Defender = 223084,
|
||||
Rampage = 223085, //old effect
|
||||
Enraged = 223086,
|
||||
Warmonger = 223087,
|
||||
Disorientx1 = 223088,
|
||||
Disorientx2 = 223089,
|
||||
Disorientx3 = 223090,
|
||||
KeenFlurry = 223091,
|
||||
ComradeinArms = 223092,
|
||||
Ferocity = 223093,
|
||||
Invigorate = 223094,
|
||||
LineofFire = 223095,
|
||||
Jump = 223096,
|
||||
Collusion = 223097,
|
||||
Diversion = 223098,
|
||||
SpeedSurge = 223099,
|
||||
LifeSurge = 223100,
|
||||
SpeedSap = 223101,
|
||||
LifeSap = 223102,
|
||||
Farshot = 223103,
|
||||
QuellingStrike = 223104,
|
||||
RagingStrike = 223105, //old effect
|
||||
HawksEye = 223106,
|
||||
SubtleRelease = 223107,
|
||||
Decoy = 223108, //Untraited
|
||||
Profundity = 223109,
|
||||
TranceChant = 223110,
|
||||
RoamingSoul = 223111,
|
||||
Purge = 223112,
|
||||
Spiritsong = 223113,
|
||||
Resonance = 223114, //Old Resonance? Both have the same icons and description
|
||||
Soughspeak = 223115,
|
||||
PresenceofMind2 = 223116,
|
||||
SanguineRite = 223117, //old effect
|
||||
PunishingBarbs = 223118,
|
||||
DarkSeal = 223119, //old effect
|
||||
Emulate = 223120,
|
||||
ParadigmShift = 223121,
|
||||
ConcussiveBlowx1 = 223123,
|
||||
ConcussiveBlowx2 = 223124,
|
||||
ConcussiveBlowx3 = 223125,
|
||||
SkullSunder = 223126,
|
||||
Bloodletter = 223127, //comboed effect
|
||||
Levinbolt = 223128,
|
||||
Protect = 223129, //untraited protect
|
||||
Shell = 223130, //old shell
|
||||
Reraise = 223131,
|
||||
ShockSpikes = 223132,
|
||||
Stoneskin = 223133,
|
||||
Scourge = 223134,
|
||||
Bio = 223135,
|
||||
Dia = 223136,
|
||||
Banish = 223137,
|
||||
StygianSpikes = 223138,
|
||||
ATKAbsorbed = 223139,
|
||||
DEFAbsorbed = 223140,
|
||||
ACCAbsorbed = 223141,
|
||||
EVAAbsorbed = 223142,
|
||||
AbsorbATK = 223143,
|
||||
AbsorbDEF = 223144,
|
||||
AbsorbACC = 223145,
|
||||
AbsorbEVA = 223146,
|
||||
SoulWard = 223147,
|
||||
Burn = 223148,
|
||||
Frost = 223149,
|
||||
Shock = 223150,
|
||||
Drown = 223151,
|
||||
Choke = 223152,
|
||||
Rasp = 223153,
|
||||
Flare = 223154,
|
||||
Freeze = 223155,
|
||||
Burst = 223156,
|
||||
Flood = 223157,
|
||||
Tornado = 223158,
|
||||
Quake = 223159,
|
||||
Berserk = 223160,
|
||||
RegimenofRuin = 223161,
|
||||
RegimenofTrauma = 223162,
|
||||
RegimenofDespair = 223163,
|
||||
RegimenofConstraint = 223164,
|
||||
Weakness = 223165,
|
||||
Scavenge = 223166,
|
||||
Fastcast = 223167,
|
||||
MidnightHowl = 223168,
|
||||
Outlast = 223169,
|
||||
Steadfast = 223170,
|
||||
DoubleNock = 223171,
|
||||
TripleNock = 223172,
|
||||
Covered = 223173,
|
||||
PerfectDodge = 223174,
|
||||
ExpertMining = 223175,
|
||||
ExpertLogging = 223176,
|
||||
ExpertHarvesting = 223177,
|
||||
ExpertFishing = 223178,
|
||||
ExpertSpearfishing = 223179,
|
||||
Regen = 223180,
|
||||
Refresh = 223181,
|
||||
Regain = 223182,
|
||||
TPBleed = 223183,
|
||||
Empowered = 223184,
|
||||
Imperiled = 223185,
|
||||
Adept = 223186,
|
||||
Inept = 223187,
|
||||
Quick2 = 223188,
|
||||
Quick3 = 223189,
|
||||
WristFlick = 223190,
|
||||
Glossolalia = 223191,
|
||||
SonorousBlast = 223192,
|
||||
Comradery = 223193,
|
||||
StrengthinNumbers = 223194,
|
||||
|
||||
BrinkofDeath = 223197,
|
||||
CraftersGrace = 223198,
|
||||
GatherersGrace = 223199,
|
||||
Rebirth = 223200,
|
||||
Stealth = 223201,
|
||||
StealthII = 223202,
|
||||
StealthIII = 223203,
|
||||
StealthIV = 223204,
|
||||
Combo = 223205,
|
||||
GoringBlade = 223206,
|
||||
Berserk2 = 223207, //new effect
|
||||
Rampage2 = 223208, //new effect
|
||||
FistsofFire = 223209,
|
||||
FistsofEarth = 223210,
|
||||
FistsofWind = 223211,
|
||||
PowerSurgeI = 223212,
|
||||
PowerSurgeII = 223213,
|
||||
PowerSurgeIII = 223214,
|
||||
LifeSurgeI = 223215,
|
||||
LifeSurgeII = 223216,
|
||||
LifeSurgeIII = 223217,
|
||||
DreadSpike = 223218,
|
||||
BloodforBlood = 223219,
|
||||
Barrage = 223220,
|
||||
RagingStrike2 = 223221,
|
||||
|
||||
Swiftsong = 223224,
|
||||
SacredPrism = 223225,
|
||||
ShroudofSaints = 223226,
|
||||
ClericStance = 223227,
|
||||
BlissfulMind = 223228,
|
||||
DarkSeal2 = 223229, //new effect
|
||||
Resonance2 = 223230,
|
||||
Excruciate = 223231,
|
||||
Necrogenesis = 223232,
|
||||
Parsimony = 223233,
|
||||
SanguineRite2 = 223234, //untraited effect
|
||||
Aero = 223235,
|
||||
Outmaneuver2 = 223236,
|
||||
Blindside2 = 223237,
|
||||
Decoy2 = 223238, //Traited
|
||||
Protect2 = 223239, //Traited
|
||||
SanguineRite3 = 223240, //Traited
|
||||
Bloodletter2 = 223241, //uncomboed effect
|
||||
FullyBlissfulMind = 223242,
|
||||
MagicEvasionDown = 223243,
|
||||
HundredFists = 223244,
|
||||
SpinningHeel = 223245,
|
||||
DivineVeil = 223248,
|
||||
HallowedGround = 223249,
|
||||
Vengeance = 223250,
|
||||
Antagonize = 223251,
|
||||
MightyStrikes = 223252,
|
||||
BattleVoice = 223253,
|
||||
BalladofMagi = 223254,
|
||||
PaeonofWar = 223255,
|
||||
MinuetofRigor = 223256,
|
||||
GoldLung = 223258,
|
||||
Goldbile = 223259,
|
||||
AurumVeil = 223260,
|
||||
AurumVeilII = 223261,
|
||||
Flare2 = 223262,
|
||||
Resting = 223263,
|
||||
DivineRegen = 223264,
|
||||
DefenseAndEvasionUp = 223265,
|
||||
MagicDefenseAndEvasionUp = 223266,
|
||||
AttackUp2 = 223267,
|
||||
MagicPotencyUp2 = 223268,
|
||||
DefenseAndEvasionDown = 223269,
|
||||
MagicDefenseAndEvasionDown = 223270,
|
||||
Poison2 = 223271,
|
||||
DeepBurn = 223272,
|
||||
LunarCurtain = 223273,
|
||||
DefenseUp2 = 223274,
|
||||
AttackDown2 = 223275,
|
||||
Sanction = 223992,
|
||||
IntactPodlingToting = 223993,
|
||||
RedRidingHooded = 223994,
|
||||
Medicated = 223998,
|
||||
WellFed = 223999,
|
||||
|
||||
Sleep = 228001,
|
||||
Bind = 228011,
|
||||
Fixation = 228012,
|
||||
Bind2 = 228013,
|
||||
Heavy = 228021,
|
||||
Charm = 228031,
|
||||
Flee = 228041,
|
||||
Doom = 228051,
|
||||
SynthesisSupport = 230001,
|
||||
WoodyardAccess = 230002,
|
||||
SmithsForgeAccess = 230003,
|
||||
ArmorersForgeAccess = 230004,
|
||||
GemmaryAccess = 230005,
|
||||
TanneryAccess = 230006,
|
||||
ClothshopAccess = 230007,
|
||||
LaboratoryAccess = 230008,
|
||||
CookeryAccess = 230009,
|
||||
MinersSupport = 230010,
|
||||
BotanistsSupport = 230011,
|
||||
FishersSupport = 230012,
|
||||
GearChange = 230013,
|
||||
GearDamage = 230014,
|
||||
HeavyGearDamage = 230015,
|
||||
Lamed = 230016,
|
||||
Lamed2 = 230017,
|
||||
Lamed3 = 230018,
|
||||
Poison3 = 231002,
|
||||
Envenom = 231003,
|
||||
Berserk4 = 231004,
|
||||
GuardiansAspect = 253002,
|
||||
|
||||
|
||||
// custom effects here
|
||||
// status for having procs fall off
|
||||
EvadeProc = 300000,
|
||||
BlockProc = 300001,
|
||||
ParryProc = 300002,
|
||||
MissProc = 300003,
|
||||
EXPChain = 300004
|
||||
}
|
||||
|
||||
[Flags]
|
||||
enum StatusEffectFlags : uint
|
||||
{
|
||||
None = 0,
|
||||
|
||||
//Loss flags - Do we need loseonattacking/caststart? Could just be done with activate flags
|
||||
LoseOnDeath = 1 << 0, // effects removed on death
|
||||
LoseOnZoning = 1 << 1, // effects removed on zoning
|
||||
LoseOnEsuna = 1 << 2, // effects which can be removed with esuna (debuffs)
|
||||
LoseOnDispel = 1 << 3, // some buffs which player might be able to dispel from mob
|
||||
LoseOnLogout = 1 << 4, // effects removed on logging out
|
||||
LoseOnAttacking = 1 << 5, // effects removed when owner attacks another entity
|
||||
LoseOnCastStart = 1 << 6, // effects removed when owner starts casting
|
||||
LoseOnAggro = 1 << 7, // effects removed when owner gains enmity (swiftsong)
|
||||
LoseOnClassChange = 1 << 8, //Effect falls off whhen changing class
|
||||
|
||||
//Activate flags
|
||||
ActivateOnCastStart = 1 << 9, //Activates when a cast starts.
|
||||
ActivateOnCommandStart = 1 << 10, //Activates when a command is used, before iterating over targets. Used for things like power surge, excruciate.
|
||||
ActivateOnCommandFinish = 1 << 11, //Activates when the command is finished, after all targets have been iterated over. Used for things like Excruciate and Resonance falling off.
|
||||
ActivateOnPreactionTarget = 1 << 12, //Activates after initial rates are calculated for an action against owner
|
||||
ActivateOnPreactionCaster = 1 << 13, //Activates after initial rates are calculated for an action by owner
|
||||
ActivateOnDamageTaken = 1 << 14,
|
||||
ActivateOnHealed = 1 << 15,
|
||||
|
||||
//Should these be rolled into DamageTaken?
|
||||
ActivateOnMiss = 1 << 16, //Activates when owner misses
|
||||
ActivateOnEvade = 1 << 17, //Activates when owner evades
|
||||
ActivateOnParry = 1 << 18, //Activates when owner parries
|
||||
ActivateOnBlock = 1 << 19, //Activates when owner evades
|
||||
ActivateOnHit = 1 << 20, //Activates when owner hits
|
||||
ActivateOnCrit = 1 << 21, //Activates when owner crits
|
||||
|
||||
//Prevent flags. Sleep/stun/petrify/etc combine these
|
||||
PreventSpell = 1 << 22, // effects which prevent using spells, such as silence
|
||||
PreventWeaponSkill = 1 << 23, // effects which prevent using weaponskills, such as pacification
|
||||
PreventAbility = 1 << 24, // effects which prevent using abilities, such as amnesia
|
||||
PreventAttack = 1 << 25, // effects which prevent basic attacks
|
||||
PreventMovement = 1 << 26, // effects which prevent movement such as bind, still allows turning in place
|
||||
PreventTurn = 1 << 27, // effects which prevent turning, such as stun
|
||||
PreventUntarget = 1 << 28, // effects which prevent changing targets, such as fixation
|
||||
Stance = 1 << 29 // effects that do not have a timer
|
||||
}
|
||||
|
||||
enum StatusEffectOverwrite : byte
|
||||
{
|
||||
None,
|
||||
Always,
|
||||
GreaterOrEqualTo,
|
||||
GreaterOnly,
|
||||
}
|
||||
|
||||
class StatusEffect
|
||||
{
|
||||
// todo: probably use get;set;
|
||||
private Character owner;
|
||||
private Character source;
|
||||
private StatusEffectId id;
|
||||
private string name; // name of this effect
|
||||
private DateTime startTime; // when was this effect added
|
||||
private DateTime endTime; // when this status falls off
|
||||
private DateTime lastTick; // when did this effect last tick
|
||||
private uint duration; // how long should this effect last in seconds
|
||||
private uint tickMs; // how often should this effect proc
|
||||
private double magnitude; // a value specified by scripter which is guaranteed to be used by all effects
|
||||
private byte tier; // same effect with higher tier overwrites this
|
||||
private double extra; // optional value
|
||||
private StatusEffectFlags flags; // death/erase/dispel etc
|
||||
private StatusEffectOverwrite overwrite; // how to handle adding an effect with same id (see StatusEfectOverwrite)
|
||||
private bool silentOnGain = false; //Whether a message is sent when the status is gained
|
||||
private bool silentOnLoss = false; //Whether a message is sent when the status is lost
|
||||
private bool hidden = false; //Whether this status is shown. Used for things that aren't really status effects like exp chains and procs
|
||||
private ushort statusGainTextId = 30328; //The text id used when the status is gained. 30328: [Command] grants you the effect of [status] (Used for buffs)
|
||||
private ushort statusLossTextId = 30331; //The text id used when the status effect falls off when its time runs out. 30331: You are no longer under the effect of [status] (Used for buffs)
|
||||
public LuaScript script;
|
||||
|
||||
HitEffect animationEffect;
|
||||
|
||||
public StatusEffect(Character owner, uint id, double magnitude, uint tickMs, uint duration, byte tier = 0)
|
||||
{
|
||||
this.owner = owner;
|
||||
this.source = owner;
|
||||
this.id = (StatusEffectId)id;
|
||||
this.magnitude = magnitude;
|
||||
this.tickMs = tickMs;
|
||||
this.duration = duration;
|
||||
this.tier = tier;
|
||||
|
||||
this.startTime = DateTime.Now;
|
||||
this.lastTick = startTime;
|
||||
}
|
||||
|
||||
public StatusEffect(Character owner, StatusEffect effect)
|
||||
{
|
||||
this.owner = owner;
|
||||
this.source = owner;
|
||||
this.id = effect.id;
|
||||
this.magnitude = effect.magnitude;
|
||||
this.tickMs = effect.tickMs;
|
||||
this.duration = effect.duration;
|
||||
this.tier = effect.tier;
|
||||
this.startTime = effect.startTime;
|
||||
this.lastTick = effect.lastTick;
|
||||
|
||||
this.name = effect.name;
|
||||
this.flags = effect.flags;
|
||||
this.overwrite = effect.overwrite;
|
||||
this.statusGainTextId = effect.statusGainTextId;
|
||||
this.statusLossTextId = effect.statusLossTextId;
|
||||
this.extra = effect.extra;
|
||||
this.script = effect.script;
|
||||
this.silentOnGain = effect.silentOnGain;
|
||||
this.silentOnLoss = effect.silentOnLoss;
|
||||
this.hidden = effect.hidden;
|
||||
}
|
||||
|
||||
public StatusEffect(uint id, string name, uint flags, uint overwrite, uint tickMs, bool hidden, bool silentOnGain, bool silentOnLoss, ushort statusGainTextId, ushort statusLossTextId)
|
||||
{
|
||||
this.id = (StatusEffectId)id;
|
||||
this.name = name;
|
||||
this.flags = (StatusEffectFlags)flags;
|
||||
this.overwrite = (StatusEffectOverwrite)overwrite;
|
||||
this.tickMs = tickMs;
|
||||
this.hidden = hidden;
|
||||
this.silentOnGain = silentOnGain;
|
||||
this.silentOnLoss = silentOnLoss;
|
||||
this.statusGainTextId = statusGainTextId;
|
||||
this.statusLossTextId = statusLossTextId;
|
||||
}
|
||||
|
||||
// return true when duration has elapsed
|
||||
public bool Update(DateTime tick, CommandResultContainer resultContainer = null)
|
||||
{
|
||||
if (tickMs != 0 && (tick - lastTick).TotalMilliseconds >= tickMs)
|
||||
{
|
||||
lastTick = tick;
|
||||
if (LuaEngine.CallLuaStatusEffectFunction(this.owner, this, "onTick", this.owner, this, resultContainer) > 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
if (duration >= 0 && tick >= endTime)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public int CallLuaFunction(Character chara, string functionName, params object[] args)
|
||||
{
|
||||
|
||||
DynValue res = new DynValue();
|
||||
|
||||
return lua.LuaEngine.CallLuaStatusEffectFunction(chara, this, functionName, args);
|
||||
if (!script.Globals.Get(functionName).IsNil())
|
||||
{
|
||||
res = script.Call(script.Globals.Get(functionName), args);
|
||||
if (res != null)
|
||||
return (int)res.Number;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Character GetOwner()
|
||||
{
|
||||
return owner;
|
||||
}
|
||||
|
||||
public Character GetSource()
|
||||
{
|
||||
return source ?? owner;
|
||||
}
|
||||
|
||||
public uint GetStatusEffectId()
|
||||
{
|
||||
return (uint)id;
|
||||
}
|
||||
|
||||
public ushort GetStatusId()
|
||||
{
|
||||
return (ushort)(id - 200000);
|
||||
}
|
||||
|
||||
public DateTime GetStartTime()
|
||||
{
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public DateTime GetEndTime()
|
||||
{
|
||||
return endTime;
|
||||
}
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public uint GetDuration()
|
||||
{
|
||||
return duration;
|
||||
}
|
||||
|
||||
public uint GetTickMs()
|
||||
{
|
||||
return tickMs;
|
||||
}
|
||||
|
||||
public double GetMagnitude()
|
||||
{
|
||||
return magnitude;
|
||||
}
|
||||
|
||||
public byte GetTier()
|
||||
{
|
||||
return tier;
|
||||
}
|
||||
|
||||
public double GetExtra()
|
||||
{
|
||||
return extra;
|
||||
}
|
||||
|
||||
public uint GetFlags()
|
||||
{
|
||||
return (uint)flags;
|
||||
}
|
||||
|
||||
public byte GetOverwritable()
|
||||
{
|
||||
return (byte)overwrite;
|
||||
}
|
||||
|
||||
public bool GetSilentOnGain()
|
||||
{
|
||||
return silentOnGain;
|
||||
}
|
||||
|
||||
public bool GetSilentOnLoss()
|
||||
{
|
||||
return silentOnLoss;
|
||||
}
|
||||
|
||||
public bool GetHidden()
|
||||
{
|
||||
return hidden;
|
||||
}
|
||||
|
||||
public ushort GetStatusGainTextId()
|
||||
{
|
||||
return statusGainTextId;
|
||||
}
|
||||
|
||||
public ushort GetStatusLossTextId()
|
||||
{
|
||||
return statusLossTextId;
|
||||
}
|
||||
|
||||
public void SetStartTime(DateTime time)
|
||||
{
|
||||
this.startTime = time;
|
||||
this.lastTick = time;
|
||||
}
|
||||
|
||||
public void SetEndTime(DateTime time)
|
||||
{
|
||||
//If it's a stance, just set endtime to highest number possible for XIV
|
||||
if ((flags & StatusEffectFlags.Stance) != 0)
|
||||
{
|
||||
endTime = Utils.UnixTimeStampToDateTime(4294967295);
|
||||
}
|
||||
else
|
||||
{
|
||||
endTime = time;
|
||||
}
|
||||
}
|
||||
|
||||
//Refresh the status, updating the end time based on the duration of the status and broadcasts the new time
|
||||
public void RefreshTime()
|
||||
{
|
||||
endTime = DateTime.Now.AddSeconds(GetDuration());
|
||||
int index = Array.IndexOf(owner.charaWork.status, GetStatusId());
|
||||
|
||||
if (index >= 0)
|
||||
owner.statusEffects.SetTimeAtIndex(index, (uint) Utils.UnixTimeStampUTC(endTime));
|
||||
}
|
||||
|
||||
public void SetOwner(Character owner)
|
||||
{
|
||||
this.owner = owner;
|
||||
}
|
||||
|
||||
public void SetSource(Character source)
|
||||
{
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
public void SetName(string name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void SetMagnitude(double magnitude)
|
||||
{
|
||||
this.magnitude = magnitude;
|
||||
}
|
||||
|
||||
public void SetDuration(uint duration)
|
||||
{
|
||||
this.duration = duration;
|
||||
}
|
||||
|
||||
public void SetTickMs(uint tickMs)
|
||||
{
|
||||
this.tickMs = tickMs;
|
||||
}
|
||||
|
||||
public void SetTier(byte tier)
|
||||
{
|
||||
this.tier = tier;
|
||||
}
|
||||
|
||||
public void SetExtra(double val)
|
||||
{
|
||||
this.extra = val;
|
||||
}
|
||||
|
||||
public void SetFlags(uint flags)
|
||||
{
|
||||
this.flags = (StatusEffectFlags)flags;
|
||||
}
|
||||
|
||||
public void SetOverwritable(byte overwrite)
|
||||
{
|
||||
this.overwrite = (StatusEffectOverwrite)overwrite;
|
||||
}
|
||||
|
||||
public void SetSilentOnGain(bool silent)
|
||||
{
|
||||
this.silentOnGain = silent;
|
||||
}
|
||||
|
||||
public void SetSilentOnLoss(bool silent)
|
||||
{
|
||||
this.silentOnLoss = silent;
|
||||
}
|
||||
|
||||
public void SetHidden(bool hidden)
|
||||
{
|
||||
this.hidden = hidden;
|
||||
}
|
||||
|
||||
public void SetStatusGainTextId(ushort textId)
|
||||
{
|
||||
this.statusGainTextId = textId;
|
||||
}
|
||||
|
||||
public void SetStatusLossTextId(ushort textId)
|
||||
{
|
||||
this.statusLossTextId = textId;
|
||||
}
|
||||
|
||||
|
||||
public void SetAnimation(uint hitEffect)
|
||||
{
|
||||
animationEffect = (HitEffect)hitEffect;
|
||||
}
|
||||
|
||||
public uint GetAnimation()
|
||||
{
|
||||
return (uint)animationEffect;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue