Drop weapons, bows, and shields instead of reducing durability (#11)
* fix: drop weapons, bows, and shields instead of reducing durability * test: test dropping multiple equipment with extra life * test: unit test Slots.remove with extra life equipment
This commit is contained in:
parent
98782ac94c
commit
1f2985467f
5 changed files with 52 additions and 2 deletions
6
src/__tests__/dropWithExtraLife.e2e.ts
Normal file
6
src/__tests__/dropWithExtraLife.e2e.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
// Author: jordanbtucker
|
||||
const TEST = "dropWithExtraLife";
|
||||
it(TEST, () => {
|
||||
expect(TEST).toPassE2ESimulation();
|
||||
});
|
||||
export { };
|
2
src/__tests__/dropWithExtraLife.in.txt
Normal file
2
src/__tests__/dropWithExtraLife.in.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Get 1 Weapon[life=80000] 2 Bow[life=80000] 1 Shield 1 Shield[life=80000]
|
||||
Drop 1 Weapon 2 Bow 2 Shield
|
0
src/__tests__/dropWithExtraLife.out.txt
Normal file
0
src/__tests__/dropWithExtraLife.out.txt
Normal file
|
@ -1,6 +1,6 @@
|
|||
import { createMaterialStack, ItemStack } from "data/item";
|
||||
import { createEquipmentStack, createMaterialStack, ItemStack, ItemType } from "data/item";
|
||||
import { Slots } from "./Slots";
|
||||
import { createMaterialMockItem } from "./SlotsTestHelpers";
|
||||
import { createEquipmentMockItem, createMaterialMockItem } from "./SlotsTestHelpers";
|
||||
|
||||
describe("Slots.remove", ()=>{
|
||||
it("Does nothing if item doesn't exist", ()=>{
|
||||
|
@ -87,4 +87,40 @@ describe("Slots.remove", ()=>{
|
|||
expect(removed).toBe(2);
|
||||
expect(slots.getSlotsRef()).toEqualItemStacks(expected);
|
||||
});
|
||||
it("Removes weapons with increased durability", ()=>{
|
||||
const mockItem1 = createEquipmentMockItem("WeaponA", ItemType.Weapon);
|
||||
const stackToRemove = createEquipmentStack(mockItem1, 1000, false);
|
||||
|
||||
const stacks: ItemStack[] = [createEquipmentStack(mockItem1, 80000, false)];
|
||||
const slots = new Slots(stacks);
|
||||
|
||||
const removed = slots.remove(stackToRemove, 0);
|
||||
const expected: ItemStack[] = [];
|
||||
expect(removed).toBe(1);
|
||||
expect(slots.getSlotsRef()).toEqualItemStacks(expected);
|
||||
});
|
||||
it("Removes bows with increased durability", ()=>{
|
||||
const mockItem1 = createEquipmentMockItem("WeaponA", ItemType.Bow);
|
||||
const stackToRemove = createEquipmentStack(mockItem1, 1000, false);
|
||||
|
||||
const stacks: ItemStack[] = [createEquipmentStack(mockItem1, 80000, false)];
|
||||
const slots = new Slots(stacks);
|
||||
|
||||
const removed = slots.remove(stackToRemove, 0);
|
||||
const expected: ItemStack[] = [];
|
||||
expect(removed).toBe(1);
|
||||
expect(slots.getSlotsRef()).toEqualItemStacks(expected);
|
||||
});
|
||||
it("Removes shields with increased durability", ()=>{
|
||||
const mockItem1 = createEquipmentMockItem("WeaponA", ItemType.Shield);
|
||||
const stackToRemove = createEquipmentStack(mockItem1, 1000, false);
|
||||
|
||||
const stacks: ItemStack[] = [createEquipmentStack(mockItem1, 80000, false)];
|
||||
const slots = new Slots(stacks);
|
||||
|
||||
const removed = slots.remove(stackToRemove, 0);
|
||||
const expected: ItemStack[] = [];
|
||||
expect(removed).toBe(1);
|
||||
expect(slots.getSlotsRef()).toEqualItemStacks(expected);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -79,6 +79,12 @@ export class Slots {
|
|||
// find the right slot
|
||||
s++;
|
||||
}else{
|
||||
// fully remove weapons, bows, and shields instead of reducing their life
|
||||
if(stack.item.type === ItemType.Weapon || stack.item.type === ItemType.Bow || stack.item.type === ItemType.Shield){
|
||||
this.internalSlots[i] = stack.modify({count:0});
|
||||
break;
|
||||
}
|
||||
|
||||
if(count<0 || stack.count<count){
|
||||
// this stack not enough to remove all
|
||||
count-=stack.count;
|
||||
|
|
Reference in a new issue