mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-02 19:42:05 -04:00
opening quest stuff
This commit is contained in:
parent
9fc99faa5c
commit
92de857cda
@ -219,7 +219,7 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
{
|
{
|
||||||
MySqlCommand cmd = new MySqlCommand();
|
MySqlCommand cmd = new MySqlCommand();
|
||||||
cmd.Connection = conn;
|
cmd.Connection = conn;
|
||||||
cmd.CommandText = String.Format("INSERT INTO characters_parametersave(characterId, hp, hpMax, mp, mpMax, mainSkill, mainSkillLevel) VALUES(@characterId, 1, 1, 1, 1, @mainSkill, 1);", CharacterCreatorUtils.GetClassNameForId((short)charaInfo.currentClass));
|
cmd.CommandText = String.Format("INSERT INTO characters_parametersave(characterId, hp, hpMax, mp, mpMax, mainSkill, mainSkillLevel) VALUES(@characterId, 1900, 1000, 115, 115, @mainSkill, 1);", CharacterCreatorUtils.GetClassNameForId((short)charaInfo.currentClass));
|
||||||
cmd.Prepare();
|
cmd.Prepare();
|
||||||
|
|
||||||
cmd.Parameters.AddWithValue("@characterId", cid);
|
cmd.Parameters.AddWithValue("@characterId", cid);
|
||||||
|
@ -817,27 +817,27 @@ namespace FFXIVClassic_Map_Server
|
|||||||
{
|
{
|
||||||
if (reader.Read())
|
if (reader.Read())
|
||||||
{
|
{
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_PUG - 1] = reader.GetInt16("pug");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_PUG - 1] = reader.GetInt32("pug");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_GLA - 1] = reader.GetInt16("gla");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_GLA - 1] = reader.GetInt32("gla");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_MRD - 1] = reader.GetInt16("mrd");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_MRD - 1] = reader.GetInt32("mrd");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_ARC - 1] = reader.GetInt16("arc");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_ARC - 1] = reader.GetInt32("arc");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_LNC - 1] = reader.GetInt16("lnc");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_LNC - 1] = reader.GetInt32("lnc");
|
||||||
|
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_THM - 1] = reader.GetInt16("thm");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_THM - 1] = reader.GetInt32("thm");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_CNJ - 1] = reader.GetInt16("cnj");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_CNJ - 1] = reader.GetInt32("cnj");
|
||||||
|
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_CRP - 1] = reader.GetInt16("crp");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_CRP - 1] = reader.GetInt32("crp");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_BSM - 1] = reader.GetInt16("bsm");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_BSM - 1] = reader.GetInt32("bsm");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_ARM - 1] = reader.GetInt16("arm");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_ARM - 1] = reader.GetInt32("arm");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_GSM - 1] = reader.GetInt16("gsm");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_GSM - 1] = reader.GetInt32("gsm");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_LTW - 1] = reader.GetInt16("ltw");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_LTW - 1] = reader.GetInt32("ltw");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_WVR - 1] = reader.GetInt16("wvr");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_WVR - 1] = reader.GetInt32("wvr");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_ALC - 1] = reader.GetInt16("alc");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_ALC - 1] = reader.GetInt32("alc");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_CUL - 1] = reader.GetInt16("cul");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_CUL - 1] = reader.GetInt32("cul");
|
||||||
|
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_MIN - 1] = reader.GetInt16("min");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_MIN - 1] = reader.GetInt32("min");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_BTN - 1] = reader.GetInt16("btn");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_BTN - 1] = reader.GetInt32("btn");
|
||||||
player.charaWork.battleSave.skillPoint[Player.CLASSID_FSH - 1] = reader.GetInt16("fsh");
|
player.charaWork.battleSave.skillPoint[Player.CLASSID_FSH - 1] = reader.GetInt32("fsh");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1291,7 +1291,9 @@ namespace FFXIVClassic_Map_Server
|
|||||||
{
|
{
|
||||||
Program.Tick = DateTime.Now;
|
Program.Tick = DateTime.Now;
|
||||||
foreach (Zone zone in zoneList.Values)
|
foreach (Zone zone in zoneList.Values)
|
||||||
|
{
|
||||||
zone.Update(Program.Tick);
|
zone.Update(Program.Tick);
|
||||||
|
}
|
||||||
Program.LastTick = Program.Tick;
|
Program.LastTick = Program.Tick;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -438,6 +438,9 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
|
|
||||||
updateFlags = ActorUpdateFlags.None;
|
updateFlags = ActorUpdateFlags.None;
|
||||||
zone.BroadcastPacketsAroundActor(this, packets);
|
zone.BroadcastPacketsAroundActor(this, packets);
|
||||||
|
|
||||||
|
SetActorPropetyPacket hpInfo = new SetActorPropetyPacket("charaWork/exp");
|
||||||
|
hpInfo.AddTarget();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -489,13 +489,14 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
zoneId = actorId;
|
zoneId = actorId;
|
||||||
|
|
||||||
Npc npc;
|
Npc npc;
|
||||||
|
|
||||||
if (isMob)
|
if (isMob)
|
||||||
npc = new BattleNpc(mActorList.Count + 1, actorClass, uniqueId, this, x, y, z, rot, state, animId, null);
|
npc = new BattleNpc(mActorList.Count + 1, actorClass, uniqueId, this, x, y, z, rot, state, animId, null);
|
||||||
else
|
else
|
||||||
npc = new Npc(mActorList.Count + 1, actorClass, uniqueId, this, x, y, z, rot, state, animId, null);
|
npc = new Npc(mActorList.Count + 1, actorClass, uniqueId, this, x, y, z, rot, state, animId, null);
|
||||||
|
|
||||||
npc.LoadEventConditions(actorClass.eventConditions);
|
npc.LoadEventConditions(actorClass.eventConditions);
|
||||||
|
npc.SetMaxHP(300);
|
||||||
|
npc.SetHP(300);
|
||||||
|
|
||||||
AddActorToZone(npc);
|
AddActorToZone(npc);
|
||||||
|
|
||||||
|
@ -152,6 +152,7 @@ namespace FFXIVClassic_Map_Server.actors.area
|
|||||||
contentAreas.Add(areaName, new List<PrivateAreaContent>());
|
contentAreas.Add(areaName, new List<PrivateAreaContent>());
|
||||||
PrivateAreaContent contentArea = new PrivateAreaContent(this, classPath, areaName, 1, director, starterPlayer);
|
PrivateAreaContent contentArea = new PrivateAreaContent(this, classPath, areaName, 1, director, starterPlayer);
|
||||||
contentAreas[areaName].Add(contentArea);
|
contentAreas[areaName].Add(contentArea);
|
||||||
|
|
||||||
return contentArea;
|
return contentArea;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -167,6 +168,15 @@ namespace FFXIVClassic_Map_Server.actors.area
|
|||||||
public override void Update(DateTime tick)
|
public override void Update(DateTime tick)
|
||||||
{
|
{
|
||||||
base.Update(tick);
|
base.Update(tick);
|
||||||
|
foreach (var a in privateAreas.Values)
|
||||||
|
foreach(var b in a.Values)
|
||||||
|
b.Update(tick);
|
||||||
|
|
||||||
|
foreach (var a in contentAreas.Values)
|
||||||
|
foreach (var b in a)
|
||||||
|
{
|
||||||
|
b.Update(tick);
|
||||||
|
}
|
||||||
|
|
||||||
// todo: again, this is retarded but debug stuff
|
// todo: again, this is retarded but debug stuff
|
||||||
var diffTime = tick - lastUpdate;
|
var diffTime = tick - lastUpdate;
|
||||||
|
@ -401,6 +401,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
aiContainer.Engage(zone.FindActorInArea<Character>(targid));
|
aiContainer.Engage(zone.FindActorInArea<Character>(targid));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,7 +471,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
|
|
||||||
public bool IsAlive()
|
public bool IsAlive()
|
||||||
{
|
{
|
||||||
return !aiContainer.IsDead() && GetHP() > 0;
|
return !aiContainer.IsDead();// && GetHP() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public short GetHP()
|
public short GetHP()
|
||||||
@ -511,7 +512,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
|
|
||||||
public byte GetHPP()
|
public byte GetHPP()
|
||||||
{
|
{
|
||||||
return (byte)((charaWork.parameterSave.hp[0] / charaWork.parameterSave.hpMax[0]) * 100);
|
return (byte)(charaWork.parameterSave.hp[0] == 0 ? 0 : (charaWork.parameterSave.hp[0] / charaWork.parameterSave.hpMax[0]) * 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetHP(uint hp)
|
public void SetHP(uint hp)
|
||||||
@ -570,7 +571,11 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
public void AddTP(int tp)
|
public void AddTP(int tp)
|
||||||
{
|
{
|
||||||
charaWork.parameterTemp.tp = (short)((charaWork.parameterTemp.tp + tp).Clamp(0, 3000));
|
charaWork.parameterTemp.tp = (short)((charaWork.parameterTemp.tp + tp).Clamp(0, 3000));
|
||||||
|
tpBase = (ushort) charaWork.parameterTemp.tp;
|
||||||
updateFlags |= ActorUpdateFlags.HpTpMp;
|
updateFlags |= ActorUpdateFlags.HpTpMp;
|
||||||
|
|
||||||
|
if (tpBase >= 1000)
|
||||||
|
lua.LuaEngine.GetInstance().OnSignal("tpOver1000");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DelHP(int hp)
|
public void DelHP(int hp)
|
||||||
@ -638,6 +643,9 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
target.DelHP(action.amount);
|
target.DelHP(action.amount);
|
||||||
if (target is BattleNpc)
|
if (target is BattleNpc)
|
||||||
((BattleNpc)target).lastAttacker = this;
|
((BattleNpc)target).lastAttacker = this;
|
||||||
|
|
||||||
|
AddTP(115);
|
||||||
|
target.AddTP(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void OnCast(State state, BattleAction[] actions, ref BattleAction[] errors)
|
public virtual void OnCast(State state, BattleAction[] actions, ref BattleAction[] errors)
|
||||||
|
@ -233,7 +233,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
if (mpCost != 0)
|
if (mpCost != 0)
|
||||||
return (ushort)Math.Ceiling((cost * mpCost * 0.001));
|
return (ushort)Math.Ceiling((cost * mpCost * 0.001));
|
||||||
|
|
||||||
return tpCost;
|
return mpCost != 0 ? (ushort)Math.Ceiling((cost * mpCost * 0.001)) : (ushort)0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Character> GetTargets()
|
public List<Character> GetTargets()
|
||||||
|
@ -194,7 +194,6 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.controllers
|
|||||||
protected virtual void DoCombatTick(DateTime tick, List<Character> contentGroupCharas = null)
|
protected virtual void DoCombatTick(DateTime tick, List<Character> contentGroupCharas = null)
|
||||||
{
|
{
|
||||||
HandleHate();
|
HandleHate();
|
||||||
|
|
||||||
// todo: magic/attack/ws cooldowns etc
|
// todo: magic/attack/ws cooldowns etc
|
||||||
if (TryDeaggro())
|
if (TryDeaggro())
|
||||||
{
|
{
|
||||||
|
@ -44,7 +44,13 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
|||||||
{
|
{
|
||||||
var pos = new Vector3(owner.positionX, owner.positionY, owner.positionZ);
|
var pos = new Vector3(owner.positionX, owner.positionY, owner.positionZ);
|
||||||
var dest = new Vector3(x, y, z);
|
var dest = new Vector3(x, y, z);
|
||||||
var zone = (Zone)owner.GetZone();
|
|
||||||
|
Zone zone;
|
||||||
|
if (owner.GetZone() is PrivateArea || owner.GetZone() is PrivateAreaContent)
|
||||||
|
zone = (Zone)((PrivateArea)owner.GetZone()).GetParentZone();
|
||||||
|
else
|
||||||
|
zone = (Zone)owner.GetZone();
|
||||||
|
|
||||||
var sw = new System.Diagnostics.Stopwatch();
|
var sw = new System.Diagnostics.Stopwatch();
|
||||||
sw.Start();
|
sw.Start();
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state
|
|||||||
var errors = (BattleAction[])actions.Clone();
|
var errors = (BattleAction[])actions.Clone();
|
||||||
|
|
||||||
owner.OnWeaponSkill(this, actions, ref errors);
|
owner.OnWeaponSkill(this, actions, ref errors);
|
||||||
owner.DoBattleAction(skill.id, 0, actions);
|
owner.DoBattleAction(skill.id, skill.battleAnimation, actions);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void TryInterrupt()
|
public override void TryInterrupt()
|
||||||
|
@ -298,7 +298,13 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
// onDeath(monster, player, killer)
|
// onDeath(monster, player, killer)
|
||||||
lua.LuaEngine.CallLuaBattleFunction(this, "onDeath", this, partyMember, lastAttacker);
|
lua.LuaEngine.CallLuaBattleFunction(this, "onDeath", this, partyMember, lastAttacker);
|
||||||
// <actor> defeat/defeats <target>
|
// <actor> defeat/defeats <target>
|
||||||
((Player)lastAttacker).QueuePacket(BattleActionX01Packet.BuildPacket(lastAttacker.actorId, 0, 0, new BattleAction(actorId, 30108, 0)));
|
|
||||||
|
if (lastAttacker is Player)
|
||||||
|
((Player)lastAttacker).QueuePacket(BattleActionX01Packet.BuildPacket(lastAttacker.actorId, 0, 0, new BattleAction(actorId, 30108, 0)));
|
||||||
|
|
||||||
|
if(partyMember is Player)
|
||||||
|
((Player)partyMember).AddExp(1500, (byte)partyMember.GetJob(), 5);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -313,6 +319,8 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
this.ResetMoveSpeeds();
|
this.ResetMoveSpeeds();
|
||||||
|
|
||||||
// todo: reset cooldowns
|
// todo: reset cooldowns
|
||||||
|
|
||||||
|
lua.LuaEngine.GetInstance().OnSignal("mobkill");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -234,7 +234,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
|
|
||||||
charaWork.commandBorder = 0x20;
|
charaWork.commandBorder = 0x20;
|
||||||
|
|
||||||
charaWork.parameterTemp.tp = 3000;
|
charaWork.parameterTemp.tp = 0;
|
||||||
|
|
||||||
Database.LoadPlayerCharacter(this);
|
Database.LoadPlayerCharacter(this);
|
||||||
lastPlayTimeUpdate = Utils.UnixTimeStampUTC();
|
lastPlayTimeUpdate = Utils.UnixTimeStampUTC();
|
||||||
@ -1777,9 +1777,13 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
propPacketUtil.AddProperty($"charaWork.parameterSave.state_mainSkillLevel");
|
propPacketUtil.AddProperty($"charaWork.parameterSave.state_mainSkillLevel");
|
||||||
|
|
||||||
packets.AddRange(propPacketUtil.Done());
|
packets.AddRange(propPacketUtil.Done());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
base.PostUpdate(tick, packets);
|
base.PostUpdate(tick, packets);
|
||||||
|
SetActorPropetyPacket hpInfo = new SetActorPropetyPacket("charaWork/exp");
|
||||||
|
hpInfo.AddTarget();
|
||||||
|
QueuePacket(hpInfo.BuildPacket(actorId));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Die(DateTime tick)
|
public override void Die(DateTime tick)
|
||||||
@ -1813,19 +1817,20 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
ActorPropertyPacketUtil compatibiltyUtil = new ActorPropertyPacketUtil("charaWork/commandDetailForSelf", this);
|
ActorPropertyPacketUtil compatibiltyUtil = new ActorPropertyPacketUtil("charaWork/commandDetailForSelf", this);
|
||||||
foreach (ushort slot in slotsToUpdate)
|
foreach (ushort slot in slotsToUpdate)
|
||||||
{
|
{
|
||||||
propPacketUtil.AddProperty(String.Format("charaWork.command[{0}]", slot));
|
propPacketUtil.AddProperty($"charaWork.command[{slot}]");
|
||||||
propPacketUtil.AddProperty(String.Format("charaWork.commandCategory[{0}]", slot));
|
propPacketUtil.AddProperty($"charaWork.commandCategory[{slot}]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
propPacketUtil.NewTarget("charaWork/commandDetailForSelf");
|
||||||
//Enable or disable slots based on whether there is an ability in that slot
|
//Enable or disable slots based on whether there is an ability in that slot
|
||||||
foreach (ushort slot in slotsToUpdate)
|
foreach (ushort slot in slotsToUpdate)
|
||||||
{
|
{
|
||||||
charaWork.parameterSave.commandSlot_compatibility[slot - charaWork.commandBorder] = charaWork.command[slot] != 0;
|
charaWork.parameterSave.commandSlot_compatibility[slot - charaWork.commandBorder] = charaWork.command[slot] != 0;
|
||||||
compatibiltyUtil.AddProperty(String.Format("charaWork.parameterSave.commandSlot_compatibility[{0}]", slot - charaWork.commandBorder));
|
propPacketUtil.AddProperty($"charaWork.parameterSave.commandSlot_compatibility[{slot - charaWork.commandBorder}]");
|
||||||
}
|
}
|
||||||
|
|
||||||
QueuePackets(propPacketUtil.Done());
|
QueuePackets(propPacketUtil.Done());
|
||||||
QueuePackets(compatibiltyUtil.Done());
|
//QueuePackets(compatibiltyUtil.Done());
|
||||||
}
|
}
|
||||||
|
|
||||||
//Update recast timers for the passed in hotbar slots
|
//Update recast timers for the passed in hotbar slots
|
||||||
@ -1874,6 +1879,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
uint recastEnd = Utils.UnixTimeStampUTC() + maxRecastTime;
|
uint recastEnd = Utils.UnixTimeStampUTC() + maxRecastTime;
|
||||||
List<ushort> slotsToUpdate = new List<ushort>();
|
List<ushort> slotsToUpdate = new List<ushort>();
|
||||||
|
|
||||||
|
Database.EquipAbility(this, classId, (ushort) (hotbarSlot - charaWork.commandBorder), commandId, recastEnd);
|
||||||
//If the class we're equipping for is the current class (need to find out if state_mainSkill is supposed to change when you're a job)
|
//If the class we're equipping for is the current class (need to find out if state_mainSkill is supposed to change when you're a job)
|
||||||
//then equip the ability in charawork.commands and save in databse, otherwise just save in database
|
//then equip the ability in charawork.commands and save in databse, otherwise just save in database
|
||||||
if (classId == charaWork.parameterSave.state_mainSkill[0])
|
if (classId == charaWork.parameterSave.state_mainSkill[0])
|
||||||
@ -1887,7 +1893,6 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
UpdateHotbar(slotsToUpdate);
|
UpdateHotbar(slotsToUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
Database.EquipAbility(this, classId, (ushort) (hotbarSlot - charaWork.commandBorder), commandId, recastEnd);
|
|
||||||
|
|
||||||
if(printMessage)
|
if(printMessage)
|
||||||
SendGameMessage(Server.GetWorldManager().GetActor(), 30603, 0x20, 0, commandId);
|
SendGameMessage(Server.GetWorldManager().GetActor(), 30603, 0x20, 0, commandId);
|
||||||
@ -2184,6 +2189,8 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
{
|
{
|
||||||
((BattleNpc)target).hateContainer.UpdateHate(this, action.amount);
|
((BattleNpc)target).hateContainer.UpdateHate(this, action.amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LuaEngine.GetInstance().OnSignal("playerAttack");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnCast(State state, BattleAction[] actions, ref BattleAction[] errors)
|
public override void OnCast(State state, BattleAction[] actions, ref BattleAction[] errors)
|
||||||
@ -2213,7 +2220,6 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
exp += (int) Math.Ceiling((exp * bonusPercent / 100.0f));
|
exp += (int) Math.Ceiling((exp * bonusPercent / 100.0f));
|
||||||
//You earn [exp](+[bonusPercent]%) experience point(s).
|
//You earn [exp](+[bonusPercent]%) experience point(s).
|
||||||
SendGameMessage(this, Server.GetWorldManager().GetActor(), 33934, 0x44, this, 0, 0, 0, 0, 0, 0, 0, 0, 0, exp, "", bonusPercent);
|
SendGameMessage(this, Server.GetWorldManager().GetActor(), 33934, 0x44, this, 0, 0, 0, 0, 0, 0, 0, 0, 0, exp, "", bonusPercent);
|
||||||
|
|
||||||
bool leveled = false;
|
bool leveled = false;
|
||||||
int diff = MAXEXP[GetLevel() - 1] - charaWork.battleSave.skillPoint[classId - 1];
|
int diff = MAXEXP[GetLevel() - 1] - charaWork.battleSave.skillPoint[classId - 1];
|
||||||
//While there is enough experience to level up, keep leveling up, unlocking skills and removing experience from exp until we don't have enough to level up
|
//While there is enough experience to level up, keep leveling up, unlocking skills and removing experience from exp until we don't have enough to level up
|
||||||
@ -2314,5 +2320,21 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
|
|
||||||
return charaWork.parameterSave.state_mainSkill[0];
|
return charaWork.parameterSave.state_mainSkill[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void hpstuff(uint hp)
|
||||||
|
{
|
||||||
|
SetMaxHP(hp);
|
||||||
|
SetHP(hp);
|
||||||
|
mpMaxBase = (ushort)hp;
|
||||||
|
charaWork.parameterSave.mpMax = (short)hp;
|
||||||
|
charaWork.parameterSave.mp = (short)hp;
|
||||||
|
AddTP(0);
|
||||||
|
//SendCharaExpInfo();
|
||||||
|
//ActorPropertyPacketUtil exp = new ActorPropertyPacketUtil("charaWork/exp", this);
|
||||||
|
SetActorPropetyPacket hpInfo = new SetActorPropetyPacket("charaWork/exp");
|
||||||
|
hpInfo.AddTarget();
|
||||||
|
QueuePacket(hpInfo.BuildPacket(actorId));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||||||
|
|
||||||
List<LuaParam> lparams = CallLuaScript("init", args2);
|
List<LuaParam> lparams = CallLuaScript("init", args2);
|
||||||
|
|
||||||
if (lparams.Count >= 1 && lparams[0].value is string)
|
if (lparams != null && lparams.Count >= 1 && lparams[0].value is string)
|
||||||
{
|
{
|
||||||
classPath = (string)lparams[0].value;
|
classPath = (string)lparams[0].value;
|
||||||
className = classPath.Substring(classPath.LastIndexOf("/") + 1);
|
className = classPath.Substring(classPath.LastIndexOf("/") + 1);
|
||||||
@ -270,6 +270,7 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||||||
{
|
{
|
||||||
if (directorScript != null)
|
if (directorScript != null)
|
||||||
{
|
{
|
||||||
|
directorScript = LuaEngine.LoadScript(String.Format(LuaEngine.FILEPATH_DIRECTORS, directorScriptPath));
|
||||||
if (!directorScript.Globals.Get(funcName).IsNil())
|
if (!directorScript.Globals.Get(funcName).IsNil())
|
||||||
{
|
{
|
||||||
DynValue result = directorScript.Call(directorScript.Globals[funcName], args);
|
DynValue result = directorScript.Call(directorScript.Globals[funcName], args);
|
||||||
|
@ -93,7 +93,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return (questFlags & (1 << bitIndex)) == (1 << bitIndex);
|
return (questFlags & (1 << bitIndex)) == (1 << bitIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint GetPhase()
|
public uint GetPhase()
|
||||||
|
@ -234,7 +234,27 @@ namespace FFXIVClassic_Map_Server.lua
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Program.Log.Error($"LuaEngine.CallLuaBattleCommandFunction [{command.name}] Unable to find script {path}");
|
path = $"./scripts/commands/{folder}/default.lua";
|
||||||
|
//Program.Log.Error($"LuaEngine.CallLuaBattleCommandFunction [{command.name}] Unable to find script {path}");
|
||||||
|
var script = LoadGlobals();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
script.DoFile(path);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Program.Log.Error($"LuaEngine.CallLuaBattleCommandFunction [{functionName}] {e.Message}");
|
||||||
|
}
|
||||||
|
DynValue res = new DynValue();
|
||||||
|
DynValue r = script.Globals.Get(functionName);
|
||||||
|
|
||||||
|
if (!script.Globals.Get(functionName).IsNil())
|
||||||
|
{
|
||||||
|
res = script.Call(script.Globals.Get(functionName), args);
|
||||||
|
if (res != null)
|
||||||
|
return (int)res.Number;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -461,6 +481,7 @@ namespace FFXIVClassic_Map_Server.lua
|
|||||||
Coroutine coroutine = script.CreateCoroutine(script.Globals[funcName]).Coroutine;
|
Coroutine coroutine = script.CreateCoroutine(script.Globals[funcName]).Coroutine;
|
||||||
DynValue value = coroutine.Resume(args2);
|
DynValue value = coroutine.Resume(args2);
|
||||||
ResolveResume(player, coroutine, value);
|
ResolveResume(player, coroutine, value);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -25,6 +25,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.battle
|
|||||||
using (BinaryWriter binWriter = new BinaryWriter(mem))
|
using (BinaryWriter binWriter = new BinaryWriter(mem))
|
||||||
{
|
{
|
||||||
binWriter.Write((UInt32)sourceActorId);
|
binWriter.Write((UInt32)sourceActorId);
|
||||||
|
|
||||||
binWriter.Write((UInt32)animationId);
|
binWriter.Write((UInt32)animationId);
|
||||||
|
|
||||||
//Missing... last value is float, string in here as well?
|
//Missing... last value is float, string in here as well?
|
||||||
|
34
data/scripts/commands/gm/eaction.lua
Normal file
34
data/scripts/commands/gm/eaction.lua
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
properties = {
|
||||||
|
permissions = 0,
|
||||||
|
parameters = "s",
|
||||||
|
description =
|
||||||
|
[[
|
||||||
|
Equips <commandid> in the first open slot without checking if you can.
|
||||||
|
!eaction <commandid>
|
||||||
|
]],
|
||||||
|
}
|
||||||
|
|
||||||
|
function onTrigger(player, argc, commandid)
|
||||||
|
local sender = "[givegil] ";
|
||||||
|
|
||||||
|
print(commandid);
|
||||||
|
if name then
|
||||||
|
if lastName then
|
||||||
|
player = GetWorldManager():GetPCInWorld(name.." "..lastName) or nil;
|
||||||
|
else
|
||||||
|
player = GetWorldManager():GetPCInWorld(name) or nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if player then
|
||||||
|
classid = player:GetCurrentClassOrJob();
|
||||||
|
commandid = tonumber(commandid) or 0;
|
||||||
|
|
||||||
|
local added = player:EquipAbilityInFirstOpenSlot(classid, commandid);
|
||||||
|
|
||||||
|
else
|
||||||
|
print(sender.."unable to add command, ensure player name is valid.");
|
||||||
|
end;
|
||||||
|
end;
|
33
data/scripts/commands/gm/setmaxhp.lua
Normal file
33
data/scripts/commands/gm/setmaxhp.lua
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
properties = {
|
||||||
|
permissions = 0,
|
||||||
|
parameters = "sss",
|
||||||
|
description =
|
||||||
|
[[
|
||||||
|
Sets player or <targetname>'s maximum hp to <hp> and heals them to full.
|
||||||
|
!setmaxhp <hp> |
|
||||||
|
!setmaxhp <hp> <targetname>
|
||||||
|
]],
|
||||||
|
}
|
||||||
|
|
||||||
|
function onTrigger(player, argc, hp, name, lastName)
|
||||||
|
local sender = "[setmaxhp] ";
|
||||||
|
|
||||||
|
if name then
|
||||||
|
if lastName then
|
||||||
|
player = GetWorldManager():GetPCInWorld(name.." "..lastName) or nil;
|
||||||
|
else
|
||||||
|
player = GetWorldManager():GetPCInWorld(name) or nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if player then
|
||||||
|
hp = tonumber(hp) or 1;
|
||||||
|
location = INVENTORY_CURRENCY;
|
||||||
|
|
||||||
|
player:hpstuff(hp);
|
||||||
|
else
|
||||||
|
print(sender.."unable to add experience, ensure player name is valid.");
|
||||||
|
end;
|
||||||
|
end;
|
33
data/scripts/commands/gm/setmaxmp.lua
Normal file
33
data/scripts/commands/gm/setmaxmp.lua
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
properties = {
|
||||||
|
permissions = 0,
|
||||||
|
parameters = "sss",
|
||||||
|
description =
|
||||||
|
[[
|
||||||
|
Sets player or <targetname>'s maximum hp to <hp> and heals them to full.
|
||||||
|
!setmaxhp <hp> |
|
||||||
|
!setmaxhp <hp> <targetname>
|
||||||
|
]],
|
||||||
|
}
|
||||||
|
|
||||||
|
function onTrigger(player, argc, hp, name, lastName)
|
||||||
|
local sender = "[setmaxhp] ";
|
||||||
|
|
||||||
|
if name then
|
||||||
|
if lastName then
|
||||||
|
player = GetWorldManager():GetPCInWorld(name.." "..lastName) or nil;
|
||||||
|
else
|
||||||
|
player = GetWorldManager():GetPCInWorld(name) or nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if player then
|
||||||
|
hp = tonumber(hp) or 1;
|
||||||
|
location = INVENTORY_CURRENCY;
|
||||||
|
|
||||||
|
player:hpstuff(hp);
|
||||||
|
else
|
||||||
|
print(sender.."unable to add experience, ensure player name is valid.");
|
||||||
|
end;
|
||||||
|
end;
|
178
data/scripts/commands/gm/yolo.lua
Normal file
178
data/scripts/commands/gm/yolo.lua
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
properties = {
|
||||||
|
permissions = 0,
|
||||||
|
parameters = "ssss",
|
||||||
|
description =
|
||||||
|
[[
|
||||||
|
yolo
|
||||||
|
]],
|
||||||
|
}
|
||||||
|
|
||||||
|
local quests =
|
||||||
|
{
|
||||||
|
[111807] = { level = 25, weight = 4, rewardexp = 1080 },
|
||||||
|
[110868] = { level = 50, weight = 4, rewardexp = 4400 },
|
||||||
|
[111603] = { level = 22, weight = 5, rewardexp = 1100 },
|
||||||
|
[111602] = { level = 22, weight = 5, rewardexp = 1100 },
|
||||||
|
[111420] = { level = 45, weight = 5, rewardexp = 4450 },
|
||||||
|
[110811] = { level = 18, weight = 6, rewardexp = 780 },
|
||||||
|
[110814] = { level = 18, weight = 6, rewardexp = 780 },
|
||||||
|
[110707] = { level = 25, weight = 6, rewardexp = 1620 },
|
||||||
|
[110682] = { level = 34, weight = 6, rewardexp = 3180 },
|
||||||
|
[111202] = { level = 35, weight = 6, rewardexp = 3360 },
|
||||||
|
[111222] = { level = 35, weight = 6, rewardexp = 3360 },
|
||||||
|
[111302] = { level = 35, weight = 6, rewardexp = 3360 },
|
||||||
|
[111223] = { level = 40, weight = 6, rewardexp = 4260 },
|
||||||
|
[110819] = { level = 45, weight = 6, rewardexp = 5340 },
|
||||||
|
[111224] = { level = 45, weight = 6, rewardexp = 5340 },
|
||||||
|
[111225] = { level = 45, weight = 6, rewardexp = 5340 },
|
||||||
|
[110867] = { level = 45, weight = 6, rewardexp = 5340 },
|
||||||
|
[110869] = { level = 45, weight = 6, rewardexp = 5340 },
|
||||||
|
[110708] = { level = 45, weight = 6, rewardexp = 5340 },
|
||||||
|
[110627] = { level = 45, weight = 6, rewardexp = 5340 },
|
||||||
|
[111434] = { level = 50, weight = 6, rewardexp = 6600 },
|
||||||
|
[110850] = { level = 1, weight = 7, rewardexp = 40 },
|
||||||
|
[110851] = { level = 1, weight = 7, rewardexp = 40 },
|
||||||
|
[110841] = { level = 20, weight = 7, rewardexp = 1120 },
|
||||||
|
[110642] = { level = 20, weight = 7, rewardexp = 1120 },
|
||||||
|
[110840] = { level = 20, weight = 7, rewardexp = 1120 },
|
||||||
|
[110727] = { level = 21, weight = 7, rewardexp = 1401 },
|
||||||
|
[111221] = { level = 30, weight = 7, rewardexp = 2661 },
|
||||||
|
[111241] = { level = 30, weight = 7, rewardexp = 2661 },
|
||||||
|
[110687] = { level = 28, weight = 9, rewardexp = 2970 },
|
||||||
|
[110016] = { level = 34, weight = 50, rewardexp = 26500 },
|
||||||
|
[110017] = { level = 38, weight = 50, rewardexp = 32500 },
|
||||||
|
[110019] = { level = 46, weight = 50, rewardexp = 46000 }
|
||||||
|
};
|
||||||
|
|
||||||
|
local expTable = {
|
||||||
|
570, -- 1
|
||||||
|
700,
|
||||||
|
880,
|
||||||
|
1100,
|
||||||
|
1500,
|
||||||
|
1800,
|
||||||
|
2300,
|
||||||
|
3200,
|
||||||
|
4300,
|
||||||
|
5000, -- 10
|
||||||
|
5900,
|
||||||
|
6800,
|
||||||
|
7700,
|
||||||
|
8700,
|
||||||
|
9700,
|
||||||
|
11000,
|
||||||
|
12000,
|
||||||
|
13000,
|
||||||
|
15000,
|
||||||
|
16000, -- 20
|
||||||
|
20000,
|
||||||
|
22000,
|
||||||
|
23000,
|
||||||
|
25000,
|
||||||
|
27000,
|
||||||
|
29000,
|
||||||
|
31000,
|
||||||
|
33000,
|
||||||
|
35000,
|
||||||
|
38000, -- 30
|
||||||
|
45000,
|
||||||
|
47000,
|
||||||
|
50000,
|
||||||
|
53000,
|
||||||
|
56000,
|
||||||
|
59000,
|
||||||
|
62000,
|
||||||
|
65000,
|
||||||
|
68000,
|
||||||
|
71000, -- 40
|
||||||
|
74000,
|
||||||
|
78000,
|
||||||
|
81000,
|
||||||
|
85000,
|
||||||
|
89000,
|
||||||
|
92000,
|
||||||
|
96000,
|
||||||
|
100000,
|
||||||
|
100000,
|
||||||
|
110000 -- 50
|
||||||
|
};
|
||||||
|
|
||||||
|
local commandCost = {
|
||||||
|
["raise"] = 150,
|
||||||
|
["cure"] = 40,
|
||||||
|
["cura"] = 100,
|
||||||
|
["curaga"] = 150,
|
||||||
|
};
|
||||||
|
-- stone: (1, 9) (5, 12) (10, )
|
||||||
|
-- cure: (1, 5) (5, 6) (10, )
|
||||||
|
-- aero: (1, 9) (5, 12) (10, )
|
||||||
|
-- protect: (1, 9) (5, 12) (10, )
|
||||||
|
--[[
|
||||||
|
function onTrigger(player, argc, id, level, weight)
|
||||||
|
id = tonumber(id) or 111807;
|
||||||
|
level = tonumber(level) or quests[id].level;
|
||||||
|
weight = tonumber(weight) or quests[id].weight;
|
||||||
|
local messageId = MESSAGE_TYPE_SYSTEM_ERROR;
|
||||||
|
local sender = "yolo";
|
||||||
|
|
||||||
|
if id == 1 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local message = calcSkillPoint(player, level, weight);
|
||||||
|
if player then
|
||||||
|
player.SendMessage(messageId, sender, string.format("calculated %s | expected %s", message, quests[id].rewardexp));
|
||||||
|
end;
|
||||||
|
printf("calculated %s | expected %s", message, quests[id].rewardexp);
|
||||||
|
end;
|
||||||
|
]]
|
||||||
|
|
||||||
|
function onTrigger(player, argc, skillName, level)
|
||||||
|
local messageId = MESSAGE_TYPE_SYSTEM_ERROR;
|
||||||
|
local sender = "yolo";
|
||||||
|
|
||||||
|
if player then
|
||||||
|
if false then
|
||||||
|
local effectId = 223004;
|
||||||
|
|
||||||
|
player.statusEffects.RemoveStatusEffect(effectId);
|
||||||
|
player.statusEffects.AddStatusEffect(effectId, 1, 0, 5);
|
||||||
|
return;
|
||||||
|
end;
|
||||||
|
|
||||||
|
local pos = player:GetPos();
|
||||||
|
local x = tonumber(pos[0]);
|
||||||
|
local y = tonumber(pos[1]);
|
||||||
|
local z = tonumber(pos[2]);
|
||||||
|
local rot = tonumber(pos[3]);
|
||||||
|
local zone = pos[4];
|
||||||
|
|
||||||
|
printf("%f %f %f", x, y, z);
|
||||||
|
--local x, y, z = player.GetPos();
|
||||||
|
for i = 1, 1 do
|
||||||
|
|
||||||
|
local actor = player.GetZone().SpawnActor(2207303, 'ass', x, y, z, rot, 0, 0, true );
|
||||||
|
|
||||||
|
--actor.FollowTarget(player, 3.2);
|
||||||
|
end;
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
level = tonumber(level) or 1;
|
||||||
|
if player then
|
||||||
|
player.SendMessage(messageId, sender, string.format("name %s | cost %d | level %u", skillName, calculateCommandCost(player, skillName, level), level));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function calculateCommandCost(player, skillName, level)
|
||||||
|
if skillName and level and commandCost[skillName] then
|
||||||
|
return math.ceil((8000 + (level - 70) * 500) * (commandCost[skillName] * 0.001));
|
||||||
|
end;
|
||||||
|
return 1;
|
||||||
|
end
|
||||||
|
|
||||||
|
function calcSkillPoint(player, lvl, weight)
|
||||||
|
weight = weight / 100
|
||||||
|
|
||||||
|
return math.ceil(expTable[lvl] * weight)
|
||||||
|
end
|
26
data/scripts/commands/weaponskill/chaos_thrust.lua
Normal file
26
data/scripts/commands/weaponskill/chaos_thrust.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
26
data/scripts/commands/weaponskill/default.lua
Normal file
26
data/scripts/commands/weaponskill/default.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
action.effectId = bit32.bxor(0x8000000, skill.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
26
data/scripts/commands/weaponskill/doom_spike.lua
Normal file
26
data/scripts/commands/weaponskill/doom_spike.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
26
data/scripts/commands/weaponskill/dread_spike.lua
Normal file
26
data/scripts/commands/weaponskill/dread_spike.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
26
data/scripts/commands/weaponskill/feint.lua
Normal file
26
data/scripts/commands/weaponskill/feint.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
26
data/scripts/commands/weaponskill/flat_blade.lua
Normal file
26
data/scripts/commands/weaponskill/flat_blade.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
26
data/scripts/commands/weaponskill/full_thrust.lua
Normal file
26
data/scripts/commands/weaponskill/full_thrust.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
27
data/scripts/commands/weaponskill/heavy_thrust.lua
Normal file
27
data/scripts/commands/weaponskill/heavy_thrust.lua
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
|
||||||
|
action.effectId = bit32.bxor(0x8000000, skill.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
26
data/scripts/commands/weaponskill/impulse_drive.lua
Normal file
26
data/scripts/commands/weaponskill/impulse_drive.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
26
data/scripts/commands/weaponskill/leg_sweep.lua
Normal file
26
data/scripts/commands/weaponskill/leg_sweep.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
26
data/scripts/commands/weaponskill/pummel.lua
Normal file
26
data/scripts/commands/weaponskill/pummel.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
26
data/scripts/commands/weaponskill/true_thrust.lua
Normal file
26
data/scripts/commands/weaponskill/true_thrust.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
action.effectId = bit32.bxor(0x8000000, skill.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
26
data/scripts/commands/weaponskill/vorpal_thrust.lua
Normal file
26
data/scripts/commands/weaponskill/vorpal_thrust.lua
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
require("global");
|
||||||
|
|
||||||
|
function onSkillPrepare(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillStart(caster, target, skill)
|
||||||
|
return 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function onSkillFinish(caster, target, skill, action)
|
||||||
|
local damage = math.random(100, 200);
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
action.worldMasterTextId = 0x765D;
|
||||||
|
|
||||||
|
-- todo: populate a global script with statuses and modifiers
|
||||||
|
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||||
|
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||||
|
|
||||||
|
if target.hateContainer then
|
||||||
|
target.hateContainer.UpdateHate(caster, damage);
|
||||||
|
end;
|
||||||
|
return damage;
|
||||||
|
end;
|
@ -1,25 +1,31 @@
|
|||||||
|
require ("global")
|
||||||
|
|
||||||
function onCreate(starterPlayer, contentArea, director)
|
function onCreate(starterPlayer, contentArea, director)
|
||||||
|
--papalymo = contentArea:SpawnActor(2290005, "papalymo", 365.89, 4.0943, -706.72, -0.718);
|
||||||
|
--yda = contentArea:SpawnActor(2290006, "yda", 365.266, 4.122, -700.73, 1.5659);
|
||||||
|
--yda = GetWorldManager().SpawnBattleNpcById(6, contentArea);
|
||||||
|
--papalymo = GetWorldManager().SpawnBattleNpcById(7, contentArea);
|
||||||
|
|
||||||
papalymo = contentArea:SpawnActor(2290005, "papalymo", 365.89, 4.0943, -706.72, -0.718);
|
--mob1 = GetWorldManager().SpawnBattleNpcById(3, contentArea);
|
||||||
yda = contentArea:SpawnActor(2290006, "yda", 365.266, 4.122, -700.73, 1.5659);
|
--mob2 = GetWorldManager().SpawnBattleNpcById(4, contentArea);
|
||||||
yda:ChangeState(2);
|
--mob3 = GetWorldManager().SpawnBattleNpcById(5, contentArea);
|
||||||
|
---yda:ChangeState(2);
|
||||||
|
|
||||||
mob1 = contentArea:SpawnActor(2201407, "mob1", 374.427, 4.4, -698.711, -1.942);
|
--mob1 = contentArea:SpawnActor(2201407, "mob1", 374.427, 4.4, -698.711, -1.942);
|
||||||
mob2 = contentArea:SpawnActor(2201407, "mob2", 375.377, 4.4, -700.247, -1.992);
|
--mob2 = contentArea:SpawnActor(2201407, "mob2", 375.377, 4.4, -700.247, -1.992);
|
||||||
mob3 = contentArea:SpawnActor(2201407, "mob3", 375.125, 4.4, -703.591, -1.54);
|
--mob3 = contentArea:SpawnActor(2201407, "mob3", 375.125, 4.4, -703.591, -1.54);
|
||||||
|
|
||||||
openingStoper = contentArea:SpawnActor(1090384, "openingstoper", 356.09, 3.74, -701.62, -1.41);
|
--openingStoper = contentArea:SpawnActor(1090384, "openingstoper", 356.09, 3.74, -701.62, -1.41);
|
||||||
|
|
||||||
director:AddMember(starterPlayer);
|
--director:AddMember(starterPlayer);
|
||||||
director:AddMember(director);
|
--director:AddMember(director);
|
||||||
director:AddMember(papalymo);
|
-- director:AddMember(papalymo);
|
||||||
director:AddMember(yda);
|
--director:AddMember(yda);
|
||||||
director:AddMember(mob1);
|
--director:AddMember(mob1);
|
||||||
director:AddMember(mob2);
|
--director:AddMember(mob2);
|
||||||
director:AddMember(mob3);
|
--director:AddMember(mob3);
|
||||||
|
|
||||||
director:StartContentGroup();
|
--director:StartContentGroup();
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -14,44 +14,52 @@ function onCreateContentArea(players, director, contentArea, contentGroup)
|
|||||||
|
|
||||||
local worldManager = GetWorldManager();
|
local worldManager = GetWorldManager();
|
||||||
|
|
||||||
yshtola = GetWorldManager().SpawnBattleNpcById(6, contentArea);
|
yda = GetWorldManager().SpawnBattleNpcById(6, contentArea);
|
||||||
stahlmann = GetWorldManager().SpawnBattleNpcById(7, contentArea);
|
papalymo = GetWorldManager().SpawnBattleNpcById(7, contentArea);
|
||||||
|
|
||||||
|
mob1 = GetWorldManager().SpawnBattleNpcById(3, contentArea);
|
||||||
|
mob2 = GetWorldManager().SpawnBattleNpcById(4, contentArea);
|
||||||
|
mob3 = GetWorldManager().SpawnBattleNpcById(5, contentArea);
|
||||||
|
|
||||||
|
--papalymo = contentArea:SpawnActor(2290005, "papalymo", 365.89, 4.0943, -706.72, -0.718);
|
||||||
|
--yda = contentArea:SpawnActor(2290006, "yda", 365.266, 4.122, -700.73, 1.5659);
|
||||||
|
--yda:ChangeState(2);
|
||||||
|
|
||||||
|
--mob1 = contentArea:SpawnActor(2201407, "mob1", 374.427, 4.4, -698.711, -1.942);
|
||||||
|
--mob2 = contentArea:SpawnActor(2201407, "mob2", 375.377, 4.4, -700.247, -1.992);
|
||||||
|
--mob3 = contentArea:SpawnActor(2201407, "mob3", 375.125, 4.4, -703.591, -1.54);
|
||||||
|
|
||||||
|
openingStoper = contentArea:SpawnActor(1090384, "openingstoper", 356.09, 3.74, -701.62, -1.41);
|
||||||
|
|
||||||
mob1 = GetWorldManager().SpawnBattleNpcById(3, contentArea);
|
|
||||||
mob2 = GetWorldManager().SpawnBattleNpcById(4, contentArea);
|
|
||||||
mob3 = GetWorldManager().SpawnBattleNpcById(5, contentArea);
|
|
||||||
|
|
||||||
local added = false;
|
local added = false;
|
||||||
for i = 0, players.Count do
|
for player in players do
|
||||||
local player = players[i];
|
|
||||||
print("asses "..players.Count)
|
|
||||||
if player.currentParty and not added then
|
if player.currentParty and not added then
|
||||||
print("shitness")
|
player.currentParty.members:Add(yda.actorId);
|
||||||
player.currentParty.members:Add(yshtola.actorId);
|
print("cunt");
|
||||||
print("cunt")
|
player.currentParty.members:Add(papalymo.actorId);
|
||||||
player.currentParty.members:Add(stahlmann.actorId);
|
print("dickbag");
|
||||||
print("dickbag")
|
|
||||||
added = true;
|
added = true;
|
||||||
end;
|
end;
|
||||||
-- dont let player die
|
-- dont let player die
|
||||||
|
print("shittttt3");
|
||||||
player:SetMod(modifiersGlobal.MinimumHpLock, 1);
|
player:SetMod(modifiersGlobal.MinimumHpLock, 1);
|
||||||
contentGroup:AddMember(player)
|
print("shittttt2");
|
||||||
print("shittttt")
|
director:AddMember(player)
|
||||||
break
|
print("shittttt1");
|
||||||
|
--GetWorldManager():DoZoneChangeContent(player, contentArea, 362.4087, 4, -703.8168, 1.5419, 16);
|
||||||
end;
|
end;
|
||||||
print("shit")
|
print("shit")
|
||||||
contentGroup:AddMember(director);
|
director:AddMember(director);
|
||||||
print("shit2");
|
director:AddMember(yda);
|
||||||
contentGroup:AddMember(yshtola);
|
director:AddMember(papalymo);
|
||||||
print("shit3")
|
director:AddMember(mob1);
|
||||||
contentGroup:AddMember(stahlmann);
|
director:AddMember(mob2);
|
||||||
print("shit4")
|
print("shit6")
|
||||||
contentGroup:AddMember(mob1);
|
director:AddMember(mob3);
|
||||||
print("shit5")
|
|
||||||
contentGroup:AddMember(mob2);
|
|
||||||
print("shit6")
|
|
||||||
contentGroup:AddMember(mob3);
|
|
||||||
print("dicks")
|
print("dicks")
|
||||||
|
|
||||||
|
director:StartContentGroup();
|
||||||
end
|
end
|
||||||
|
|
||||||
function onEventStarted(player, actor, triggerName)
|
function onEventStarted(player, actor, triggerName)
|
||||||
@ -120,5 +128,4 @@ end
|
|||||||
function main(director, contentGroup)
|
function main(director, contentGroup)
|
||||||
print("shitstain")
|
print("shitstain")
|
||||||
onCreateContentArea(director:GetPlayerMembers(), director, director:GetZone(), contentGroup);
|
onCreateContentArea(director:GetPlayerMembers(), director, director:GetZone(), contentGroup);
|
||||||
player:EndEvent();
|
|
||||||
end;
|
end;
|
@ -7,9 +7,10 @@ end
|
|||||||
|
|
||||||
function onEventStarted(player, npc, triggerName)
|
function onEventStarted(player, npc, triggerName)
|
||||||
man0g0Quest = player:GetQuest("Man0g0");
|
man0g0Quest = player:GetQuest("Man0g0");
|
||||||
|
print("hi");
|
||||||
if (man0g0Quest ~= nil) then
|
if (man0g0Quest ~= nil) then
|
||||||
|
|
||||||
|
print("hi2");
|
||||||
if (triggerName == "pushDefault") then
|
if (triggerName == "pushDefault") then
|
||||||
callClientFunction(player, "delegateEvent", player, man0g0Quest, "processTtrNomal002", nil, nil, nil);
|
callClientFunction(player, "delegateEvent", player, man0g0Quest, "processTtrNomal002", nil, nil, nil);
|
||||||
elseif (triggerName == "talkDefault") then
|
elseif (triggerName == "talkDefault") then
|
||||||
@ -22,6 +23,7 @@ function onEventStarted(player, npc, triggerName)
|
|||||||
man0g0Quest:SaveData();
|
man0g0Quest:SaveData();
|
||||||
player:GetDirector("OpeningDirector"):onTalkEvent(player, npc);
|
player:GetDirector("OpeningDirector"):onTalkEvent(player, npc);
|
||||||
--Was she talked to after papalymo?
|
--Was she talked to after papalymo?
|
||||||
|
print("hi3");
|
||||||
else
|
else
|
||||||
if (man0g0Quest:GetQuestFlag(MAN0G0_FLAG_MINITUT_DONE1) == true) then
|
if (man0g0Quest:GetQuestFlag(MAN0G0_FLAG_MINITUT_DONE1) == true) then
|
||||||
|
|
||||||
@ -41,6 +43,7 @@ function onEventStarted(player, npc, triggerName)
|
|||||||
player:KickEvent(director, "noticeEvent", true);
|
player:KickEvent(director, "noticeEvent", true);
|
||||||
player:SetLoginDirector(director);
|
player:SetLoginDirector(director);
|
||||||
|
|
||||||
|
print("hi5");
|
||||||
GetWorldManager():DoZoneChangeContent(player, contentArea, 362.4087, 4, -703.8168, 1.5419, 16);
|
GetWorldManager():DoZoneChangeContent(player, contentArea, 362.4087, 4, -703.8168, 1.5419, 16);
|
||||||
return;
|
return;
|
||||||
else
|
else
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
require ("global")
|
||||||
|
|
||||||
|
function onEventStarted(player, npc)
|
||||||
|
defaultFst = GetStaticActor("DftFst");
|
||||||
|
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_hill_001", nil, nil, nil);
|
||||||
|
player:endEvent();
|
||||||
|
end
|
@ -0,0 +1,7 @@
|
|||||||
|
require ("global")
|
||||||
|
|
||||||
|
function onEventStarted(player, npc)
|
||||||
|
defaultFst = GetStaticActor("DftFst");
|
||||||
|
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithTask_board_001", nil, nil, nil);
|
||||||
|
player:endEvent();
|
||||||
|
end
|
@ -0,0 +1,7 @@
|
|||||||
|
require ("global")
|
||||||
|
|
||||||
|
function onEventStarted(player, npc)
|
||||||
|
defaultFst = GetStaticActor("DftFst");
|
||||||
|
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithGagaroon_001", nil, nil, nil);
|
||||||
|
player:endEvent();
|
||||||
|
end
|
@ -0,0 +1,7 @@
|
|||||||
|
require ("global")
|
||||||
|
|
||||||
|
function onEventStarted(player, npc)
|
||||||
|
defaultFst = GetStaticActor("DftFst");
|
||||||
|
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithLouisoix_001", nil, nil, nil);
|
||||||
|
player:endEvent();
|
||||||
|
end
|
@ -0,0 +1,7 @@
|
|||||||
|
require ("global")
|
||||||
|
|
||||||
|
function onEventStarted(player, npc)
|
||||||
|
defaultFst = GetStaticActor("DftFst");
|
||||||
|
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_carver_001", nil, nil, nil);
|
||||||
|
player:endEvent();
|
||||||
|
end
|
@ -0,0 +1,7 @@
|
|||||||
|
require ("global")
|
||||||
|
|
||||||
|
function onEventStarted(player, npc)
|
||||||
|
defaultFst = GetStaticActor("DftFst");
|
||||||
|
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_holmes_001", nil, nil, nil);
|
||||||
|
player:endEvent();
|
||||||
|
end
|
@ -0,0 +1,7 @@
|
|||||||
|
require ("global")
|
||||||
|
|
||||||
|
function onEventStarted(player, npc)
|
||||||
|
defaultFst = GetStaticActor("DftFst");
|
||||||
|
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_kirk_001", nil, nil, nil);
|
||||||
|
player:endEvent();
|
||||||
|
end
|
@ -0,0 +1,7 @@
|
|||||||
|
require ("global")
|
||||||
|
|
||||||
|
function onEventStarted(player, npc)
|
||||||
|
defaultFst = GetStaticActor("DftFst");
|
||||||
|
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_stone_001", nil, nil, nil);
|
||||||
|
player:endEvent();
|
||||||
|
end
|
@ -0,0 +1,7 @@
|
|||||||
|
require ("global")
|
||||||
|
|
||||||
|
function onEventStarted(player, npc)
|
||||||
|
defaultFst = GetStaticActor("DftFst");
|
||||||
|
callClientFunction(player, "delegateEvent", player, defaultFst, "defaultTalkWithSerpent_private_white_001", nil, nil, nil);
|
||||||
|
player:endEvent();
|
||||||
|
end
|
@ -0,0 +1,7 @@
|
|||||||
|
require ("global")
|
||||||
|
|
||||||
|
function onEventStarted(player, npc)
|
||||||
|
defaultSea = GetStaticActor("DftSea");
|
||||||
|
callClientFunction(player, "delegateEvent", player, defaultSea, "defaultTalkWithRubh_hob_001", nil, nil, nil);
|
||||||
|
player:endEvent();
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user