forked from OpenWF/SpaceNinjaServer
		
	fix: refund personal decos when destroying dojo room (#2522)
Closes #2521 Reviewed-on: OpenWF/SpaceNinjaServer#2522 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									56aa3e3331
								
							
						
					
					
						commit
						62314e89c7
					
				@ -13,6 +13,7 @@ import {
 | 
				
			|||||||
    IDojoComponentDatabase,
 | 
					    IDojoComponentDatabase,
 | 
				
			||||||
    IDojoContributable,
 | 
					    IDojoContributable,
 | 
				
			||||||
    IDojoDecoClient,
 | 
					    IDojoDecoClient,
 | 
				
			||||||
 | 
					    IDojoDecoDatabase,
 | 
				
			||||||
    IGuildClient,
 | 
					    IGuildClient,
 | 
				
			||||||
    IGuildMemberClient,
 | 
					    IGuildMemberClient,
 | 
				
			||||||
    IGuildMemberDatabase,
 | 
					    IGuildMemberDatabase,
 | 
				
			||||||
@ -309,7 +310,7 @@ export const removeDojoRoom = async (
 | 
				
			|||||||
        guild.DojoEnergy -= meta.energy;
 | 
					        guild.DojoEnergy -= meta.energy;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    moveResourcesToVault(guild, component);
 | 
					    moveResourcesToVault(guild, component);
 | 
				
			||||||
    component.Decos?.forEach(deco => moveResourcesToVault(guild, deco));
 | 
					    component.Decos?.forEach(deco => refundDojoDeco(guild, component, deco));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (guild.RoomChanges) {
 | 
					    if (guild.RoomChanges) {
 | 
				
			||||||
        const index = guild.RoomChanges.findIndex(x => x.componentId.equals(component._id));
 | 
					        const index = guild.RoomChanges.findIndex(x => x.componentId.equals(component._id));
 | 
				
			||||||
@ -344,6 +345,14 @@ export const removeDojoDeco = (
 | 
				
			|||||||
        component.Decos!.findIndex(x => x._id.equals(decoId)),
 | 
					        component.Decos!.findIndex(x => x._id.equals(decoId)),
 | 
				
			||||||
        1
 | 
					        1
 | 
				
			||||||
    )[0];
 | 
					    )[0];
 | 
				
			||||||
 | 
					    refundDojoDeco(guild, component, deco);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const refundDojoDeco = (
 | 
				
			||||||
 | 
					    guild: TGuildDatabaseDocument,
 | 
				
			||||||
 | 
					    component: IDojoComponentDatabase,
 | 
				
			||||||
 | 
					    deco: IDojoDecoDatabase
 | 
				
			||||||
 | 
					): void => {
 | 
				
			||||||
    const meta = Object.values(ExportDojoRecipes.decos).find(x => x.resultType == deco.Type);
 | 
					    const meta = Object.values(ExportDojoRecipes.decos).find(x => x.resultType == deco.Type);
 | 
				
			||||||
    if (meta) {
 | 
					    if (meta) {
 | 
				
			||||||
        if (meta.capacityCost) {
 | 
					        if (meta.capacityCost) {
 | 
				
			||||||
@ -369,7 +378,7 @@ export const removeDojoDeco = (
 | 
				
			|||||||
            ]);
 | 
					            ]);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    moveResourcesToVault(guild, deco);
 | 
					    moveResourcesToVault(guild, deco); // Refund resources spent on construction
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const moveResourcesToVault = (guild: TGuildDatabaseDocument, component: IDojoContributable): void => {
 | 
					const moveResourcesToVault = (guild: TGuildDatabaseDocument, component: IDojoContributable): void => {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user