Ammo price overhaul, some price changes
This commit is contained in:
parent
1ba5c61ef8
commit
e80754050b
@ -1,5 +1,7 @@
|
|||||||
{
|
{
|
||||||
"baselineBulletId": "59e68f6f86f7746c9f75e846",
|
"baselineBulletId": "59e6906286f7746c9f75e847",
|
||||||
|
"baselineBulletPrice": 2000,
|
||||||
|
"bulletDamageMultiplierRedutionFactor": 0.7,
|
||||||
"baselineArmourId": "5c0e655586f774045612eeb2",
|
"baselineArmourId": "5c0e655586f774045612eeb2",
|
||||||
"baselineArmourWeight": 10,
|
"baselineArmourWeight": 10,
|
||||||
"percentageOfInitialArmourPriceToAdd": 50
|
"percentageOfInitialArmourPriceToAdd": 50
|
||||||
|
@ -3,23 +3,23 @@
|
|||||||
"disableBsgBlacklist": true,
|
"disableBsgBlacklist": true,
|
||||||
"canSellBlacklistedItemsOnFlea": true,
|
"canSellBlacklistedItemsOnFlea": true,
|
||||||
"blacklistedItemPriceMultiplier": 2,
|
"blacklistedItemPriceMultiplier": 2,
|
||||||
"blacklistedAmmoAdditionalPriceMultiplier": 1.8,
|
"blacklistedAmmoAdditionalPriceMultiplier": 1,
|
||||||
"blacklistedArmourAdditionalPriceMultiplier": 1.8,
|
"blacklistedArmourAdditionalPriceMultiplier": 1.8,
|
||||||
"customItemConfigs": [
|
"customItemConfigs": [
|
||||||
{
|
{
|
||||||
"itemIdHint": "Just a human friendly description that isn't used in code to help you remember. This item is the .338 AP round",
|
"itemIdHint": "Just a human friendly description that isn't used in code to help you remember. This item is the .338 AP round",
|
||||||
"itemId": "5fc382a9d724d907e2077dab",
|
"itemId": "5fc382a9d724d907e2077dab",
|
||||||
"priceMultiplier": 1.5
|
"priceMultiplier": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"itemIdHint": "MK-18 .338 rifle",
|
"itemIdHint": "MK-18 .338 rifle",
|
||||||
"itemId": "5fc22d7c187fea44d52eda44",
|
"itemId": "5fc22d7c187fea44d52eda44",
|
||||||
"priceMultiplier": 3
|
"fleaPriceOverride": 400000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"itemIdHint": "AXMC .338 rifle. This gun has no flea price by default. We can use the price override to avoid any issues",
|
"itemIdHint": "AXMC .338 rifle. This gun has no flea price by default. We can use the price override to avoid any issues",
|
||||||
"itemId": "627e14b21713922ded6f2c15",
|
"itemId": "627e14b21713922ded6f2c15",
|
||||||
"priceOverride": 150000
|
"fleaPriceOverride": 300000
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
17
src/mod.ts
17
src/mod.ts
@ -77,8 +77,8 @@ class TheBlacklistMod implements IPostDBLoadMod {
|
|||||||
const customItemConfig = config.customItemConfigs.find(conf => conf.itemId === item._id);
|
const customItemConfig = config.customItemConfigs.find(conf => conf.itemId === item._id);
|
||||||
|
|
||||||
// We found a custom price override to use. That's all we care about for this item. Move on to the next item.
|
// We found a custom price override to use. That's all we care about for this item. Move on to the next item.
|
||||||
if (customItemConfig?.priceOverride) {
|
if (customItemConfig?.fleaPriceOverride) {
|
||||||
prices[item._id] = customItemConfig.priceOverride;
|
prices[item._id] = customItemConfig.fleaPriceOverride;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ class TheBlacklistMod implements IPostDBLoadMod {
|
|||||||
let newPrice: number;
|
let newPrice: number;
|
||||||
|
|
||||||
if (item._props.ammoType === "bullet") {
|
if (item._props.ammoType === "bullet") {
|
||||||
newPrice = this.getUpdatedAmmoPrice(item, currentFleaPrice);
|
newPrice = this.getUpdatedAmmoPrice(item);
|
||||||
} else if (Number(item._props.armorClass) > 0) {
|
} else if (Number(item._props.armorClass) > 0) {
|
||||||
newPrice = this.getUpdatedArmourPrice(item, prices);
|
newPrice = this.getUpdatedArmourPrice(item, prices);
|
||||||
}
|
}
|
||||||
@ -122,14 +122,19 @@ class TheBlacklistMod implements IPostDBLoadMod {
|
|||||||
return newPrice ? newPrice * config.blacklistedItemPriceMultiplier : currentFleaPrice;
|
return newPrice ? newPrice * config.blacklistedItemPriceMultiplier : currentFleaPrice;
|
||||||
}
|
}
|
||||||
|
|
||||||
private getUpdatedAmmoPrice(item: ITemplateItem, currentFleaPrice: number) {
|
private getUpdatedAmmoPrice(item: ITemplateItem) {
|
||||||
const baselinePen = this.baselineBullet._props.PenetrationPower;
|
const baselinePen = this.baselineBullet._props.PenetrationPower;
|
||||||
const baselineDamage = this.baselineBullet._props.Damage;
|
const baselineDamage = this.baselineBullet._props.Damage;
|
||||||
|
|
||||||
const penetrationMultiplier = item._props.PenetrationPower / baselinePen;
|
const penetrationMultiplier = item._props.PenetrationPower / baselinePen;
|
||||||
const damageMultiplier = item._props.Damage / baselineDamage;
|
const baseDamageMultiplier = item._props.Damage / baselineDamage;
|
||||||
|
|
||||||
return currentFleaPrice * config.blacklistedAmmoAdditionalPriceMultiplier * penetrationMultiplier * damageMultiplier;
|
// Reduces the effect of the damage multiplier so high DMG rounds aren't super expensive.
|
||||||
|
// Eg. let baseDamageMultiplier = 2 & bulletDamageMultiplierRedutionFactor = 0.7. Instead of a 2x price when a bullet is 2x damage, we instead get:
|
||||||
|
// 2 + (1 - 2) * 0.7 = 2 - 0.7 = 1.3x the price.
|
||||||
|
const damageMultiplier = baseDamageMultiplier + (1 - baseDamageMultiplier) * advancedConfig.bulletDamageMultiplierRedutionFactor;
|
||||||
|
|
||||||
|
return advancedConfig.baselineBulletPrice * penetrationMultiplier * damageMultiplier * config.blacklistedAmmoAdditionalPriceMultiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Armour price balancing is tricky. The default prices for some armours like the Zabralo is too high imo.
|
// Armour price balancing is tricky. The default prices for some armours like the Zabralo is too high imo.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user