From d14d70843dabe87ac264166a4abf7e1fd3ac2373 Mon Sep 17 00:00:00 2001 From: Ceikry Date: Sat, 7 Mar 2020 16:42:24 -0600 Subject: [PATCH] Addressed issue #130. Added loar shades, fixed all their animations, proper transitions between forms, etc --- Server/server.sql | 12 ++++++++---- Server/src/org/crandor/game/node/entity/Entity.java | 4 ++++ .../crandor/game/node/entity/combat/CombatPulse.java | 9 +++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Server/server.sql b/Server/server.sql index 791cebca5..7943b601c 100644 --- a/Server/server.sql +++ b/Server/server.sql @@ -14369,7 +14369,7 @@ INSERT INTO `npc_configs` (`id`, `name`, `examine`, `lifepoints`, `attack_level` (1235, 'Bruise Blamish Snail', 'A bruise blue coloured blamish snail', 14, 10, 10, 10, 1, NULL, NULL, NULL, NULL, 60, NULL, NULL, NULL, 8143, 0, 8144, NULL, 0, 0, NULL, NULL, NULL, 9, NULL, 0, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (1239, 'Bedabin Nomad Fighter', 'A Bedabin nomad fighter - a sandy swordsman.', 42, 30, 30, 30, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 390, 0, 836, NULL, 0, 0, NULL, NULL, NULL, 9, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (1240, 'Loar Shadow', 'A shadowy sort of entity', 60, 31, 31, 42, 1, 42, NULL, NULL, NULL, 60, NULL, NULL, NULL, 0, 0, 0, NULL, 0, 0, NULL, NULL, NULL, 3, 73, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), -(1241, 'Loar Shade', 'The shadowy remains of a long departed soul.', 60, 31, 31, 42, 1, 42, NULL, NULL, NULL, 60, NULL, NULL, NULL, 1283, 0, 1287, NULL, 0, 0, NULL, NULL, NULL, 3, 73, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +(1241, 'Loar Shade', 'The shadowy remains of a long departed soul.', 60, 31, 31, 42, 1, 42, NULL, NULL, NULL, 60, NULL, NULL, NULL, 1283, 1284, 1308, NULL, 0, 0, NULL, NULL, NULL, 3, 73, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (1243, 'Phrin Shadow', 'A shadowy sort of entity', 61, 32, 32, 43, 1, 43, NULL, NULL, NULL, 60, NULL, NULL, NULL, 0, 0, 0, NULL, 0, 0, NULL, NULL, NULL, 3, 73, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (1244, 'Phrin Shade', 'The shadowy remains of a long departed soul.', 61, 32, 32, 43, 1, 43, NULL, NULL, NULL, 60, NULL, NULL, NULL, 1283, 0, 1287, NULL, 0, 0, NULL, NULL, NULL, 3, 73, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (1245, 'Riyl Shadow', 'A shadowy sort of entity', 64, 33, 33, 45, 1, 45, NULL, NULL, NULL, 60, NULL, NULL, NULL, 0, 0, 0, NULL, 0, 0, NULL, NULL, NULL, 3, 73, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), @@ -15860,9 +15860,9 @@ INSERT INTO `npc_configs` (`id`, `name`, `examine`, `lifepoints`, `attack_level` (4654, 'Trader Crewmember', 'She\'ll never be able to climb rigging in that.', 10, 1, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (4655, 'Trader Crewmember', 'High heels on a ship? What is she thinking?', 10, 1, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), (4656, 'Trader Crewmember', 'The effect is sort of spoiled by all those tattoos.', 10, 1, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), -(4658, 'Dark wizard', NULL, 12, 1, 1, 1, 1, NULL, NULL, NULL, NULL, 60, NULL, NULL, NULL, 810, 425, 836, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, 1, NULL, NULL, NULL, NULL, NULL, '511,513,512', NULL, NULL, NULL), -(4659, 'Dark wizard', NULL, 12, 1, 1, 1, 1, NULL, NULL, NULL, NULL, 60, NULL, NULL, NULL, 810, 425, 836, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, 1, NULL, NULL, NULL, NULL, NULL, '511,513,512', NULL, NULL, NULL), -(4660, 'Dark wizard', NULL, 25, 1, 1, 1, 1, NULL, NULL, NULL, NULL, 60, NULL, NULL, NULL, 810, 425, 836, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, 1, NULL, NULL, NULL, NULL, NULL, '511,513,512', NULL, NULL, NULL), +(4658, 'Dark wizard', 'A wizard of the Dark Arts.', 12, 1, 1, 1, 1, NULL, NULL, NULL, NULL, 60, NULL, NULL, NULL, 810, 425, 836, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, 1, NULL, NULL, NULL, NULL, NULL, '511,513,512', NULL, NULL, NULL), +(4659, 'Dark wizard', 'A wizard of the Dark Arts.', 12, 1, 1, 1, 1, NULL, NULL, NULL, NULL, 60, NULL, NULL, NULL, 810, 425, 836, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, 1, NULL, NULL, NULL, NULL, NULL, '511,513,512', NULL, NULL, NULL), +(4660, 'Dark wizard', 'A wizard of the Dark Arts.', 25, 1, 1, 1, 1, NULL, NULL, NULL, NULL, 60, NULL, NULL, NULL, 810, 425, 836, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, 1, NULL, NULL, NULL, NULL, NULL, '511,513,512', NULL, NULL, NULL), (4661, 'Dark wizard', 'A wizard of the Dark Arts.', 30, 1, 1, 15, 1, 15, '30,10,10,10,10,10,10,25,0,0,0,0,0,0,0', NULL, NULL, 20, 5, NULL, NULL, NULL, 404, 9055, NULL, NULL, NULL, 2713, 2718, NULL, NULL, NULL, NULL, 2, NULL, 1, NULL, NULL, NULL, NULL, NULL, '511,513,512', NULL, NULL, NULL), (4665, 'Baby blue dragon', 'Young but still dangerous.', 50, 40, 40, 42, 1, 40, '50,40,64,60,30,45,40,40,20,40,40,20,0,0,0', NULL, NULL, 32, 5, NULL, NULL, 25, 26, 28, NULL, 25, 25, NULL, NULL, NULL, 3, 68, 0, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, '408,410,409', NULL, NULL, NULL), (4666, 'Baby blue dragon', 'Young but still dangerous.', 51, 45, 45, 48, 45, 45, '49,45,43,50,73,71,56,78,68,0,0,0,0,0,0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 108, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '408,410,409', NULL, NULL, NULL), @@ -17873,6 +17873,8 @@ INSERT INTO `npc_drops` (`npc_id`, `default`, `main`, `charm`) VALUES (1233, '{3367,1,1,0.0,ALWAYS}~{3357,1,1,0.0,ALWAYS}', '', ''), (1234, '{3363,1,1,0.0,ALWAYS}~{3359,1,1,0.0,ALWAYS}', '', ''), (1235, '{3367,1,1,0.0,ALWAYS}~{3361,1,1,0.0,ALWAYS}', '', ''), +(1240, '{3396,1,1,0.0,ALWAYS}','',''), +(1241, '{3396,1,1,0.0,ALWAYS}','',''), (1255, '{526,1,1,0.0,ALWAYS}', '{1139,1,1,0.0,UNCOMMON}~{1203,1,1,0.0,UNCOMMON}~{882,7,7,0.0,UNCOMMON}~{877,5,11,0.0,UNCOMMON}~{558,9,9,0.0,UNCOMMON}~{554,6,6,0.0,UNCOMMON}~{562,2,2,0.0,UNCOMMON}~{557,4,4,0.0,UNCOMMON}~{1440,1,1,0.0,UNCOMMON}~{199,1,1,0.0,RARE}~{201,1,1,0.0,RARE}~{203,1,1,0.0,UNCOMMON}~{205,1,1,0.0,RARE}~{207,1,1,0.0,RARE}~{209,1,1,0.0,RARE}~{211,1,1,0.0,RARE}~{213,1,1,0.0,RARE}~{215,1,1,0.0,RARE}~{2485,1,1,0.0,RARE}~{217,1,1,0.0,UNCOMMON}~{995,3,30,0.0,COMMON}~{1965,1,1,0.0,UNCOMMON}~{436,1,1,0.0,UNCOMMON}~{313,110,30,0.0,RARE}~{2681,1,1,0.0,RARE}', ''), (1256, '{526,1,1,0.0,ALWAYS}', '{1139,1,1,0.0,UNCOMMON}~{1203,1,1,0.0,UNCOMMON}~{882,7,7,0.0,UNCOMMON}~{877,5,11,0.0,UNCOMMON}~{558,9,9,0.0,UNCOMMON}~{554,6,6,0.0,UNCOMMON}~{562,2,2,0.0,UNCOMMON}~{557,4,4,0.0,UNCOMMON}~{1440,1,1,0.0,UNCOMMON}~{199,1,1,0.0,RARE}~{201,1,1,0.0,RARE}~{203,1,1,0.0,UNCOMMON}~{205,1,1,0.0,RARE}~{207,1,1,0.0,RARE}~{209,1,1,0.0,RARE}~{211,1,1,0.0,RARE}~{213,1,1,0.0,RARE}~{215,1,1,0.0,RARE}~{2485,1,1,0.0,RARE}~{217,1,1,0.0,UNCOMMON}~{995,3,30,0.0,COMMON}~{1965,1,1,0.0,UNCOMMON}~{436,1,1,0.0,UNCOMMON}~{313,110,30,0.0,RARE}~{2677,1,1,0.0,RARE}', ''), (1257, '{526,1,1,0.0,ALWAYS}', '{1139,1,1,0.0,UNCOMMON}~{1203,1,1,0.0,UNCOMMON}~{882,7,7,0.0,UNCOMMON}~{877,5,11,0.0,UNCOMMON}~{558,9,9,0.0,UNCOMMON}~{554,6,6,0.0,UNCOMMON}~{562,2,2,0.0,UNCOMMON}~{557,4,4,0.0,UNCOMMON}~{1440,1,1,0.0,UNCOMMON}~{199,1,1,0.0,RARE}~{201,1,1,0.0,RARE}~{203,1,1,0.0,UNCOMMON}~{205,1,1,0.0,RARE}~{207,1,1,0.0,RARE}~{209,1,1,0.0,RARE}~{211,1,1,0.0,RARE}~{213,1,1,0.0,RARE}~{215,1,1,0.0,RARE}~{2485,1,1,0.0,RARE}~{217,1,1,0.0,UNCOMMON}~{995,3,30,0.0,COMMON}~{1965,1,1,0.0,UNCOMMON}~{436,1,1,0.0,UNCOMMON}~{313,110,30,0.0,RARE}~{2686,1,1,0.0,RARE}', ''), @@ -22030,6 +22032,7 @@ INSERT INTO `npc_spawns` (`npc_id`, `loc_data`) VALUES (3917, '{2581,3861,0,0,1}'), (7711, '{3405,9902,0,0,0}'); INSERT INTO `npc_spawns` (`npc_id`, `loc_data`) VALUES +(1240, '{3502,3288,0,1,4}-{3505,3284,0,1,4}-{3490,3292,0,1,4}-{3502,3300,0,1,4}-{3492,3303,0,1,4}-{3516,3303,0,1,4}-{3478,3281,0,1,4}-{3473,3273,0,1,4}-{3469,3288,0,1,4}-{3469,3304,0,1,4}'), (3851, '{2332,3669,0,0,0}-{2325,3671,0,0,4}-{2331,3670,0,0,1}-{2333,3671,0,0,3}'), (3848, '{2337,3703,0,0,6}-{2340,3702,0,0,6}-{2343,3702,0,0,3}-{2349,3702,0,0,6}-{2353,3703,0,0,6}-{2310,3704,0,0,6}-{2311,3696,0,0,4}-{2343,3702,0,0,3}'), (7734, '{3009,3487,0,0,0}'), @@ -22068,6 +22071,7 @@ INSERT INTO `npc_spawns` (`npc_id`, `loc_data`) VALUES (684, '{2673,3416,0,0,0}'), (694, '{2659,3431,0,0,3}'); + -- -------------------------------------------------------- -- diff --git a/Server/src/org/crandor/game/node/entity/Entity.java b/Server/src/org/crandor/game/node/entity/Entity.java index 2d6872e0d..c4549a903 100644 --- a/Server/src/org/crandor/game/node/entity/Entity.java +++ b/Server/src/org/crandor/game/node/entity/Entity.java @@ -221,6 +221,10 @@ public abstract class Entity extends Node { if (HolidayEvent.getCurrent() != null) { HolidayEvent.getCurrent().finalizeDeath(killer, this); } + //Check if it's a Loar shade and transform back into the shadow version. + if(this.getId() == 1240 || this.getId() == 1241){ + this.asNpc().transform(1240); + } } /** diff --git a/Server/src/org/crandor/game/node/entity/combat/CombatPulse.java b/Server/src/org/crandor/game/node/entity/combat/CombatPulse.java index d3355af03..c738babee 100644 --- a/Server/src/org/crandor/game/node/entity/combat/CombatPulse.java +++ b/Server/src/org/crandor/game/node/entity/combat/CombatPulse.java @@ -7,6 +7,7 @@ import org.crandor.game.node.Node; import org.crandor.game.node.entity.Entity; import org.crandor.game.node.entity.combat.equipment.ArmourSet; import org.crandor.game.node.entity.combat.equipment.WeaponInterface; +import org.crandor.game.node.entity.impl.Animator; import org.crandor.game.node.entity.npc.NPC; import org.crandor.game.node.entity.player.Player; import org.crandor.game.node.entity.player.link.audio.Audio; @@ -14,6 +15,7 @@ import org.crandor.game.node.entity.state.EntityState; import org.crandor.game.node.item.Item; import org.crandor.game.system.task.Pulse; import org.crandor.game.world.GameWorld; +import org.crandor.game.world.update.flag.context.Animation; import org.crandor.tools.RandomFunction; /** @@ -101,6 +103,7 @@ public final class CombatPulse extends Pulse { if (!entity.getViewport().getRegion().isActive() || !victim.getViewport().getRegion().isActive()) { return true; } + if (!interactable()) { if (entity.getWalkingQueue().isMoving()) { return false; @@ -373,8 +376,14 @@ public final class CombatPulse extends Pulse { } if (victim instanceof NPC) { if (entity instanceof Player && victim != this.victim && victim != lastVictim) { + // Loar Shade Transformation Animation + Animation shade = new Animation(1288, 0, Animator.Priority.VERY_HIGH); Player player = (Player) entity; Item mask = player.getEquipment().get(EquipmentContainer.SLOT_HAT); + if(victim.getId() == 1240){ + ((NPC) victim).animate(shade); + ((NPC) victim).transform(1241); + } if (mask != null && mask.getId() >= 8901 && mask.getId() < 8920 && RandomFunction.random(50) == 0) { player.getPacketDispatch().sendMessage("Your black mask startles your enemy, you have " + (mask.getId() == 8919 ? "no" : Integer.toString((8920 - mask.getId()) / 2)) + " charges left.");