Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server into 3.8.0
This commit is contained in:
commit
c7dfc5b9cf
@ -46,7 +46,7 @@
|
|||||||
"bot-weapon_missing_mod_slot": "Slot: {{modSlot}}' does not exist for weapon: {{weaponId}} {{weaponName}} on {{botRole}}",
|
"bot-weapon_missing_mod_slot": "Slot: {{modSlot}}' does not exist for weapon: {{weaponId}} {{weaponName}} on {{botRole}}",
|
||||||
"bot-weapons_required_slot_missing_item": "Required slot '{{modSlot}}' on {{modName}} {{slotId}} was empty on {{botRole}}",
|
"bot-weapons_required_slot_missing_item": "Required slot '{{modSlot}}' on {{modName}} {{slotId}} was empty on {{botRole}}",
|
||||||
"bot-item_missing_props_property": "Item {{itemTpl}} {{name}} is missing a _props property",
|
"bot-item_missing_props_property": "Item {{itemTpl}} {{name}} is missing a _props property",
|
||||||
"bot-unable_to_fill_camora_slot_mod_pool_empty": "Unable to fill weapon camora slot for {{weaponId}} {{weaponName}} mod pool for item was empty",
|
"bot-unable_to_fill_camora_slot_mod_pool_empty": "Unable to fill weapon camora slots for {{weaponId}} - {{weaponName}}. Mod pool for was empty, attempting to generate dynamically",
|
||||||
"bot-unable_to_edit_limits_of_unknown_map": "Unable to edit bot limits of map: %s as it cannot be found",
|
"bot-unable_to_edit_limits_of_unknown_map": "Unable to edit bot limits of map: %s as it cannot be found",
|
||||||
"bot-unable_to_find_loot_n_value_for_bot": "Unable to find loot N value for bot: %s, using scav n value instead",
|
"bot-unable_to_find_loot_n_value_for_bot": "Unable to find loot N value for bot: %s, using scav n value instead",
|
||||||
"bot-unable_to_find_bot_in_cache": "Unable to find bot in cache with name: %s",
|
"bot-unable_to_find_bot_in_cache": "Unable to find bot in cache with name: %s",
|
||||||
@ -428,6 +428,7 @@
|
|||||||
"pmcresponse-victim_negative_98": "I bet you installed out of date mods and got loads of errors and wrote a huge hub post about it",
|
"pmcresponse-victim_negative_98": "I bet you installed out of date mods and got loads of errors and wrote a huge hub post about it",
|
||||||
"pmcresponse-victim_negative_99": "Your computer so bad you get 20fps on streets",
|
"pmcresponse-victim_negative_99": "Your computer so bad you get 20fps on streets",
|
||||||
"pmcresponse-victim_negative_100": "I bet you installed SAIN and had to remove it cuz you kept getting killed too much",
|
"pmcresponse-victim_negative_100": "I bet you installed SAIN and had to remove it cuz you kept getting killed too much",
|
||||||
|
"pmcresponse-victim_negative_101": "What the HECK did you just HECKING say about me, you little Scav? I’ll have you know I graduated top of my class in the USEC corps, and I’ve been involved in numerous secret raids on the {{playerSide}}s, and I have over 300 confirmed kills. I am trained in gorilla warfare and I’m the top sniper in the entire USEC armed forces. You are nothing to me but just another target. I will wipe you the HECK out with precision the likes of which has never been seen before in this raid, mark my HECKING words. You think you can get away with saying that shit to me over the messaging window? Think again, HECKER. As we speak I am contacting my secret network of spies across the Customs location and your stash is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You’re HECKING dead, Scav. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that’s just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the USEC Corps and I will use it to its full extent to wipe your miserable butt off the face of the map, you little poop. If only you could have known what unholy retribution your little “clever” kill was about to bring down upon you, maybe you would have held your HECKING tongue. But you couldn’t, you didn’t, and now you’re paying the price, you HECKING idiot. I will POOP fury all over you and you will drown in it. You’re HECKING dead, Scav.",
|
||||||
"pmcresponse-victim_plead_1": "I was questing",
|
"pmcresponse-victim_plead_1": "I was questing",
|
||||||
"pmcresponse-victim_plead_2": "I just wanted to finish a quest, whyd you kill me",
|
"pmcresponse-victim_plead_2": "I just wanted to finish a quest, whyd you kill me",
|
||||||
"pmcresponse-victim_plead_3": "Hope ur happy i can't even afford a new kit",
|
"pmcresponse-victim_plead_3": "Hope ur happy i can't even afford a new kit",
|
||||||
|
@ -787,17 +787,25 @@ export class BotEquipmentModGenerator
|
|||||||
* Ammo is not put into the magazine directly but assigned to the magazine's slots: The "camora_xxx" slots.
|
* Ammo is not put into the magazine directly but assigned to the magazine's slots: The "camora_xxx" slots.
|
||||||
* This function is a helper called by generateModsForItem for mods with parent type "CylinderMagazine"
|
* This function is a helper called by generateModsForItem for mods with parent type "CylinderMagazine"
|
||||||
* @param items The items where the CylinderMagazine's camora are appended to
|
* @param items The items where the CylinderMagazine's camora are appended to
|
||||||
* @param modPool modPool which should include available cartrigdes
|
* @param modPool modPool which should include available cartridges
|
||||||
* @param parentId The CylinderMagazine's UID
|
* @param parentId The CylinderMagazine's UID
|
||||||
* @param parentTemplate The CylinderMagazine's template
|
* @param parentTemplate The CylinderMagazine's template
|
||||||
*/
|
*/
|
||||||
protected fillCamora(items: Item[], modPool: Mods, parentId: string, parentTemplate: ITemplateItem): void
|
protected fillCamora(items: Item[], modPool: Mods, parentId: string, parentTemplate: ITemplateItem): void
|
||||||
{
|
{
|
||||||
const itemModPool = modPool[parentTemplate._id];
|
let itemModPool = modPool[parentTemplate._id];
|
||||||
|
|
||||||
if (!itemModPool)
|
if (!itemModPool)
|
||||||
{
|
{
|
||||||
this.logger.error(this.localisationService.getText("bot-unable_to_fill_camora_slot_mod_pool_empty", {weaponId: parentTemplate._id, weaponName: parentTemplate._name}));
|
this.logger.warning(this.localisationService.getText("bot-unable_to_fill_camora_slot_mod_pool_empty", {weaponId: parentTemplate._id, weaponName: parentTemplate._name}));
|
||||||
|
const camoraSlots = parentTemplate._props.Slots.filter(x => x._name.startsWith("camora"));
|
||||||
|
|
||||||
|
// Attempt to generate camora slots for item
|
||||||
|
modPool[parentTemplate._id] = {};
|
||||||
|
for (const camora of camoraSlots)
|
||||||
|
{
|
||||||
|
modPool[parentTemplate._id][camora._name] = camora._props.filters[0].Filter;
|
||||||
|
}
|
||||||
|
itemModPool = modPool[parentTemplate._id];
|
||||||
}
|
}
|
||||||
|
|
||||||
let exhaustableModPool = null;
|
let exhaustableModPool = null;
|
||||||
@ -843,10 +851,10 @@ export class BotEquipmentModGenerator
|
|||||||
const modSlotId = slot._name;
|
const modSlotId = slot._name;
|
||||||
const modId = this.hashUtil.generate();
|
const modId = this.hashUtil.generate();
|
||||||
items.push({
|
items.push({
|
||||||
"_id": modId,
|
_id: modId,
|
||||||
"_tpl": modTpl,
|
_tpl: modTpl,
|
||||||
"parentId": parentId,
|
parentId: parentId,
|
||||||
"slotId": modSlotId
|
slotId: modSlotId
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -465,7 +465,8 @@ class ItemHelper
|
|||||||
*/
|
*/
|
||||||
public hasBuyRestrictions(itemToCheck: Item): boolean
|
public hasBuyRestrictions(itemToCheck: Item): boolean
|
||||||
{
|
{
|
||||||
if (itemToCheck.upd.BuyRestrictionCurrent !== undefined && itemToCheck.upd.BuyRestrictionMax !== undefined)
|
if (itemToCheck.upd?.BuyRestrictionCurrent !== undefined
|
||||||
|
&& itemToCheck.upd?.BuyRestrictionMax !== undefined)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -505,7 +506,13 @@ class ItemHelper
|
|||||||
*/
|
*/
|
||||||
public isItemTplStackable(tpl: string): boolean
|
public isItemTplStackable(tpl: string): boolean
|
||||||
{
|
{
|
||||||
return this.databaseServer.getTables().templates.items[tpl]._props.StackMaxSize > 1;
|
const item = this.databaseServer.getTables().templates.items[tpl];
|
||||||
|
if (!item)
|
||||||
|
{
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
return item._props.StackMaxSize > 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -60,19 +60,20 @@ export class PlayerService
|
|||||||
*/
|
*/
|
||||||
public calculateLevel(pmcData: IPmcData): number
|
public calculateLevel(pmcData: IPmcData): number
|
||||||
{
|
{
|
||||||
let exp = 0;
|
let accExp = 0;
|
||||||
|
|
||||||
for (const level in this.databaseServer.getTables().globals.config.exp.level.exp_table)
|
for (const [level, { exp }] of this.databaseServer.getTables().globals.config.exp.level.exp_table.entries())
|
||||||
{
|
{
|
||||||
if (pmcData.Info.Experience < exp)
|
accExp += exp;
|
||||||
|
|
||||||
|
if (pmcData.Info.Experience < accExp)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
pmcData.Info.Level = parseInt(level);
|
pmcData.Info.Level = level + 1;
|
||||||
exp += this.databaseServer.getTables().globals.config.exp.level.exp_table[level].exp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return pmcData.Info.Level;
|
return pmcData.Info.Level;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user