mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-22 12:47:46 +00:00
Bug fixes.
Added stoneskin effect to database. Fixed Rampage not working Fixed bug where abilities didn't equip correctly when leveling up Added a temporary fix for returning while dead Added handling for abilities that don't have an actiontype set, like elusive jump
This commit is contained in:
parent
c5ce2ec771
commit
922fb80f3d
12 changed files with 30 additions and 25 deletions
|
@ -2317,11 +2317,11 @@ namespace FFXIVClassic_Map_Server
|
||||||
Tuple<byte, short> tuple = Tuple.Create<byte, short>(battleCommand.job, battleCommand.level);
|
Tuple<byte, short> tuple = Tuple.Create<byte, short>(battleCommand.job, battleCommand.level);
|
||||||
if (battleCommandIdByLevel.ContainsKey(tuple))
|
if (battleCommandIdByLevel.ContainsKey(tuple))
|
||||||
{
|
{
|
||||||
battleCommandIdByLevel[tuple].Add(id | 0xA0F00000);
|
battleCommandIdByLevel[tuple].Add(id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
List<uint> list = new List<uint>() { id | 0xA0F00000 };
|
List<uint> list = new List<uint>() { id };
|
||||||
battleCommandIdByLevel.Add(tuple, list);
|
battleCommandIdByLevel.Add(tuple, list);
|
||||||
}
|
}
|
||||||
count++;
|
count++;
|
||||||
|
|
|
@ -454,8 +454,8 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
}
|
}
|
||||||
|
|
||||||
updateFlags = ActorUpdateFlags.None;
|
updateFlags = ActorUpdateFlags.None;
|
||||||
zone.BroadcastPacketsAroundActor(this, packets);
|
|
||||||
}
|
}
|
||||||
|
zone.BroadcastPacketsAroundActor(this, packets);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GenerateActorName(int actorNumber)
|
public void GenerateActorName(int actorNumber)
|
||||||
|
|
|
@ -388,8 +388,8 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
if ((updateFlags & ActorUpdateFlags.StatusTime) != 0)
|
if ((updateFlags & ActorUpdateFlags.StatusTime) != 0)
|
||||||
{
|
{
|
||||||
packets.AddRange(statusEffects.GetStatusTimerPackets());
|
packets.AddRange(statusEffects.GetStatusTimerPackets());
|
||||||
|
statusEffects.ResetPropPacketUtil();
|
||||||
updateFlags &= ~ActorUpdateFlags.StatusTime;
|
updateFlags &= ~ActorUpdateFlags.StatusTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((updateFlags & ActorUpdateFlags.HpTpMp) != 0)
|
if ((updateFlags & ActorUpdateFlags.HpTpMp) != 0)
|
||||||
|
|
|
@ -80,8 +80,8 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai
|
||||||
BattleAction action = new BattleAction(owner.actorId, 30331, (uint)(HitEffect.HitEffectType | HitEffect.Hit), dotTick);
|
BattleAction action = new BattleAction(owner.actorId, 30331, (uint)(HitEffect.HitEffectType | HitEffect.Hit), dotTick);
|
||||||
utils.BattleUtils.HandleStoneskin(owner, action);
|
utils.BattleUtils.HandleStoneskin(owner, action);
|
||||||
// todo: figure out how to make red numbers appear for enemies getting hurt by dots
|
// todo: figure out how to make red numbers appear for enemies getting hurt by dots
|
||||||
owner.DelHP(action.amount);
|
//owner.DelHP(action.amount);
|
||||||
|
utils.BattleUtils.DamageTarget(owner, owner, action, null);
|
||||||
owner.DoBattleAction(0, 0, action);
|
owner.DoBattleAction(0, 0, action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -383,6 +383,9 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.utils
|
||||||
case (ActionType.Status):
|
case (ActionType.Status):
|
||||||
FinishActionStatus(caster, target, skill, action, actionContainer);
|
FinishActionStatus(caster, target, skill, action, actionContainer);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
actionContainer.AddAction(action);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1888,7 +1888,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
Database.EquipAbility(this, classId, (ushort) (hotbarSlot - charaWork.commandBorder), commandId, recastEnd);
|
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 == GetCurrentClassOrJob())
|
||||||
{
|
{
|
||||||
charaWork.command[hotbarSlot] = trueCommandId;
|
charaWork.command[hotbarSlot] = trueCommandId;
|
||||||
charaWork.commandCategory[hotbarSlot] = 1;
|
charaWork.commandCategory[hotbarSlot] = 1;
|
||||||
|
@ -2240,6 +2240,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
//Returns BattleActions that can be sent to display the EXP gained number and level ups
|
//Returns BattleActions that can be sent to display the EXP gained number and level ups
|
||||||
public List<BattleAction> AddExp(int exp, byte classId, byte bonusPercent = 0)
|
public List<BattleAction> AddExp(int exp, byte classId, byte bonusPercent = 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
List<BattleAction> actionList = new List<BattleAction>();
|
List<BattleAction> actionList = new List<BattleAction>();
|
||||||
exp += (int) Math.Ceiling((exp * bonusPercent / 100.0f));
|
exp += (int) Math.Ceiling((exp * bonusPercent / 100.0f));
|
||||||
|
|
||||||
|
@ -2310,7 +2311,8 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
EquipAbilityInFirstOpenSlot(jobId, commandId, false);
|
EquipAbilityInFirstOpenSlot(jobId, commandId, false);
|
||||||
|
|
||||||
//33926: You learn [command].
|
//33926: You learn [command].
|
||||||
actionList?.Add(new BattleAction(actorId, 33926, commandId));
|
if(classId == GetCurrentClassOrJob() || jobId == GetCurrentClassOrJob())
|
||||||
|
actionList?.Add(new BattleAction(actorId, 33926, commandId));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2405,8 +2407,8 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
var mainHandItem = equip.GetItemAtSlot(Equipment.SLOT_MAINHAND);
|
var mainHandItem = equip.GetItemAtSlot(Equipment.SLOT_MAINHAND);
|
||||||
var damageAttribute = 0;
|
var damageAttribute = 0;
|
||||||
var attackDelay = 3000;
|
var attackDelay = 3000;
|
||||||
var hitCount = 1;
|
var hitCount = 1;
|
||||||
GetAttackDelayMs();
|
|
||||||
if (mainHandItem != null)
|
if (mainHandItem != null)
|
||||||
{
|
{
|
||||||
var mainHandWeapon = (Server.GetItemGamedata(mainHandItem.itemId) as WeaponItem);
|
var mainHandWeapon = (Server.GetItemGamedata(mainHandItem.itemId) as WeaponItem);
|
||||||
|
|
|
@ -45,7 +45,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.battle
|
||||||
binWriter.Write((Byte)1); //?
|
binWriter.Write((Byte)1); //?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
new SubPacket(OPCODE, sourceActorId, data).DebugPrintSubPacket();
|
|
||||||
return new SubPacket(OPCODE, sourceActorId, data);
|
return new SubPacket(OPCODE, sourceActorId, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@ function onEventStarted(player, actor, triggerName, isTeleport)
|
||||||
local choice, isInn = callClientFunction(player, "delegateCommand", actor, "eventConfirm", true, false, player:GetHomePointInn(), player:GetHomePoint(), false);
|
local choice, isInn = callClientFunction(player, "delegateCommand", actor, "eventConfirm", true, false, player:GetHomePointInn(), player:GetHomePoint(), false);
|
||||||
if (choice == 1) then
|
if (choice == 1) then
|
||||||
player:PlayAnimation(0x4000FFB);
|
player:PlayAnimation(0x4000FFB);
|
||||||
player:SendGameMessage(worldMaster, 34104, 0x20);
|
player:SendGameMessage(worldMaster, 34104, 0x20);
|
||||||
if (isInn) then
|
if (isInn) then
|
||||||
--Return to Inn
|
--Return to Inn
|
||||||
if (player:GetHomePointInn() == 1) then
|
if (player:GetHomePointInn() == 1) then
|
||||||
|
@ -108,6 +108,13 @@ function onEventStarted(player, actor, triggerName, isTeleport)
|
||||||
randoPos = getRandomPointInBand(destination[2], destination[4], 3, 5);
|
randoPos = getRandomPointInBand(destination[2], destination[4], 3, 5);
|
||||||
rotation = getAngleFacing(randoPos.x, randoPos.y, destination[2], destination[4]);
|
rotation = getAngleFacing(randoPos.x, randoPos.y, destination[2], destination[4]);
|
||||||
GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation);
|
GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation);
|
||||||
|
|
||||||
|
--bandaid fix for returning while dead, missing things like weakness and the heal number
|
||||||
|
if (player:GetHP() == 0) then
|
||||||
|
player:SetHP(player.GetMaxHP());
|
||||||
|
player:ChangeState(0);
|
||||||
|
player:PlayAnimation(0x01000066);
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -27,7 +27,8 @@ function onTrigger(player, argc, qty, name, lastName)
|
||||||
qty = tonumber(qty) or 1;
|
qty = tonumber(qty) or 1;
|
||||||
location = INVENTORY_CURRENCY;
|
location = INVENTORY_CURRENCY;
|
||||||
|
|
||||||
player:AddExp(qty, player.charaWork.parameterSave.state_mainSkill[0], 5);
|
actionList = player:AddExp(qty, player.charaWork.parameterSave.state_mainSkill[0], 0);
|
||||||
|
player:DoBattleAction(0, 0, actionList);
|
||||||
else
|
else
|
||||||
print(sender.."unable to add experience, ensure player name is valid.");
|
print(sender.."unable to add experience, ensure player name is valid.");
|
||||||
end;
|
end;
|
||||||
|
|
|
@ -20,7 +20,7 @@ function onDamageTaken(effect, attacker, defender, action, actionContainer)
|
||||||
effect.SetExtra(effect.GetExtra() + 1);
|
effect.SetExtra(effect.GetExtra() + 1);
|
||||||
|
|
||||||
attacker.AddMod(modifiersGlobal.Parry, parryPerDT);
|
attacker.AddMod(modifiersGlobal.Parry, parryPerDT);
|
||||||
attacker.SubtractMod(modifiersGlobal.Delay, delayMsPerDT);
|
attacker.SubtractMod(modifiersGlobal.AttackDelay, delayMsPerDT);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -4,18 +4,9 @@ require("modifiers")
|
||||||
require("hiteffect")
|
require("hiteffect")
|
||||||
require("battleutils")
|
require("battleutils")
|
||||||
|
|
||||||
|
|
||||||
--todo: calculate actual mitigation value based on Source's enhancing magic. info: http://forum.square-enix.com/ffxiv/threads/40800-Enhancing-Magic
|
|
||||||
--This should also probably be calculated when the spell is cast so it doesnt overwrite a stronger stoneskin
|
|
||||||
function onGain(owner, effect)
|
function onGain(owner, effect)
|
||||||
--Going to assume its 1.34 * Enhancing Potency untraited, 1.96 * Enhancing Potency traited.
|
|
||||||
local potencyModifier = 1.34;
|
|
||||||
if effect.tier == 2 then
|
|
||||||
potencyModifier = 1.96;
|
|
||||||
end
|
|
||||||
local amount = potencyModifier * effect.source.GetMod(modifiersGlobal.MagicEnhancePotency);
|
|
||||||
|
|
||||||
owner.AddMod(modifiersGlobal.Stoneskin, amount);
|
owner.AddMod(modifiersGlobal.Stoneskin, effect.GetMagnitude());
|
||||||
end
|
end
|
||||||
|
|
||||||
--Using extra for how much mitigation stoneskin has
|
--Using extra for how much mitigation stoneskin has
|
||||||
|
|
|
@ -72,6 +72,7 @@ INSERT INTO `server_statuseffects` VALUES (223104,'quelling_strike',1058,2,0);
|
||||||
INSERT INTO `server_statuseffects` VALUES (223106,'hawks_eye',50,2,0);
|
INSERT INTO `server_statuseffects` VALUES (223106,'hawks_eye',50,2,0);
|
||||||
INSERT INTO `server_statuseffects` VALUES (223108,'decoy',4130,2,0);
|
INSERT INTO `server_statuseffects` VALUES (223108,'decoy',4130,2,0);
|
||||||
INSERT INTO `server_statuseffects` VALUES (223127,'bloodletter',42,2,0);
|
INSERT INTO `server_statuseffects` VALUES (223127,'bloodletter',42,2,0);
|
||||||
|
INSERT INTO `server_statuseffects` VALUES (223133,'stoneskin',16402,1,3000);
|
||||||
INSERT INTO `server_statuseffects` VALUES (223173,'covered',42,2,0);
|
INSERT INTO `server_statuseffects` VALUES (223173,'covered',42,2,0);
|
||||||
INSERT INTO `server_statuseffects` VALUES (223180,'regen',50,2,0);
|
INSERT INTO `server_statuseffects` VALUES (223180,'regen',50,2,0);
|
||||||
INSERT INTO `server_statuseffects` VALUES (223205,'combo',42,2,0);
|
INSERT INTO `server_statuseffects` VALUES (223205,'combo',42,2,0);
|
||||||
|
@ -124,4 +125,4 @@ commit;
|
||||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
-- Dump completed on 2018-04-18 14:54:11
|
-- Dump completed on 2018-05-27 14:40:45
|
||||||
|
|
Loading…
Add table
Reference in a new issue