mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-06-09 05:54:50 +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
117
Data/scripts/ally.lua
Normal file
117
Data/scripts/ally.lua
Normal file
|
@ -0,0 +1,117 @@
|
|||
require ("global")
|
||||
require ("magic")
|
||||
require ("weaponskill")
|
||||
|
||||
allyGlobal =
|
||||
{
|
||||
}
|
||||
|
||||
function allyGlobal.onSpawn(ally, target)
|
||||
|
||||
end
|
||||
|
||||
function allyGlobal.onEngage(ally, target)
|
||||
|
||||
end
|
||||
|
||||
function allyGlobal.onAttack(ally, target, damage)
|
||||
|
||||
end
|
||||
|
||||
function allyGlobal.onDamageTaken(ally, attacker, damage)
|
||||
|
||||
end
|
||||
|
||||
function allyGlobal.onCombatTick(ally, target, tick, contentGroupCharas)
|
||||
allyGlobal.HelpPlayers(ally, contentGroupCharas)
|
||||
end
|
||||
|
||||
function allyGlobal.onDeath(ally, player, lastAttacker)
|
||||
|
||||
end
|
||||
|
||||
function allyGlobal.onDespawn(ally)
|
||||
|
||||
end
|
||||
|
||||
function allyGlobal.HelpPlayers(ally, contentGroupCharas, pickRandomTarget)
|
||||
print("helpPlayers");
|
||||
if contentGroupCharas and not ally.IsEngaged() then
|
||||
print("contentGroup exists");
|
||||
for chara in contentGroupCharas do
|
||||
print("looping");
|
||||
if chara then
|
||||
-- probably a player, or another ally
|
||||
-- todo: queue support actions, heal, try pull hate off player etc
|
||||
if chara.IsPlayer() then
|
||||
print("chara is a player");
|
||||
-- do stuff
|
||||
if not ally.IsEngaged() then
|
||||
if chara.IsEngaged() then
|
||||
allyGlobal.EngageTarget(ally, chara.target, nil);
|
||||
break;
|
||||
end
|
||||
end
|
||||
elseif chara.IsMonster() and chara.IsEngaged() then
|
||||
if not ally.IsEngaged() then
|
||||
print("Engaging monster that is engaged");
|
||||
allyGlobal.EngageTarget(ally, chara, nil);
|
||||
break;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function allyGlobal.tryAggro(ally, contentGroupCharas)
|
||||
local count = 0;
|
||||
if contentGroupCharas and not ally.IsEngaged() then
|
||||
for i = 0, #contentGroupCharas - 1 do
|
||||
if contentGroupCharas[i] and ally then
|
||||
if contentGroupCharas[i].IsPlayer() then
|
||||
-- probably a player, or another ally
|
||||
-- todo: queue support actions, heal, try pull hate off player etc
|
||||
if contentGroupCharas[i].target then
|
||||
if ally.aiContainer:GetTargetFind():CanTarget(contentGroupCharas[i].target) and contentGroupCharas[i].target.IsMonster() and contentGroupCharas[i].target.hateContainer:HasHateForTarget(contentGroupCharas[i]) then
|
||||
-- do stuff
|
||||
allyGlobal.EngageTarget(ally, contentGroupCharas[i].target, nil);
|
||||
break;
|
||||
end
|
||||
end
|
||||
elseif contentGroupCharas[i].IsMonster() and contentGroupCharas[i].IsEngaged() then
|
||||
if not ally.IsEngaged() then
|
||||
print("Engaging monster that is engaged");
|
||||
allyGlobal.EngageTarget(ally, contentGroupCharas[i], nil);
|
||||
break;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function allyGlobal.HealPlayer(ally, player)
|
||||
|
||||
end
|
||||
|
||||
function allyGlobal.SupportAction(ally, player)
|
||||
|
||||
end
|
||||
|
||||
function allyGlobal.EngageTarget(ally, target, contentGroupCharas)
|
||||
if contentGroupCharas then
|
||||
for chara in contentGroupCharas do
|
||||
if chara.IsMonster() then
|
||||
if chara.allegiance ~= ally.allegiance then
|
||||
ally.Engage(chara)
|
||||
break;
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif target then
|
||||
print("Engaging");
|
||||
ally.Engage(target)
|
||||
ally.hateContainer.AddBaseHate(target);
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue