From 76bc09a9e6e50c51f6f536139761ec453b4f6f7c Mon Sep 17 00:00:00 2001 From: Reedux Date: Mon, 11 Jan 2021 20:27:17 +0000 Subject: [PATCH 01/10] Decrease Soothing Comfort & Pet Revive Action Cost By 50% https://github.com/SWG-Source/qa-testing/issues/11 https://github.com/SWG-Source/qa-testing/issues/12 --- .../compiled/game/datatables/combat/combat_data.tab | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sku.0/sys.shared/compiled/game/datatables/combat/combat_data.tab b/sku.0/sys.shared/compiled/game/datatables/combat/combat_data.tab index 864b6bab0..0edfb684d 100755 --- a/sku.0/sys.shared/compiled/game/datatables/combat/combat_data.tab +++ b/sku.0/sys.shared/compiled/game/datatables/combat/combat_data.tab @@ -869,12 +869,12 @@ en_holographic_image en_holographic_image Entertainer:HolographicBackupImage en_holographic_recall en_holographic_recall Entertainer:RecallHolographicImages STANDARD en_holographic_recall en_unhealthy_fixation en_unhealthy_fixation Entertainer:UnhealthyFixation STANDARD NON_DAMAGE_ATTACK 1 1 fire_1_single_medium attack_special_knee_strike_medium OFF OFF OFF OFF ON SINGLE_TARGET 30 0 -10 en_unhealthy_fixation_debuff en_unhealthy_fixation_debuff forceCrystalForce forceCrystalForce FSVillageCrystalProc clienteffect/cyborg_cbt_electric_hit.cef weapon 1 500 1250 100 ELEMENTAL_ELECTRICAL no_proc -bm_soothing_comfort_1 bm_soothing_comfort_1 PetOnlyRemoveHarmful MOB NON_DAMAGE_ATTACK appearance/pt_force_avoid_incapacitation.prt 1 heal_other OFF OFF OFF OFF ON SINGLE_TARGET 64 0 -18 bm_pet_cure bm_cure perform_notarget NO_HIT_SPAM +bm_soothing_comfort_1 bm_soothing_comfort_1 PetOnlyRemoveHarmful MOB NON_DAMAGE_ATTACK appearance/pt_force_avoid_incapacitation.prt 1 heal_other OFF OFF OFF OFF ON SINGLE_TARGET 64 0 -9 bm_pet_cure bm_cure perform_notarget NO_HIT_SPAM bm_mend_pet_1 bm_mend_pet_1 PetHeal MOB NON_ATTACK HEALTH appearance/pt_heal_over_time_2.prt 1 heal_other OFF OFF OFF OFF ON SINGLE_TARGET 64 1850 0 1 -20 bm_heal perform_notarget bm_mend_pet_2 bm_mend_pet_2 PetHeal MOB NON_ATTACK HEALTH appearance/pt_heal_over_time_2.prt 1 heal_other OFF OFF OFF OFF ON SINGLE_TARGET 64 2500 0 1 -20 bm_heal perform_notarget bm_mend_pet_3 bm_mend_pet_3 PetHeal MOB NON_ATTACK HEALTH appearance/pt_heal_over_time_2.prt 1 heal_other OFF OFF OFF OFF ON SINGLE_TARGET 64 3300 0 1 -20 bm_heal perform_notarget -bm_revive_pet_1 bm_revive_pet_1 PetRevive MOB NON_ATTACK appearance/pt_heal_2.prt root 0 0 heal_other OFF OFF OFF OFF ON SINGLE_TARGET 7 -60 bm_revive perform_target -bm_revive_pet_2 bm_revive_pet_2 PetRevive2 MOB NON_ATTACK appearance/pt_heal_2.prt root 0 0 heal_other OFF OFF OFF OFF ON SINGLE_TARGET 7 -40 bm_revive perform_target +bm_revive_pet_1 bm_revive_pet_1 PetRevive MOB NON_ATTACK appearance/pt_heal_2.prt root 0 0 heal_other OFF OFF OFF OFF ON SINGLE_TARGET 7 -30 bm_revive perform_target +bm_revive_pet_2 bm_revive_pet_2 PetRevive2 MOB NON_ATTACK appearance/pt_heal_2.prt root 0 0 heal_other OFF OFF OFF OFF ON SINGLE_TARGET 7 -20 bm_revive perform_target bm_charge_1 bm_charge_1 STANDARD ATTACK 1 clienteffect/cyborg_cbt_electric_hit.cef 0 0 *creature_attack_ranged OFF OFF OFF OFF OFF SINGLE_TARGET 0 0 5 30 100 40 charge_stun_debuff bm_charge_1_buff 1 100 100 30 beast_only bm_charge_2 bm_charge_2 STANDARD ATTACK 1 clienteffect/cyborg_cbt_electric_hit.cef 0 0 *creature_attack_ranged OFF OFF OFF OFF OFF SINGLE_TARGET 0 0 5 30 200 40 charge_stun_debuff bm_charge_1_buff 1 225 225 30 beast_only bm_charge_3 bm_charge_3 STANDARD ATTACK 1 clienteffect/cyborg_cbt_electric_hit.cef 0 0 *creature_attack_ranged OFF OFF OFF OFF OFF SINGLE_TARGET 0 0 5 30 300 40 charge_stun_debuff bm_charge_1_buff 1 500 500 30 beast_only From 6a5b63927c80ea353d4442d50092a02f8a2a058b Mon Sep 17 00:00:00 2001 From: Reedux Date: Mon, 11 Jan 2021 20:40:52 +0000 Subject: [PATCH 02/10] Pet revive health will now increase with expertise options https://github.com/SWG-Source/qa-testing/issues/13 --- .../compiled/game/script/player/player_beastmaster.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java b/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java index aa3bcaf64..e4a960835 100755 --- a/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java +++ b/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java @@ -669,7 +669,13 @@ public class player_beastmaster extends script.base_script } float revivePercent = 10; float maxHealthFloat = getMaxAttrib(beast, HEALTH); - revivePercent += getEnhancedSkillStatisticModifierUncapped(self, "expertise_bm_pet_recovery"); + if (hasSkill(self, "expertise_bm_pet_recovery_3")) { + revivePercent = 50; + } else if (hasSkill(self, "expertise_bm_pet_recovery_2")) { + revivePercent = 30; + } else if (hasSkill(self, "expertise_bm_pet_recovery_1")) { + revivePercent = 15; + } maxHealthFloat = maxHealthFloat * (revivePercent / 100); int maxHealth = (int)maxHealthFloat; beast_lib.checkForFavoriteLocation(bcd); From bcc92d6ce0286071026a8a88ba3c07514a128b44 Mon Sep 17 00:00:00 2001 From: Reedux Date: Tue, 12 Jan 2021 17:09:10 +0000 Subject: [PATCH 03/10] Pets can now be renamed multiple times https://github.com/SWG-Source/qa-testing/issues/26 --- .../compiled/game/script/ai/beast.java | 4 --- .../game/script/library/beast_lib.java | 1 - .../script/systems/beast/beast_display.java | 5 ++-- .../script/systems/beast/decoration_item.java | 27 ++++++++----------- 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/sku.0/sys.server/compiled/game/script/ai/beast.java b/sku.0/sys.server/compiled/game/script/ai/beast.java index 2da012809..2a9301ba6 100755 --- a/sku.0/sys.server/compiled/game/script/ai/beast.java +++ b/sku.0/sys.server/compiled/game/script/ai/beast.java @@ -749,10 +749,6 @@ public class beast extends script.base_script sendDirtyObjectMenuNotification(self); beast_lib.setBCDBeastName(beast_lib.getBeastBCD(self), beastName); beast_lib.setBeastName(self, beastName); - if (hasObjVar(beast_lib.getBeastBCD(self), beast_lib.OBJVAR_OLD_PET_IDENTIFIER)) - { - setObjVar(beast_lib.getBeastBCD(self), beast_lib.OBJVAR_OLD_PET_RENAMED, 1); - } return SCRIPT_CONTINUE; } public int handleGroupInvite(obj_id self, dictionary params) throws InterruptedException diff --git a/sku.0/sys.server/compiled/game/script/library/beast_lib.java b/sku.0/sys.server/compiled/game/script/library/beast_lib.java index f48c1071a..fba5eb54b 100755 --- a/sku.0/sys.server/compiled/game/script/library/beast_lib.java +++ b/sku.0/sys.server/compiled/game/script/library/beast_lib.java @@ -46,7 +46,6 @@ public class beast_lib extends script.base_script public static final String OBJVAR_BEAST_PARENT = "beast.parent_creature_template"; public static final String OBJVAR_BEAST_INCUBATION_BONUSES = "beast.incubation_bonuses"; public static final String OBJVAR_OLD_PET_IDENTIFIER = "beast.converted_pet"; - public static final String OBJVAR_OLD_PET_RENAMED = "beast.old_pet_renamed"; public static final String OBJVAR_OLD_PET_REHUED = "beast.old_pet_rehued"; public static final String OBJVAR_BEAST_HUE = "beast.hue"; public static final String OBJVAR_BEAST_HUE2 = "beast.hue2"; diff --git a/sku.0/sys.server/compiled/game/script/systems/beast/beast_display.java b/sku.0/sys.server/compiled/game/script/systems/beast/beast_display.java index ac92772c4..ea3f29d08 100755 --- a/sku.0/sys.server/compiled/game/script/systems/beast/beast_display.java +++ b/sku.0/sys.server/compiled/game/script/systems/beast/beast_display.java @@ -13,7 +13,7 @@ public class beast_display extends script.base_script } public int OnObjectMenuRequest(obj_id self, obj_id player, menu_info mi) throws InterruptedException { - if (!hasObjVar(self, beast_lib.OBJVAR_OLD_PET_RENAMED) && getOwner(self) == player) + if (getOwner(self) == player) { mi.addRootMenu(menu_info_types.SERVER_MENU3, new string_id("beast", "name_beast")); } @@ -22,7 +22,7 @@ public class beast_display extends script.base_script public int OnObjectMenuSelect(obj_id self, obj_id player, int item) throws InterruptedException { sendDirtyObjectMenuNotification(self); - if (item == menu_info_types.SERVER_MENU3 && !hasObjVar(self, beast_lib.OBJVAR_OLD_PET_RENAMED) && getOwner(self) == player) + if (item == menu_info_types.SERVER_MENU3 && getOwner(self) == player) { sui.inputbox(self, player, "@beast:name_d", sui.OK_CANCEL, "@beast:name_t", sui.INPUT_NORMAL, null, "handleSetBeastName", null); } @@ -152,7 +152,6 @@ public class beast_display extends script.base_script } sendDirtyObjectMenuNotification(self); setObjVar(self, "beast.beastName", beastName); - setObjVar(self, beast_lib.OBJVAR_OLD_PET_RENAMED, 1); setObjVar(self, incubator.DNA_PARENT_NAME, beastName); return SCRIPT_CONTINUE; } diff --git a/sku.0/sys.server/compiled/game/script/systems/beast/decoration_item.java b/sku.0/sys.server/compiled/game/script/systems/beast/decoration_item.java index 8ffccb926..65ca2d66e 100755 --- a/sku.0/sys.server/compiled/game/script/systems/beast/decoration_item.java +++ b/sku.0/sys.server/compiled/game/script/systems/beast/decoration_item.java @@ -22,12 +22,10 @@ public class decoration_item extends script.base_script int management_root = mi.addRootMenu(menu_info_types.SERVER_MENU1, SID_CONVERT_PET_ITEM_TO_DNA); } } - if (!hasObjVar(self, beast_lib.OBJVAR_OLD_PET_REHUED) && getOwner(self) == player) - { - mi.addRootMenu(menu_info_types.SERVER_MENU2, PCOLOR); - } - if (!hasObjVar(self, beast_lib.OBJVAR_OLD_PET_RENAMED) && getOwner(self) == player) - { + if (getOwner(self) == player){ + if (!hasObjVar(self, beast_lib.OBJVAR_OLD_PET_REHUED)){ + mi.addRootMenu(menu_info_types.SERVER_MENU2, PCOLOR); + } mi.addRootMenu(menu_info_types.SERVER_MENU3, new string_id("beast", "name_beast")); } return SCRIPT_CONTINUE; @@ -43,17 +41,15 @@ public class decoration_item extends script.base_script return SCRIPT_CONTINUE; } } - if (item == menu_info_types.SERVER_MENU2 && getOwner(self) == player) - { - if (!hasObjVar(self, beast_lib.OBJVAR_OLD_PET_REHUED)) - { - sui.colorize(self, player, self, hue.INDEX_1, "handlePrimaryColorize"); + if (getOwner(self) == player) { + if (item == menu_info_types.SERVER_MENU2) { + if (!hasObjVar(self, beast_lib.OBJVAR_OLD_PET_REHUED)){ + sui.colorize(self, player, self, hue.INDEX_1, "handlePrimaryColorize"); + } + } else if (item == menu_info_types.SERVER_MENU3) { + sui.inputbox(self, player, "@beast:name_d", sui.OK_CANCEL, "@beast:name_t", sui.INPUT_NORMAL, null, "handleSetBeastName", null); } } - if (item == menu_info_types.SERVER_MENU3 && !hasObjVar(self, beast_lib.OBJVAR_OLD_PET_RENAMED) && getOwner(self) == player) - { - sui.inputbox(self, player, "@beast:name_d", sui.OK_CANCEL, "@beast:name_t", sui.INPUT_NORMAL, null, "handleSetBeastName", null); - } return SCRIPT_CONTINUE; } public int OnInitialize(obj_id self) throws InterruptedException @@ -146,7 +142,6 @@ public class decoration_item extends script.base_script } sendDirtyObjectMenuNotification(self); setName(self, beastName); - setObjVar(self, beast_lib.OBJVAR_OLD_PET_RENAMED, 1); setObjVar(self, incubator.DNA_PARENT_NAME, beastName); return SCRIPT_CONTINUE; } From ddb9fad13043937a008bc21ae206de3941e70c82 Mon Sep 17 00:00:00 2001 From: Reedux Date: Tue, 12 Jan 2021 17:27:03 +0000 Subject: [PATCH 04/10] Beast Dietary Supplements now also affect the pet's loyalty gain by the same amount as the supplements effect on experience gain. https://github.com/SWG-Source/qa-testing/issues/287 --- sku.0/sys.server/compiled/game/script/library/beast_lib.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sku.0/sys.server/compiled/game/script/library/beast_lib.java b/sku.0/sys.server/compiled/game/script/library/beast_lib.java index fba5eb54b..03925913d 100755 --- a/sku.0/sys.server/compiled/game/script/library/beast_lib.java +++ b/sku.0/sys.server/compiled/game/script/library/beast_lib.java @@ -1097,6 +1097,9 @@ public class beast_lib extends script.base_script modifiedHappiness *= multiplier; } float newLoyalty = loyalty + modifiedHappiness; + if (buff.hasBuff(getBCDBeastCalled(bcd), "bm_beast_steroid")) { + newLoyalty *= utils.getIntScriptVar(getBCDBeastCalled(bcd), "beastBuff.beastXpBonusPercent"); + } if (loyalty < LOYALTY_LVL_TWO && newLoyalty >= LOYALTY_LVL_TWO) { incrementBeastLoyaltyLevel(bcd); From 8f34a1c3e09816c1d0078c79db9d290be9666eea Mon Sep 17 00:00:00 2001 From: Reedux Date: Tue, 12 Jan 2021 17:29:20 +0000 Subject: [PATCH 05/10] The amount of loyalty needed to reach BFF has been reduced by 50%. https://github.com/SWG-Source/qa-testing/issues/288 --- .../compiled/game/script/library/beast_lib.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sku.0/sys.server/compiled/game/script/library/beast_lib.java b/sku.0/sys.server/compiled/game/script/library/beast_lib.java index 03925913d..e32755a5e 100755 --- a/sku.0/sys.server/compiled/game/script/library/beast_lib.java +++ b/sku.0/sys.server/compiled/game/script/library/beast_lib.java @@ -174,15 +174,15 @@ public class beast_lib extends script.base_script public static final String PLAYER_KNOWN_SKILLS_LIST = "beast_master.known_skills"; public static final String ATTENTION_PENALTY_DEBUFF = "bm_attention_penalty_"; public static final string_id SID_BEAST_WILD = new string_id("beast", "beast_wild"); - public static final int LOYALTY_LVL_TWO = 2001; + public static final int LOYALTY_LVL_TWO = 1001; public static final string_id SID_BEAST_DISOBEDIENT = new string_id("beast", "beast_disobedient"); - public static final int LOYALTY_LVL_THREE = 10001; + public static final int LOYALTY_LVL_THREE = 5001; public static final string_id SID_BEAST_TRAINED = new string_id("beast", "beast_trained"); - public static final int LOYALTY_LVL_FOUR = 50001; + public static final int LOYALTY_LVL_FOUR = 25001; public static final string_id SID_BEAST_LOYAL = new string_id("beast", "beast_loyal"); - public static final int LOYALTY_LVL_FIVE = 250001; + public static final int LOYALTY_LVL_FIVE = 125001; public static final string_id SID_BEAST_BFF = new string_id("beast", "beast_bff"); - public static final int LOYALTY_MAX = 500000; + public static final int LOYALTY_MAX = 250000; public static final String BEAST_LOYALTY_TITLE = "beast_loyalty_title"; public static final String BEAST_LOYALTY_PERCENTAGE_TITLE = "beast_loyalty_percentage_title"; public static final String PET_LOYALTY_OBJVAR = "beastmood.beastLoyalty"; From 2bfd64f491fddfe6034f13679177fa2ff1427ce0 Mon Sep 17 00:00:00 2001 From: Reedux Date: Tue, 12 Jan 2021 17:44:05 +0000 Subject: [PATCH 06/10] When receiving a COMPNOR experience bonus from a destroy mission, your pet will now also receive 50% of the experience needed for the pets current level. https://github.com/SWG-Source/qa-testing/issues/286 --- .../game/script/library/beast_lib.java | 35 +++++++++++++++++++ .../systems/missions/base/mission_base.java | 6 ++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/sku.0/sys.server/compiled/game/script/library/beast_lib.java b/sku.0/sys.server/compiled/game/script/library/beast_lib.java index e32755a5e..e830305df 100755 --- a/sku.0/sys.server/compiled/game/script/library/beast_lib.java +++ b/sku.0/sys.server/compiled/game/script/library/beast_lib.java @@ -1940,6 +1940,41 @@ public class beast_lib extends script.base_script setBeastExperience(beast, experience); setBCDBeastExperience(bcd, experience); } + public static void incrementBeastExperienceMission(obj_id beast, int xpAmountToGrant) throws InterruptedException { + if (!isValidBeast(beast)) { + return; + } + int experience = getBeastExperience(beast); + int previousExperience = experience; + obj_id bcd = getBeastBCD(beast); + if (!isValidBCD(bcd)) { + return; + } + float happinessAdjustment = (getBCDBeastHappiness(bcd) / 100.0f) + 1.0f; + if (happinessAdjustment > 1.5f) { + happinessAdjustment = 1.5f; + } else if (happinessAdjustment < 0.5f) { + happinessAdjustment = 0.5f; + } + float percentageBonuses = happinessAdjustment; + if (buff.hasBuff(beast, "bm_beast_steroid")) { + percentageBonuses += 0.01f * utils.getIntScriptVar(beast, "beastBuff.beastXpBonusPercent"); + } + obj_id master = getMaster(beast); + if (isValidPlayer(master)) { + int experienceGain = Math.round(xpAmountToGrant * percentageBonuses); + experienceGain += experienceGain * 0.01f * getEnhancedSkillStatisticModifierUncapped(master, "bm_xp_mod_boost"); + int multiplier = utils.stringToInt(getConfigSetting("GameServer", "xpMultiplier")); + if (multiplier > 1) { + experienceGain *= multiplier; + } + experience += experienceGain; + prose_package pp = prose.getPackage(xp.SID_FLYTEXT_XP, experience - previousExperience); + showFlyTextPrivate(beast, master, pp, 2.5f, new color(180, 60, 240, 255)); + } + setBeastExperience(beast, experience); + setBCDBeastExperience(bcd, experience); + } public static void incrementBeastLevel(obj_id beast) throws InterruptedException { if (!isValidBeast(beast)) diff --git a/sku.0/sys.server/compiled/game/script/systems/missions/base/mission_base.java b/sku.0/sys.server/compiled/game/script/systems/missions/base/mission_base.java index 89c6e1999..e4464f73d 100755 --- a/sku.0/sys.server/compiled/game/script/systems/missions/base/mission_base.java +++ b/sku.0/sys.server/compiled/game/script/systems/missions/base/mission_base.java @@ -158,8 +158,10 @@ public class mission_base extends script.base_script } float divisor = missions.alterMissionPayoutDivisorDaily(objPlayer); intReward = intReward / (int)divisor; - if (missions.canEarnDailyMissionXp(objPlayer) && missions.isDestroyMission(objMissionData)) - { + if (missions.canEarnDailyMissionXp(objPlayer) && missions.isDestroyMission(objMissionData)){ + if (beast_lib.isBeastMaster(objPlayer) && beast_lib.hasActiveBeast(objPlayer)) { + beast_lib.incrementBeastExperienceMission(beast_lib.getBeastOnPlayer(objPlayer), xp.getMissionXpAmount(objPlayer, intPlayerDifficulty)); + } xp.grantMissionXp(objPlayer, intPlayerDifficulty); } transferBankCreditsFromNamedAccount(money.ACCT_MISSION_DYNAMIC, objPlayer, intReward, "testSuccess", "testFail", dctParams); From 10ba06a4e001cfe25534a6c27804e1da58b68135 Mon Sep 17 00:00:00 2001 From: Reedux Date: Tue, 12 Jan 2021 17:50:40 +0000 Subject: [PATCH 07/10] Correct Values for the pet revive --- .../compiled/game/script/player/player_beastmaster.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java b/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java index e4a960835..1b241df42 100755 --- a/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java +++ b/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java @@ -670,11 +670,11 @@ public class player_beastmaster extends script.base_script float revivePercent = 10; float maxHealthFloat = getMaxAttrib(beast, HEALTH); if (hasSkill(self, "expertise_bm_pet_recovery_3")) { - revivePercent = 50; + revivePercent = 75; } else if (hasSkill(self, "expertise_bm_pet_recovery_2")) { - revivePercent = 30; + revivePercent = 50; } else if (hasSkill(self, "expertise_bm_pet_recovery_1")) { - revivePercent = 15; + revivePercent = 25; } maxHealthFloat = maxHealthFloat * (revivePercent / 100); int maxHealth = (int)maxHealthFloat; From 4e31f6023261987d170ace87bbdaa656fc3cf34f Mon Sep 17 00:00:00 2001 From: Reedux Date: Tue, 12 Jan 2021 17:55:54 +0000 Subject: [PATCH 08/10] Fix beast mission xp granted to 50% instead of 100% --- .../game/script/systems/missions/base/mission_base.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sku.0/sys.server/compiled/game/script/systems/missions/base/mission_base.java b/sku.0/sys.server/compiled/game/script/systems/missions/base/mission_base.java index e4464f73d..9132df350 100755 --- a/sku.0/sys.server/compiled/game/script/systems/missions/base/mission_base.java +++ b/sku.0/sys.server/compiled/game/script/systems/missions/base/mission_base.java @@ -160,7 +160,7 @@ public class mission_base extends script.base_script intReward = intReward / (int)divisor; if (missions.canEarnDailyMissionXp(objPlayer) && missions.isDestroyMission(objMissionData)){ if (beast_lib.isBeastMaster(objPlayer) && beast_lib.hasActiveBeast(objPlayer)) { - beast_lib.incrementBeastExperienceMission(beast_lib.getBeastOnPlayer(objPlayer), xp.getMissionXpAmount(objPlayer, intPlayerDifficulty)); + beast_lib.incrementBeastExperienceMission(beast_lib.getBeastOnPlayer(objPlayer), xp.getMissionXpAmount(objPlayer, intPlayerDifficulty) / 2); } xp.grantMissionXp(objPlayer, intPlayerDifficulty); } From 8025be77599cf2384b4fac08591db3446e3a91a3 Mon Sep 17 00:00:00 2001 From: Reedux Date: Sat, 6 Mar 2021 13:56:49 +0000 Subject: [PATCH 09/10] Fix and change the beast xp modifier --- .../game/script/library/beast_lib.java | 42 +++---------------- .../script/player/player_beastmaster.java | 2 +- .../systems/missions/base/mission_base.java | 4 +- 3 files changed, 9 insertions(+), 39 deletions(-) diff --git a/sku.0/sys.server/compiled/game/script/library/beast_lib.java b/sku.0/sys.server/compiled/game/script/library/beast_lib.java index e830305df..3317d339d 100755 --- a/sku.0/sys.server/compiled/game/script/library/beast_lib.java +++ b/sku.0/sys.server/compiled/game/script/library/beast_lib.java @@ -1896,7 +1896,7 @@ public class beast_lib extends script.base_script stop(currentBeast); storeBeast(bcd); } - public static void incrementBeastExperience(obj_id beast) throws InterruptedException + public static void incrementBeastExperience(obj_id beast, dictionary params) throws InterruptedException { if (!isValidBeast(beast)) { @@ -1927,6 +1927,9 @@ public class beast_lib extends script.base_script if (isValidPlayer(master)) { int experienceGain = Math.round(100 * percentageBonuses); + if (params.containsKey("xpAmount")) { + experienceGain = Math.round(params.getInt("xpAmount") * percentageBonuses); + } experienceGain += experienceGain * 0.01f * getEnhancedSkillStatisticModifierUncapped(master, "bm_xp_mod_boost"); int multiplier = utils.stringToInt(getConfigSetting("GameServer", "xpMultiplier")); if (multiplier > 1) @@ -1940,41 +1943,6 @@ public class beast_lib extends script.base_script setBeastExperience(beast, experience); setBCDBeastExperience(bcd, experience); } - public static void incrementBeastExperienceMission(obj_id beast, int xpAmountToGrant) throws InterruptedException { - if (!isValidBeast(beast)) { - return; - } - int experience = getBeastExperience(beast); - int previousExperience = experience; - obj_id bcd = getBeastBCD(beast); - if (!isValidBCD(bcd)) { - return; - } - float happinessAdjustment = (getBCDBeastHappiness(bcd) / 100.0f) + 1.0f; - if (happinessAdjustment > 1.5f) { - happinessAdjustment = 1.5f; - } else if (happinessAdjustment < 0.5f) { - happinessAdjustment = 0.5f; - } - float percentageBonuses = happinessAdjustment; - if (buff.hasBuff(beast, "bm_beast_steroid")) { - percentageBonuses += 0.01f * utils.getIntScriptVar(beast, "beastBuff.beastXpBonusPercent"); - } - obj_id master = getMaster(beast); - if (isValidPlayer(master)) { - int experienceGain = Math.round(xpAmountToGrant * percentageBonuses); - experienceGain += experienceGain * 0.01f * getEnhancedSkillStatisticModifierUncapped(master, "bm_xp_mod_boost"); - int multiplier = utils.stringToInt(getConfigSetting("GameServer", "xpMultiplier")); - if (multiplier > 1) { - experienceGain *= multiplier; - } - experience += experienceGain; - prose_package pp = prose.getPackage(xp.SID_FLYTEXT_XP, experience - previousExperience); - showFlyTextPrivate(beast, master, pp, 2.5f, new color(180, 60, 240, 255)); - } - setBeastExperience(beast, experience); - setBCDBeastExperience(bcd, experience); - } public static void incrementBeastLevel(obj_id beast) throws InterruptedException { if (!isValidBeast(beast)) @@ -2038,7 +2006,7 @@ public class beast_lib extends script.base_script int level = getBeastLevel(beast); if (level < 90) { - incrementBeastExperience(beast); + incrementBeastExperience(beast, new dictionary()); } if (canBeastLevelUp(beast)) { diff --git a/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java b/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java index 1b241df42..a8e17ddeb 100755 --- a/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java +++ b/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java @@ -321,7 +321,7 @@ public class player_beastmaster extends script.base_script return; } debugSpeakMsg(beast, "Current experience: " + beast_lib.getBeastExperience(beast)); - beast_lib.incrementBeastExperience(beast); + beast_lib.incrementBeastExperience(beast, new dictionary()); debugSpeakMsg(beast, "Incremented experience: " + beast_lib.getBeastExperience(beast)); } public void showHappiness(obj_id self) throws InterruptedException diff --git a/sku.0/sys.server/compiled/game/script/systems/missions/base/mission_base.java b/sku.0/sys.server/compiled/game/script/systems/missions/base/mission_base.java index 9132df350..2d477ebd6 100755 --- a/sku.0/sys.server/compiled/game/script/systems/missions/base/mission_base.java +++ b/sku.0/sys.server/compiled/game/script/systems/missions/base/mission_base.java @@ -160,7 +160,9 @@ public class mission_base extends script.base_script intReward = intReward / (int)divisor; if (missions.canEarnDailyMissionXp(objPlayer) && missions.isDestroyMission(objMissionData)){ if (beast_lib.isBeastMaster(objPlayer) && beast_lib.hasActiveBeast(objPlayer)) { - beast_lib.incrementBeastExperienceMission(beast_lib.getBeastOnPlayer(objPlayer), xp.getMissionXpAmount(objPlayer, intPlayerDifficulty) / 2); + dictionary returnDict = new dictionary(); + returnDict.addInt("xpAmount", xp.getMissionXpAmount(objPlayer, intPlayerDifficulty) / 2); + beast_lib.incrementBeastExperience(beast_lib.getBeastOnPlayer(objPlayer), returnDict); } xp.grantMissionXp(objPlayer, intPlayerDifficulty); } From 9875530638d2009bfa90f4de7cddbb5418d3123a Mon Sep 17 00:00:00 2001 From: Reedux Date: Sat, 6 Mar 2021 13:58:53 +0000 Subject: [PATCH 10/10] Revert "Pet revive health will now increase with expertise options" This reverts commit 6a5b63927c80ea353d4442d50092a02f8a2a058b. --- .../compiled/game/script/player/player_beastmaster.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java b/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java index a8e17ddeb..149f08311 100755 --- a/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java +++ b/sku.0/sys.server/compiled/game/script/player/player_beastmaster.java @@ -669,13 +669,7 @@ public class player_beastmaster extends script.base_script } float revivePercent = 10; float maxHealthFloat = getMaxAttrib(beast, HEALTH); - if (hasSkill(self, "expertise_bm_pet_recovery_3")) { - revivePercent = 75; - } else if (hasSkill(self, "expertise_bm_pet_recovery_2")) { - revivePercent = 50; - } else if (hasSkill(self, "expertise_bm_pet_recovery_1")) { - revivePercent = 25; - } + revivePercent += getEnhancedSkillStatisticModifierUncapped(self, "expertise_bm_pet_recovery"); maxHealthFloat = maxHealthFloat * (revivePercent / 100); int maxHealth = (int)maxHealthFloat; beast_lib.checkForFavoriteLocation(bcd);