added mob name colour update

- added mobmods (need to be loaded from db)
- added Zone.GetBattleNpcById
- added missing IsValidTarget check in AttackState
This commit is contained in:
Tahir Akhlaq
2017-09-10 03:41:58 +01:00
parent 9077c60b96
commit ce5030acd1
18 changed files with 434 additions and 22 deletions

View File

@@ -6,6 +6,7 @@ using System.Threading.Tasks;
using FFXIVClassic_Map_Server.Actors;
using MoonSharp;
using MoonSharp.Interpreter;
using FFXIVClassic_Map_Server.lua;
namespace FFXIVClassic_Map_Server.actors.chara.ai
{
@@ -15,8 +16,9 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
public uint durationMs;
public bool checkState;
// todo: lua function
Script script;
LuaScript script;
}
class ActionQueue
{
private Character owner;
@@ -27,7 +29,9 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
public ActionQueue(Character owner)
{
this.owner = owner;
actionQueue = new Queue<Action>();
timerQueue = new Queue<Action>();
}
public void PushAction(Action action)
@@ -45,5 +49,9 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
}
public void CheckAction(DateTime tick)
{
}
}
}

View File

@@ -363,8 +363,12 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.controllers
public override void ChangeTarget(Character target)
{
owner.target = target;
owner.currentLockedTarget = target != null ? target.actorId : 0xC0000000;
owner.currentTarget = target != null ? target.actorId : 0xC0000000;
owner.currentLockedTarget = target?.actorId ?? 0xC0000000;
owner.currentTarget = target?.actorId ?? 0xC0000000;
foreach (var player in owner.zone.GetActorsAroundActor<Player>(owner, 50))
player.QueuePacket(owner.GetHateTypePacket(player));
base.ChangeTarget(target);
}
}

View File

@@ -155,7 +155,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
owner.aiContainer.ChangeTarget(null);
return false;
}
else if (!owner.aiContainer.GetTargetFind().CanTarget(target, false, true))
else if (!owner.IsValidTarget(target, ValidTarget.Enemy) || !owner.aiContainer.GetTargetFind().CanTarget(target, false, true))
{
return false;
}