Holocore-435 [Brawler] Parry Riposte Stance

Lots of file edits because I also created SWGColor and used in relevant places.
It contains commonly used colors for flytexts, so we don't need to look them up each time.
There are way more colors than the ones I added, but I figure it makes sense to add them as we go along.
This commit is contained in:
Ziggy
2022-07-13 02:49:24 +02:00
parent 90fac06fa6
commit 52ea9667f0
11 changed files with 117 additions and 79 deletions
+1
View File
@@ -21,6 +21,7 @@ meleeHit LEFT_CLICK_DEFAULT STANDARD ATTACK HEALTH 1 object/tangible/spac
meleeStrike LEFT_CLICK_DEFAULT STANDARD ATTACK HEALTH 1 object/tangible/space/content_infrastructure/generic_egg_small.iff -1 3 1 TARGET STANDARD TRUE TRUE attack_high_right_medium_0,attack_high_right_medium_1,attack_high_center_medium_0,attack_high_center_medium_1,attack_high_center_1_jab_double_medium,attack_high_center_medium_2,attack_high_left_medium_0,attack_high_left_medium_1,attack_mid_left_medium_0,attack_mid_left_medium_1,attack_mid_left_medium_2,attack_mid_right_medium_0,attack_mid_right_medium_1,attack_mid_right_medium_2,attack_special_elbow_throw_medium SINGLE_TARGET 0 0 0 0 0 0 1.2 0 1 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 PISTOL RANGED_WEAPON KINETIC KINETIC 0 0 0 FALSE WEAPON_NAME 0 0 1 0
neurotoxin RIGHT_CLICK_SPECIAL STANDARD ATTACK HEALTH 1 appearance/pt_special_attack_blind.prt weapon object/tangible/space/content_infrastructure/generic_egg_small.iff -1 3 1 TARGET STANDARD TRUE TRUE fire_1_single_medium attack_special_knee_strike_medium combo_2b_medium combo_4c_medium combo_4c_medium fire_1_single_medium fire_1_single_medium fire_1_single_medium fire_1_single_medium *heavy_wpn SINGLE_TARGET 0 0 0 0 20 0 1 0 1 0 0 0 0 0 50 0 0 0 0 0 medicNeurotoxin_1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 PISTOL RANGED_WEAPON KINETIC KINETIC 0 0 0 FALSE ACTION_NAME 0 0 1 0
paintTarget RIGHT_CLICK_SPECIAL STANDARD DEBUFF HEALTH 1 appearance/pt_special_attack_startle.prt weapon object/tangible/space/content_infrastructure/generic_egg_small.iff -1 3 1 TARGET STANDARD TRUE TRUE fire_1_single_medium attack_special_knee_strike_medium combo_2b_medium combo_4c_medium combo_4c_medium fire_1_single_medium fire_1_single_medium fire_1_single_medium fire_1_single_medium *heavy_wpn SINGLE_TARGET 0 0 0 0 20 0 1 0 1 0 0 0 0 0 50 0 0 0 0 0 officerPaintTarget_1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 PISTOL RANGED_WEAPON KINETIC KINETIC 0 0 0 FALSE perform_target ACTION_NAME 0 0 1 0
parryRiposte RIGHT_CLICK_SPECIAL NONE BUFF HEALTH 1 object/tangible/space/content_infrastructure/generic_egg_small.iff -1 3 1 TARGET STANDARD TRUE TRUE SINGLE_TARGET 0 0 0 0 0 0 1 0 1 0 0 0 0 0 50 0 0 0 0 0 0 0 parryRiposte 0 0 1 0 0 0 0 0 0 0 0 0 0 PISTOL RANGED_WEAPON KINETIC KINETIC 0 0 0 FALSE perform_notarget ACTION_NAME 0 0 1 0
rangedShot LEFT_CLICK_DEFAULT STANDARD ATTACK HEALTH 1 object/tangible/space/content_infrastructure/generic_egg_small.iff -1 3 1 TARGET STANDARD TRUE TRUE fire_1_single_medium fire_1_single_medium fire_1_single_medium fire_3_single_medium fire_1_single_medium SINGLE_TARGET 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 PISTOL RANGED_WEAPON KINETIC KINETIC 0 0 0 FALSE WEAPON_NAME 0 0 1 0
saberHit LEFT_CLICK_DEFAULT STANDARD ATTACK HEALTH 1 object/tangible/space/content_infrastructure/generic_egg_small.iff -1 3 1 TARGET STANDARD TRUE TRUE attack_high_center_medium_0,attack_high_center_medium_1,attack_high_center_medium_2,attack_high_left_medium_0,attack_high_left_medium_1,attack_high_left_medium_2,attack_high_right_medium_0,attack_high_right_medium_1,attack_high_right_medium_2,attack_low_left_medium_0,attack_low_left_medium_1,attack_low_left_medium_2,attack_low_right_medium_0,attack_low_right_medium_1,attack_low_right_medium_2,attack_mid_center_medium_0,attack_mid_center_medium_1,attack_mid_center_medium_2,attack_mid_left_medium_0,attack_mid_left_medium_1,attack_mid_left_medium_2,attack_mid_right_medium_0,attack_mid_right_medium_1,attack_mid_right_medium_2 attack_high_center_medium_0,attack_high_center_medium_1,attack_high_center_medium_2,attack_high_left_medium_0,attack_high_left_medium_1,attack_high_left_medium_2,attack_high_right_medium_0,attack_high_right_medium_1,attack_high_right_medium_2,attack_low_left_medium_0,attack_low_left_medium_1,attack_low_left_medium_2,attack_low_right_medium_0,attack_low_right_medium_1,attack_low_right_medium_2,attack_mid_center_medium_0,attack_mid_center_medium_1,attack_mid_center_medium_2,attack_mid_left_medium_0,attack_mid_left_medium_1,attack_mid_left_medium_2,attack_mid_right_medium_0,attack_mid_right_medium_1,attack_mid_right_medium_2 attack_high_center_medium_0,attack_high_center_medium_1,attack_high_center_medium_2,attack_high_left_medium_0,attack_high_left_medium_1,attack_high_left_medium_2,attack_high_right_medium_0,attack_high_right_medium_1,attack_high_right_medium_2,attack_low_left_medium_0,attack_low_left_medium_1,attack_low_left_medium_2,attack_low_right_medium_0,attack_low_right_medium_1,attack_low_right_medium_2,attack_mid_center_medium_0,attack_mid_center_medium_1,attack_mid_center_medium_2,attack_mid_left_medium_0,attack_mid_left_medium_1,attack_mid_left_medium_2,attack_mid_right_medium_0,attack_mid_right_medium_1,attack_mid_right_medium_2 attack_high_center_medium_0,attack_high_center_medium_1,attack_high_center_medium_2,attack_high_left_medium_0,attack_high_left_medium_1,attack_high_left_medium_2,attack_high_right_medium_0,attack_high_right_medium_1,attack_high_right_medium_2,attack_low_left_medium_0,attack_low_left_medium_1,attack_low_left_medium_2,attack_low_right_medium_0,attack_low_right_medium_1,attack_low_right_medium_2,attack_mid_center_medium_0,attack_mid_center_medium_1,attack_mid_center_medium_2,attack_mid_left_medium_0,attack_mid_left_medium_1,attack_mid_left_medium_2,attack_mid_right_medium_0,attack_mid_right_medium_1,attack_mid_right_medium_2 SINGLE_TARGET 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 PISTOL RANGED_WEAPON KINETIC KINETIC 0 0 0 FALSE WEAPON_NAME 0 0 1 0
stormLordSpecial RIGHT_CLICK_SPECIAL STANDARD DEBUFF HEALTH 1 clienteffect/pl_storm_lord_special.cef object/tangible/space/content_infrastructure/generic_egg_small.iff -1 3 1 TARGET STANDARD FALSE FALSE $force_lightning_1_arc_particle_level_[private_force_lightning_single_power:2]_medium AREA 30 0 0 32 10000 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1000 1500 PISTOL RANGED_WEAPON KINETIC KINETIC 0 0 0 FALSE NO_ATTACK_NAME 0 0 1 0
@@ -0,0 +1,28 @@
package com.projectswg.holocore.resources.support.color
import com.projectswg.common.data.RGB
object SWGColor {
val black = RGB(0, 0, 0)
object Blues {
val cyan = RGB(0, 255, 255)
}
object Greens {
val seagreen = RGB(46, 139, 87)
}
object Reds {
val orangered = RGB(255, 69, 0)
val red = RGB(255, 0, 0)
}
object Violets {
val magenta = RGB(255, 0, 255)
}
object Whites {
val white = RGB(255, 255, 255)
}
}
@@ -1,60 +0,0 @@
/***********************************************************************************
* Copyright (c) 2018 /// Project SWG /// www.projectswg.com *
* *
* ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on *
* July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies. *
* Our goal is to create an emulator which will provide a server for players to *
* continue playing a game similar to the one they used to play. We are basing *
* it on the final publish of the game prior to end-game events. *
* *
* This file is part of Holocore. *
* *
* --------------------------------------------------------------------------------*
* *
* Holocore is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* Holocore is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Affero General Public License for more details. *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with Holocore. If not, see <http://www.gnu.org/licenses/>. *
***********************************************************************************/
package com.projectswg.holocore.resources.support.global.commands.callbacks;
import com.projectswg.common.data.RGB;
import com.projectswg.common.data.encodables.oob.StringId;
import com.projectswg.common.data.encodables.tangible.Posture;
import com.projectswg.common.network.packets.swg.zone.object_controller.ShowFlyText;
import com.projectswg.holocore.resources.support.global.commands.ICmdCallback;
import com.projectswg.holocore.resources.support.global.commands.Locomotion;
import com.projectswg.holocore.resources.support.global.player.Player;
import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
import org.jetbrains.annotations.NotNull;
public class KnockdownRecoveryCmdCallback implements ICmdCallback{
@Override
public void execute(@NotNull Player player, SWGObject target, @NotNull String args) {
CreatureObject creatureObject = player.getCreatureObject();
if (Locomotion.KNOCKED_DOWN.isActive(creatureObject)) {
standUp(creatureObject);
} else {
showWrongPostureFlyText(creatureObject);
}
}
private void showWrongPostureFlyText(CreatureObject creatureObject) {
creatureObject.sendSelf(new ShowFlyText(creatureObject.getObjectId(), new StringId("combat_effects", "wrong_posture_fly"), ShowFlyText.Scale.MEDIUM, new RGB(255, 255, 255)));
}
private void standUp(CreatureObject creatureObject) {
creatureObject.setPosture(Posture.UPRIGHT);
}
}
@@ -0,0 +1,31 @@
package com.projectswg.holocore.resources.support.global.commands.callbacks
import com.projectswg.common.data.encodables.oob.StringId
import com.projectswg.common.data.encodables.tangible.Posture
import com.projectswg.common.network.packets.swg.zone.object_controller.ShowFlyText
import com.projectswg.holocore.resources.support.color.SWGColor
import com.projectswg.holocore.resources.support.global.commands.ICmdCallback
import com.projectswg.holocore.resources.support.global.commands.Locomotion
import com.projectswg.holocore.resources.support.global.player.Player
import com.projectswg.holocore.resources.support.objects.swg.SWGObject
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject
class KnockdownRecoveryCmdCallback : ICmdCallback {
override fun execute(player: Player, target: SWGObject?, args: String) {
val creatureObject = player.creatureObject
if (Locomotion.KNOCKED_DOWN.isActive(creatureObject)) {
standUp(creatureObject)
} else {
showWrongPostureFlyText(creatureObject)
}
}
private fun showWrongPostureFlyText(creatureObject: CreatureObject) {
creatureObject.sendSelf(ShowFlyText(creatureObject.objectId, StringId("combat_effects", "wrong_posture_fly"), ShowFlyText.Scale.MEDIUM, SWGColor.Whites.white))
}
private fun standUp(creatureObject: CreatureObject) {
creatureObject.posture = Posture.UPRIGHT
}
}
@@ -1,6 +1,5 @@
package com.projectswg.holocore.resources.support.npc.ai
import com.projectswg.common.data.RGB
import com.projectswg.common.data.encodables.oob.StringId
import com.projectswg.common.data.encodables.tangible.Posture
import com.projectswg.common.data.location.Location
@@ -12,6 +11,7 @@ import com.projectswg.holocore.intents.support.npc.ai.StartNpcCombatIntent
import com.projectswg.holocore.intents.support.npc.ai.StartNpcMovementIntent
import com.projectswg.holocore.intents.support.npc.ai.StopNpcMovementIntent
import com.projectswg.holocore.intents.support.objects.swg.MoveObjectIntent
import com.projectswg.holocore.resources.support.color.SWGColor
import com.projectswg.holocore.resources.support.data.server_info.loader.DataLoader
import com.projectswg.holocore.resources.support.data.server_info.mongodb.PswgDatabase
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject
@@ -62,7 +62,7 @@ class NpcCombatMode(obj: AIObject) : NpcMode(obj) {
}
private fun showExclamationMarkAboveNpc() {
ai.sendObservers(ShowFlyText(ai.objectId, StringId("npc_reaction/flytext", "threaten"), ShowFlyText.Scale.SMALL, RGB(204, 0, 0)))
ai.sendObservers(ShowFlyText(ai.objectId, StringId("npc_reaction/flytext", "threaten"), ShowFlyText.Scale.SMALL, SWGColor.Reds.red))
}
override fun onModeEnd() {
@@ -26,13 +26,13 @@
***********************************************************************************/
package com.projectswg.holocore.resources.support.objects.swg.custom;
import com.projectswg.common.data.RGB;
import com.projectswg.common.data.encodables.oob.StringId;
import com.projectswg.common.data.location.Location;
import com.projectswg.common.network.packets.swg.zone.baselines.Baseline.BaselineType;
import com.projectswg.common.network.packets.swg.zone.object_controller.ShowFlyText;
import com.projectswg.holocore.intents.support.npc.ai.ScheduleNpcModeIntent;
import com.projectswg.holocore.intents.support.npc.ai.StartNpcCombatIntent;
import com.projectswg.holocore.resources.support.color.SWGColor;
import com.projectswg.holocore.resources.support.npc.spawn.Spawner;
import com.projectswg.holocore.resources.support.objects.ObjectCreator;
import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
@@ -170,7 +170,7 @@ public class AIObject extends CreatureObject {
}
private void showQuestionMarkAboveNpc() {
this.sendObservers(new ShowFlyText(this.getObjectId(), new StringId("npc_reaction/flytext", "alert"), ShowFlyText.Scale.SMALL, new RGB(204, 0, 0)));
this.sendObservers(new ShowFlyText(this.getObjectId(), new StringId("npc_reaction/flytext", "alert"), ShowFlyText.Scale.SMALL, SWGColor.Reds.INSTANCE.getRed()));
}
private void checkAwareAttack(CreatureObject player) {
@@ -27,17 +27,20 @@
package com.projectswg.holocore.services.gameplay.combat.command;
import com.projectswg.common.data.RGB;
import com.projectswg.common.data.combat.*;
import com.projectswg.common.data.encodables.oob.OutOfBandPackage;
import com.projectswg.common.data.encodables.oob.ProsePackage;
import com.projectswg.common.data.encodables.oob.StringId;
import com.projectswg.common.data.location.Location;
import com.projectswg.common.network.packets.swg.zone.object_controller.ShowFlyText;
import com.projectswg.common.network.packets.swg.zone.object_controller.combat.CombatAction;
import com.projectswg.common.network.packets.swg.zone.object_controller.combat.CombatAction.Defender;
import com.projectswg.common.network.packets.swg.zone.object_controller.combat.CombatSpam;
import com.projectswg.holocore.intents.gameplay.combat.EnterCombatIntent;
import com.projectswg.holocore.intents.gameplay.combat.KnockdownIntent;
import com.projectswg.holocore.intents.gameplay.combat.RequestCreatureDeathIntent;
import com.projectswg.holocore.intents.support.global.chat.SystemMessageIntent;
import com.projectswg.holocore.resources.support.color.SWGColor;
import com.projectswg.holocore.resources.support.global.commands.CombatCommand;
import com.projectswg.holocore.resources.support.global.commands.Locomotion;
import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
@@ -196,7 +199,7 @@ enum CombatCommandAttack implements CombatCommandHitType {
if (randomNumberBetween0And100() > toHit) {
info.setSuccess(false);
ShowFlyText missFlyText = new ShowFlyText(target.getObjectId(), new StringId("combat_effects", "miss"), ShowFlyText.Scale.MEDIUM, new RGB(255, 255, 255));
ShowFlyText missFlyText = new ShowFlyText(target.getObjectId(), new StringId("combat_effects", "miss"), ShowFlyText.Scale.MEDIUM, SWGColor.Whites.INSTANCE.getWhite());
target.sendSelf(missFlyText);
source.sendSelf(missFlyText);
@@ -258,11 +261,48 @@ enum CombatCommandAttack implements CombatCommandHitType {
int hate = (int) (finalDamage * command.getHateDamageModifier());
hate += command.getHateAdd();
target.handleHate(source, hate);
boolean bothUsingMelee = target.getEquippedWeapon().getType().isMelee() && source.getEquippedWeapon().getType().isMelee();
if (bothUsingMelee) {
double percentOfDamageToReflectBackToAttacker = target.getSkillModValue("private_melee_dmg_shield") / 100d;
if (percentOfDamageToReflectBackToAttacker > 0) {
riposte(source, target, rawDamage, percentOfDamageToReflectBackToAttacker);
}
}
}
source.sendObservers(action);
}
private static void riposte(CreatureObject source, CreatureObject target, int rawDamage, double percentOfDamageToReflectBackToAttacker) {
int reflectedDamage = (int) (percentOfDamageToReflectBackToAttacker * rawDamage);
ShowFlyText riposteFlytext = new ShowFlyText(target.getObjectId(), new StringId("cbt_spam", "dmg_shield_melee_fly"), ShowFlyText.Scale.MEDIUM, SWGColor.Reds.INSTANCE.getOrangered());
target.sendSelf(riposteFlytext);
source.sendSelf(riposteFlytext);
OutOfBandPackage spamMessage = new OutOfBandPackage(new ProsePackage(new StringId("cbt_spam", "dmg_shield_melee_spam"), "TU", target.getObjectName(), "TT", source.getObjectName(), "DI", reflectedDamage));
sendRiposteCombatSpam(target, spamMessage);
sendRiposteCombatSpam(source, spamMessage);
if (source.getHealth() < reflectedDamage) {
// Took more damage than they had health left. Final damage becomes the amount of remaining health.
RequestCreatureDeathIntent.broadcast(source, target);
} else {
source.modifyHealth(-reflectedDamage);
}
}
private static void sendRiposteCombatSpam(CreatureObject receiver, OutOfBandPackage spamMessage) {
CombatSpam riposteCombatSpamTo = new CombatSpam(receiver.getObjectId());
riposteCombatSpamTo.setDataType((byte) 2);
riposteCombatSpamTo.setSpamMessage(spamMessage);
riposteCombatSpamTo.setSpamType(CombatSpamType.HIT);
receiver.sendSelf(riposteCombatSpamTo);
}
private static double calculateToHit(CreatureObject source, WeaponObject sourceWeapon, CreatureObject target) {
int accMod = calculateAccMod(source, sourceWeapon);
int defMod = calculateDefMod(source, target);
@@ -39,6 +39,7 @@ import com.projectswg.common.network.packets.swg.zone.object_controller.ShowFlyT
import com.projectswg.common.network.packets.swg.zone.object_controller.combat.CombatAction;
import com.projectswg.common.network.packets.swg.zone.object_controller.combat.CombatSpam;
import com.projectswg.holocore.intents.gameplay.combat.buffs.BuffIntent;
import com.projectswg.holocore.resources.support.color.SWGColor;
import com.projectswg.holocore.resources.support.global.commands.CombatCommand;
import com.projectswg.holocore.resources.support.global.commands.Command;
import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
@@ -50,9 +51,6 @@ import java.util.concurrent.ThreadLocalRandom;
public class CombatCommandCommon {
private static final RGB COLOR_WHITE = new RGB(255, 255, 255);
private static final RGB COLOR_CYAN = new RGB(0, 255, 255);
private CombatCommandCommon() {
}
@@ -161,10 +159,10 @@ public class CombatCommandCommon {
public static void handleStatus(CreatureObject source, CombatStatus status) {
switch (status) {
case NO_TARGET -> showFlyText(source, "@combat_effects:target_invalid_fly", Scale.MEDIUM, COLOR_WHITE, ShowFlyText.Flag.PRIVATE);
case TOO_FAR -> showFlyText(source, "@combat_effects:range_too_far", Scale.MEDIUM, COLOR_CYAN, ShowFlyText.Flag.PRIVATE);
case INVALID_TARGET -> showFlyText(source, "@combat_effects:target_invalid_fly", Scale.MEDIUM, COLOR_CYAN, ShowFlyText.Flag.PRIVATE);
default -> showFlyText(source, "@combat_effects:action_failed", Scale.MEDIUM, COLOR_WHITE, ShowFlyText.Flag.PRIVATE);
case NO_TARGET -> showFlyText(source, "@combat_effects:target_invalid_fly", Scale.MEDIUM, SWGColor.Whites.INSTANCE.getWhite(), ShowFlyText.Flag.PRIVATE);
case TOO_FAR -> showFlyText(source, "@combat_effects:range_too_far", Scale.MEDIUM, SWGColor.Blues.INSTANCE.getCyan(), ShowFlyText.Flag.PRIVATE);
case INVALID_TARGET -> showFlyText(source, "@combat_effects:target_invalid_fly", Scale.MEDIUM, SWGColor.Blues.INSTANCE.getCyan(), ShowFlyText.Flag.PRIVATE);
default -> showFlyText(source, "@combat_effects:action_failed", Scale.MEDIUM, SWGColor.Whites.INSTANCE.getWhite(), ShowFlyText.Flag.PRIVATE);
}
}
@@ -27,7 +27,6 @@
package com.projectswg.holocore.services.gameplay.combat.command;
import com.projectswg.common.data.RGB;
import com.projectswg.common.data.combat.*;
import com.projectswg.common.data.encodables.oob.OutOfBandPackage;
import com.projectswg.common.data.encodables.oob.ProsePackage;
@@ -42,6 +41,7 @@ import com.projectswg.common.network.packets.swg.zone.object_controller.combat.C
import com.projectswg.common.network.packets.swg.zone.object_controller.combat.CombatAction.Defender;
import com.projectswg.common.network.packets.swg.zone.object_controller.combat.CombatSpam;
import com.projectswg.holocore.intents.gameplay.player.experience.ExperienceIntent;
import com.projectswg.holocore.resources.support.color.SWGColor;
import com.projectswg.holocore.resources.support.global.commands.CombatCommand;
import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
@@ -187,7 +187,7 @@ enum CombatCommandHeal implements CombatCommandHitType {
combatAction.addDefender(new Defender(healed.getObjectId(), healed.getPosture(), false, (byte) 0, HitLocation.HIT_LOCATION_BODY, (short) 0));
OutOfBandPackage oobp = new OutOfBandPackage(new ProsePackage("StringId", new StringId("healing", "heal_fly"), "DI", difference, "TO", attribName));
ShowFlyText flyText = new ShowFlyText(healed.getObjectId(), oobp, Scale.MEDIUM, new RGB(46, 139, 87), ShowFlyText.Flag.IS_HEAL);
ShowFlyText flyText = new ShowFlyText(healed.getObjectId(), oobp, Scale.MEDIUM, SWGColor.Greens.INSTANCE.getSeagreen(), ShowFlyText.Flag.IS_HEAL);
String commandName = combatCommand.getName();
SWGPacket effect;
@@ -1,6 +1,5 @@
package com.projectswg.holocore.services.gameplay.player.experience;
import com.projectswg.common.data.RGB;
import com.projectswg.common.data.encodables.oob.OutOfBandPackage;
import com.projectswg.common.data.encodables.oob.ProsePackage;
import com.projectswg.common.data.encodables.oob.StringId;
@@ -9,6 +8,7 @@ import com.projectswg.common.network.packets.swg.zone.object_controller.ShowFlyT
import com.projectswg.common.network.packets.swg.zone.object_controller.ShowFlyText.Scale;
import com.projectswg.holocore.intents.gameplay.player.experience.ExperienceIntent;
import com.projectswg.holocore.intents.support.global.chat.SystemMessageIntent;
import com.projectswg.holocore.resources.support.color.SWGColor;
import com.projectswg.holocore.resources.support.data.server_info.mongodb.PswgDatabase;
import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
@@ -68,8 +68,7 @@ public class ExperiencePointService extends Service {
private void showFlytext(CreatureObject creatureObject, SWGObject flytextTarget, int xpGained) {
OutOfBandPackage message = new OutOfBandPackage(new ProsePackage(new StringId("base_player", "prose_flytext_xp"), "DI", xpGained));
RGB magenta = new RGB(255, 0, 255);
ShowFlyText packet = new ShowFlyText(flytextTarget.getObjectId(), message, Scale.MEDIUM, magenta);
ShowFlyText packet = new ShowFlyText(flytextTarget.getObjectId(), message, Scale.MEDIUM, SWGColor.Violets.INSTANCE.getMagenta());
creatureObject.sendSelf(packet);
}
@@ -14,6 +14,7 @@ import com.projectswg.holocore.intents.support.global.command.ExecuteCommandInte
import com.projectswg.holocore.intents.support.global.command.QueueCommandIntent;
import com.projectswg.holocore.intents.support.global.network.InboundPacketIntent;
import com.projectswg.holocore.intents.support.global.zone.PlayerEventIntent;
import com.projectswg.holocore.resources.support.color.SWGColor;
import com.projectswg.holocore.resources.support.data.server_info.StandardLog;
import com.projectswg.holocore.resources.support.data.server_info.loader.DataLoader;
import com.projectswg.holocore.resources.support.data.server_info.loader.ValidWeapon;
@@ -332,7 +333,7 @@ public class CommandQueueService extends Service {
}
private void showInvalidWeaponFlyText(CreatureObject source) {
source.sendSelf(new ShowFlyText(source.getObjectId(), new StringId("cbt_spam", "invalid_weapon"), ShowFlyText.Scale.MEDIUM, new RGB(255, 255, 255)));
source.sendSelf(new ShowFlyText(source.getObjectId(), new StringId("cbt_spam", "invalid_weapon"), ShowFlyText.Scale.MEDIUM, SWGColor.Whites.INSTANCE.getWhite()));
}
}