diff --git a/src/backend/Admin/Admin.ts b/src/backend/Admin/Admin.ts
index be0a143..487db7c 100644
--- a/src/backend/Admin/Admin.ts
+++ b/src/backend/Admin/Admin.ts
@@ -56,7 +56,7 @@ implements TableDefinitionExporter, IAdmin {
connection: {
filename: Path.join(__dirname, "data/frontworkAdmin.sqlite")
},
- useNullAsDefault: true
+ useNullAsDefault: true,
}
}
}
diff --git a/src/backend/Components/Item/Interface.ts b/src/backend/Components/Item/Interface.ts
index 007f7d4..152988b 100644
--- a/src/backend/Components/Item/Interface.ts
+++ b/src/backend/Components/Item/Interface.ts
@@ -7,8 +7,8 @@ export class IItemManager{
setPriority: (itemname:string, priority: any) => Promise
calculatePriorities: (itemname: string, character:Character) => Promise
deletePriority: (priority:SRPriority) => Promise
- getTokens: (character:Character) => Promise
- getToken: (character:Character, item:Item) => Promise<(SRToken & Character & Item) | void>
+ getTokens: (character:Character, valid?:boolean) => Promise
+ getToken: (character:Character, item:Item, valid?:boolean) => Promise<(SRToken & Character & Item) | void>
getAllPriorities: () => Promise<(SRPriority & Spec & Item)[]>
wipeCurrencyAndItems: () => Promise
}
\ No newline at end of file
diff --git a/src/backend/Components/Item/ItemManager.ts b/src/backend/Components/Item/ItemManager.ts
index f24965a..751926a 100644
--- a/src/backend/Components/Item/ItemManager.ts
+++ b/src/backend/Components/Item/ItemManager.ts
@@ -146,18 +146,27 @@ implements FrontworkComponent, TableDefin
if(matchingtoken){
//update signupid and increment level
- console.log("delete shadow tokens");
+
await this.admin
.knex('tokens')
- .update({
- signupid: signup.id,
- level: matchingtoken.level+1
- })
.where({
characterid: character.id,
itemname: item.itemname
})
+ .update({
+ signupid: signup.id,
+ level: matchingtoken.level+1
+ })
+
+ await this.admin
+ .knex('tokens')
+ .where({
+ characterid: character.id,
+ itemname: item.itemname,
+ signupid: null
+ }).del()
+
return await this.getToken(character, item)
}
}
@@ -248,7 +257,7 @@ implements FrontworkComponent, TableDefin
}).reduce((prev, curr) => prev+curr, 0)
}
- getToken = async (character:Character, item:Item): Promise<(SRToken & Character & Item) | void>=> {
+ getToken = async (character:Character, item:Item,valid=true): Promise<(SRToken & Character & Item) | void>=> {
return await this.admin
.knex('tokens as t')
.select('*')
@@ -258,6 +267,13 @@ implements FrontworkComponent, TableDefin
characterid: character.id,
"i.itemname": item.itemname
})
+ .andWhere(function(){
+ if(valid){
+ this.whereNotNull('t.signupid')
+ }else{
+ this.whereNull('t.signupid')
+ }
+ })
.first()
}
diff --git a/src/backend/Components/Raid/Interface.ts b/src/backend/Components/Raid/Interface.ts
index 0b173a8..2dd4ef5 100644
--- a/src/backend/Components/Raid/Interface.ts
+++ b/src/backend/Components/Raid/Interface.ts
@@ -14,4 +14,5 @@ export class IRaidManager{
getPastRaids: (limit: number) => Promise
getArchiveRaid: (id:number) => Promise
startRaid: (raid:Raid) => Promise
+ adminUnsign: (character:Character, raid:Raid) => Promise
}
diff --git a/src/backend/Components/Raid/RPCInterface.ts b/src/backend/Components/Raid/RPCInterface.ts
index 171dcf6..dbf2fa2 100644
--- a/src/backend/Components/Raid/RPCInterface.ts
+++ b/src/backend/Components/Raid/RPCInterface.ts
@@ -17,6 +17,7 @@ export type RaidManagerFeatureIfc = {
archiveRaid: IRaidManager['archiveRaid']
setBenched: IRaidManager['setBenched']
startRaid: IRaidManager['startRaid']
+ adminUnsign: IRaidManager['adminUnsign']
}
signup: {
getSignups: IRaidManager['getSignups']
diff --git a/src/backend/Components/Raid/RaidManager.ts b/src/backend/Components/Raid/RaidManager.ts
index b12b241..4c983da 100644
--- a/src/backend/Components/Raid/RaidManager.ts
+++ b/src/backend/Components/Raid/RaidManager.ts
@@ -7,6 +7,9 @@ import { IRaidManager } from "./Interface";
import { IUserManager } from "../User/Interface";
import { ICharacterManager } from "../Character/Interface";
import { _Tiers } from "../../Types/Items";
+import { IItemManager } from "../Item/Interface";
+import { ItemManager } from "../Item/ItemManager";
+import { SpecT } from "../../Types/PlayerSpecs";
@Injectable(IRaidManager)
export class RaidManager
@@ -22,6 +25,9 @@ implements FrontworkComponent, IRaidManag
@Inject(ICharacterManager)
private characterManager: ICharacterManager
+ @Inject(ItemManager)
+ private itemManager: IItemManager
+
exportRPCs = () => [
this.getRaids,
this.getRaidData,
@@ -38,7 +44,8 @@ implements FrontworkComponent, IRaidManag
this.removeSignup,
this.archiveRaid,
this.setBenched,
- this.startRaid
+ this.startRaid,
+ this.adminUnsign
]
},{
name: 'signup' as 'signup',
@@ -136,15 +143,20 @@ implements FrontworkComponent, IRaidManag
archiveRaid = async (raid:Raid) : Promise => {
const raidData = await this.getRaidData(raid)
+
+ const tx = await this.admin.knex.transaction()
+
await this.admin.knex('archive')
+ .transacting(tx)
.insert({
id:raidData.id,
raiddata: JSON.stringify(raidData)
})
await Promise.all(
- Object.values(raidData.participants).flat().flatMap((signup) => this.admin
+ Object.values(raidData.participants).flat().flatMap((signup) => this.admin
.knex('tokens')
+ .transacting(tx)
.where({
characterid: signup.characterid,
signupid: null
@@ -153,8 +165,11 @@ implements FrontworkComponent, IRaidManag
))
await this.admin.knex('raids')
+ .transacting(tx)
.where('id', '=', raid.id)
.del()
+ await tx.commit()
+
const row = await this.admin.knex('archive')
.select('*')
@@ -162,7 +177,6 @@ implements FrontworkComponent, IRaidManag
id:raidData.id,
})
.first()
-
return JSON.parse(row.raiddata)
}
@@ -184,7 +198,7 @@ implements FrontworkComponent, IRaidManag
}
getRaidData = async (raid:Raid) : Promise => {
- const ret = {
+ const raiddata = {
participants:{
Druid: <(Signup&Character&Spec)[]>[],
Hunter: <(Signup&Character&Spec)[]>[],
@@ -198,8 +212,11 @@ implements FrontworkComponent, IRaidManag
late: <(Signup&Character&Spec)[]>[],
bench: <(Signup&Character&Spec)[]>[],
},
- tokens:{}
+ tokens:{},
+ healers:<(Signup&Character&Spec)[]>[],
+ tanks:<(Signup&Character&Spec)[]>[]
}
+ const tx = await this.admin.knex.transaction()
const subQuery = this.admin
.knex('signups')
@@ -211,14 +228,17 @@ implements FrontworkComponent, IRaidManag
})
.as('signupcount')
+
const raidInDb: Raid = await this.admin.knex('raids')
.select('*', subQuery)
+ .transacting(tx)
.where('id','=',raid.id)
.first()
const characterData: (Signup & Character & Spec)[] = await this.admin
.knex('signups as s')
- .select('s.id as id', 'charactername', 'class', 'specname', 'race', 'userid', 'benched', 'late', 'raidid', 'characterid')
+ .transacting(tx)
+ .select('s.id as id', 'charactername', 'class', 'specid', 'specname', 'race', 'userid', 'benched', 'late', 'raidid', 'characterid', 'specid')
.join('raids as r', 's.raidid','=','r.id')
.join('characters as c', 's.characterid','=','c.id')
.join('users as u', 'c.userid','=','u.id')
@@ -227,18 +247,19 @@ implements FrontworkComponent, IRaidManag
characterData.forEach(data => {
if(data.benched){
- ret.participants.bench.push(data)
+ raiddata.participants.bench.push(data)
return
}
if(data.late){
- ret.participants.late.push(data)
+ raiddata.participants.late.push(data)
return
}
- ret.participants[data.class].push(data)
+ raiddata.participants[data.class].push(data)
})
const tokenData: (Character & SRToken & Item)[] = await this.admin
.knex('signups as s')
+ .transacting(tx)
.select('*', 's.id as id')
.join('raids as r', 's.raidid','=','r.id')
.where('r.id','=',raid.id)
@@ -249,14 +270,33 @@ implements FrontworkComponent, IRaidManag
.join('tokens as t', 't.characterid','=','c.id')
.join('items as i', 'i.itemname','=','t.itemname')
+ await tx.commit()
+
tokenData.forEach(data => {
- if(!ret.tokens[data.itemname])
- ret.tokens[data.itemname] = []
- ret.tokens[data.itemname].push(data)
+ if(!raiddata.tokens[data.itemname])
+ raiddata.tokens[data.itemname] = []
+ raiddata.tokens[data.itemname].push(data)
})
+
+ raiddata.tanks = Object.values(raiddata.participants).flatMap(
+ (tanks:any[]) => tanks.filter((p:any) =>
+ !p.benched
+ && !p.late
+ && (p.specname==="Protection"
+ || p.specname==="Feral (Tank)"))
+ )
+ raiddata.healers = Object.values(raiddata.participants).flatMap(
+ (healers:any[]) => healers.filter((p:any) =>
+ !p.benched
+ && !p.late
+ && (p.specname==="Holy"
+ || p.specname==="Discipline"
+ || p.specname==="Restoration"))
+ )
+
return {
...raidInDb,
- ...ret
+ ...raiddata
}
}
@@ -273,9 +313,11 @@ implements FrontworkComponent, IRaidManag
if(!maybeUserRecord || maybeUserRecord.user.id != character.userid){
throw new Error("Bad Usertoken")
}
+ const tx = await this.admin.knex.transaction()
const exists = await this.admin
.knex('signups')
+ .transacting(tx)
.select('*')
.where({
raidid: raid.id!,
@@ -286,20 +328,28 @@ implements FrontworkComponent, IRaidManag
if(!exists){
await this.admin
.knex('signups')
+ .transacting(tx)
.insert({
raidid: raid.id!,
characterid: character.id!,
- late: late
+ late: late,
+ benched: false,
})
}else{
await this.admin
.knex('signups')
+ .transacting(tx)
+ .where({
+ id: exists.id
+ })
.update({
raidid: raid.id!,
characterid: character.id!,
- late: late
+ late: late,
+ benched: false,
})
}
+ await tx.commit()
return await this.admin
.knex('signups')
@@ -317,6 +367,46 @@ implements FrontworkComponent, IRaidManag
throw new Error("Bad Usertoken")
}
+ return await this.adminUnsign(character, raid)
+ }
+
+ adminUnsign = async (character:Character, raid:Raid) => {
+
+ const user = await this.characterManager.getUserOfCharacter(character)
+
+ const signup = await this.admin.knex('signups as si')
+ .where({
+ "si.raidid": raid.id!,
+ "si.characterid": character.id!,
+ }).first()
+
+ const tokens = await this.admin.knex('tokens as t')
+ .where('t.signupid', signup.id)
+
+ //check if token has to be deleted
+ Promise.all(
+ tokens.map(async token => {
+ await this.userManager.incrementCurrency(user, 1)
+ const prio = await this.itemManager.calculatePriorities(token.itemname, character)
+ if(token.level <= prio+1){
+ await this.admin.knex('tokens')
+ .where({
+ characterid: character.id,
+ itemname: token.itemname
+ }).del()
+ }else{
+ await this.admin.knex('tokens')
+ .where({
+ characterid: character.id,
+ itemname: token.itemname
+ }).update({
+ signupid: null,
+ level: token.level-1
+ })
+ }
+ })
+ )
+
await this.admin.knex('signups')
.where({
raidid: raid.id!,
diff --git a/src/backend/Types/Types.ts b/src/backend/Types/Types.ts
index 33c0cdf..4d01c5a 100644
--- a/src/backend/Types/Types.ts
+++ b/src/backend/Types/Types.ts
@@ -58,6 +58,8 @@ export type RaidData = Raid & {
tokens: {
[itemname in string]: (Character & SRToken & Item)[]
}
+ tanks: (Signup & Character & Spec)[]
+ healers: (Signup & Character & Spec)[]
}
export type SRToken = {
diff --git a/src/frontend/src/app/@theme/components/header/header.component.ts b/src/frontend/src/app/@theme/components/header/header.component.ts
index e43cae9..2dc2dec 100644
--- a/src/frontend/src/app/@theme/components/header/header.component.ts
+++ b/src/frontend/src/app/@theme/components/header/header.component.ts
@@ -73,8 +73,12 @@ export class HeaderComponent implements OnInit, OnDestroy {
this.api.connectShoutbox((msg) => {
this.chatlog.push(msg)
- if(msg.message != this.lastmessage)
+ msg['reply']=false
+
+ if(msg.message != this.lastmessage){
this.newmessage = true
+ msg['reply']=true
+ }
if(this.chatwindow) this.chatwindow.messages.push(msg)
}).then(sendMsg => {
this.sendMessage = (msg) => {
diff --git a/src/frontend/src/app/frontcraft/pages/character/character.component.html b/src/frontend/src/app/frontcraft/pages/character/character.component.html
index f6828d8..26985b4 100644
--- a/src/frontend/src/app/frontcraft/pages/character/character.component.html
+++ b/src/frontend/src/app/frontcraft/pages/character/character.component.html
@@ -15,7 +15,9 @@ status="control">
+
{{char.race}}
+
{{char.specname}} {{char.class}}
Owned by {{char.username}} ({{char.rank}})
diff --git a/src/frontend/src/app/frontcraft/pages/character/character.component.ts b/src/frontend/src/app/frontcraft/pages/character/character.component.ts
index 8980fac..42c02d5 100644
--- a/src/frontend/src/app/frontcraft/pages/character/character.component.ts
+++ b/src/frontend/src/app/frontcraft/pages/character/character.component.ts
@@ -13,7 +13,10 @@ export class FrontcraftCharacterComponent implements OnInit{
@Input() name?: string
@Input() link?: "owner" | "character" = 'owner'
- char : (Character & User & Spec) = {} as any
+ char : (Character & User & Spec) = {
+ race: 'Human',
+ class: 'Warrior'
+ } as any
color : string
tokens
diff --git a/src/frontend/src/app/frontcraft/pages/characters/characters.component.html b/src/frontend/src/app/frontcraft/pages/characters/characters.component.html
index 9134289..795c0d3 100644
--- a/src/frontend/src/app/frontcraft/pages/characters/characters.component.html
+++ b/src/frontend/src/app/frontcraft/pages/characters/characters.component.html
@@ -17,12 +17,14 @@
+
{{character.race}}
|
{{character.specname}}
|
+
{{character.class}}
|
diff --git a/src/frontend/src/app/frontcraft/pages/pages-layout.component.ts b/src/frontend/src/app/frontcraft/pages/pages-layout.component.ts
index 4b9f1e2..ef7f33c 100644
--- a/src/frontend/src/app/frontcraft/pages/pages-layout.component.ts
+++ b/src/frontend/src/app/frontcraft/pages/pages-layout.component.ts
@@ -22,10 +22,6 @@ export class PagesLayoutComponent implements AfterContentInit{
icon: 'people',
title: 'Characters',
link: '/frontcraft/characters',
- },{
- icon: 'shopping-cart',
- title: 'Token Shop',
- link: '/frontcraft/shop',
},{
icon: 'book-open-outline',
title: 'Loot Rules',
diff --git a/src/frontend/src/app/frontcraft/pages/pages-routing.module.ts b/src/frontend/src/app/frontcraft/pages/pages-routing.module.ts
index f95c932..371e302 100644
--- a/src/frontend/src/app/frontcraft/pages/pages-routing.module.ts
+++ b/src/frontend/src/app/frontcraft/pages/pages-routing.module.ts
@@ -39,10 +39,6 @@ export const routes: Routes = [
path: 'characters',
component: FrontcraftCharactersComponent,
},
- {
- path: 'shop',
- component: FrontcraftShopComponent
- },
{
path: 'rules',
component: FrontcraftRulesComponent
diff --git a/src/frontend/src/app/frontcraft/pages/raid/archive.component.ts b/src/frontend/src/app/frontcraft/pages/raid/archive.component.ts
index 2c89b0c..d5f8dd5 100644
--- a/src/frontend/src/app/frontcraft/pages/raid/archive.component.ts
+++ b/src/frontend/src/app/frontcraft/pages/raid/archive.component.ts
@@ -27,8 +27,13 @@ export class FrontcraftArchiveComponent implements OnInit{
Warlock: [],
Warrior: [],
},
- tokens:{}
+ tokens:{},
+ tanks:[],
+ healers: []
}
+ tokens = {}
+ displayedtokens = {}
+ search = ""
constructor(
private api: ApiService,
@@ -46,19 +51,21 @@ export class FrontcraftArchiveComponent implements OnInit{
const raidManager = this.api.get('RaidManager')
const raiddata = await raidManager.getArchiveRaid(parseInt(param))
this.raid = raiddata
+ this.tokens = raiddata.tokens;
- Object.values(raiddata.participants).flat().forEach(p => {
+ [
+ ...raiddata.tanks,
+ ...raiddata.healers,
+ ...Object.values(raiddata.participants).flat()
+ ].forEach(p => {
p['color'] = getClassColor(p.class)
})
-
- const matchingSignup = Object.values(raiddata.participants).flat().find(char => char.userid === this.api.getCurrentUser()!.id!)
- if(matchingSignup){
- this.isSignedup = true
- this.mySignup = matchingSignup
- this.mySignup.status = matchingSignup['benched']?'Bench':matchingSignup['late']?'Late':'Attending'
- }else{
- this.isSignedup = false
- this.mySignup = null
- }
- }
+
+ this.changeSearch()
+ }
+
+ changeSearch = () => {
+ this.tokens = this.raid.tokens;
+ this.displayedtokens = this.raid.tokens;
+ }
}
\ No newline at end of file
diff --git a/src/frontend/src/app/frontcraft/pages/raid/raid.component.html b/src/frontend/src/app/frontcraft/pages/raid/raid.component.html
index ff6b63a..7d0e65c 100644
--- a/src/frontend/src/app/frontcraft/pages/raid/raid.component.html
+++ b/src/frontend/src/app/frontcraft/pages/raid/raid.component.html
@@ -17,14 +17,32 @@
Status: {{mySignup.status}}
+
+
+ unsign
+
@@ -44,6 +62,74 @@
badgePosition="top right"
[badgeStatus]="raid.signupcount<40?'warning':'success'">
@@ -70,12 +167,14 @@
-
+
+
+
-
+
@@ -104,15 +203,6 @@
size="medium">
start
-
-
diff --git a/src/frontend/src/app/frontcraft/pages/raid/raid.component.ts b/src/frontend/src/app/frontcraft/pages/raid/raid.component.ts
index cdaed87..ccf3447 100644
--- a/src/frontend/src/app/frontcraft/pages/raid/raid.component.ts
+++ b/src/frontend/src/app/frontcraft/pages/raid/raid.component.ts
@@ -1,10 +1,10 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { ApiService as ApiService } from '../../services/login-api';
-import { RaidData, Raid, Signup } from '../../../../../../backend/Types/Types';
+import { RaidData, Raid, Signup, Character, Spec, Item, SRToken } from '../../../../../../backend/Types/Types';
import { NbWindowService, NbToastrService, NbDialogService } from '@nebular/theme';
import { FrontcraftCharacerpickerComponent } from './characterpicker.component';
-import { getClassColor } from '../../../../../../backend/Types/PlayerSpecs';
+import { getClassColor, SpecT } from '../../../../../../backend/Types/PlayerSpecs';
import { FrontcraftBuyTokenComponent } from '../shop/buytoken.component';
@Component({
@@ -15,8 +15,9 @@ export class FrontcraftRaidComponent implements OnInit{
canSignup = false
isSignedup = false
+ islate = false
manageRaid
- mySignup
+ mySignup: (Signup & Character & Spec)
raid: RaidData = {
participants:{
@@ -30,9 +31,14 @@ export class FrontcraftRaidComponent implements OnInit{
Warlock: [],
Warrior: [],
},
+ tanks: [],
+ healers: [],
tokens:{}
}
-
+ tokens = {}
+ displayedtokens = {}
+ search = ""
+
constructor(
private api: ApiService,
private route: ActivatedRoute,
@@ -93,11 +99,40 @@ export class FrontcraftRaidComponent implements OnInit{
const signupFeature = this.api.get('signup')
if(!signupFeature) return
- await signupFeature.unsign(this.api.getAuth().token.value, {id: this.mySignup.characterid, userid: this.mySignup.userid}, this.raid)
+ await signupFeature.unsign(this.api.getAuth().token.value, {
+ ...this.mySignup,
+ id: this.mySignup.characterid,
+ }, this.raid)
this.toast.show('Success', 'Unsigned', { status: 'success' })
this.refresh()
}
+ setLate = async (value:boolean) => {
+ const auth = this.api.getAuth()
+ const signup = this.api.get('signup')
+ if(!signup) return
+
+ console.log("setlate");
+
+
+ await signup.sign(auth.token.value, {
+ ...this.mySignup,
+ id: this.mySignup.characterid,
+ }, this.raid, value)
+ this.toast.show('Signup', 'Success', { status: 'success' })
+ this.refresh()
+ }
+
+ adminUnsign = async() => {
+ const manage = this.api.get('manageRaid')
+ if(!manage) return
+ await manage.adminUnsign({
+ ...this.mySignup,
+ id: this.mySignup.characterid,
+ }, this.raid)
+ this.refresh()
+ }
+
refresh = async () => {
const param = this.route.snapshot.paramMap.get('id');
@@ -105,22 +140,40 @@ export class FrontcraftRaidComponent implements OnInit{
const raiddata = await raidManager.getRaidData({
id: param
})
+
this.raid = raiddata
+ this.tokens = raiddata.tokens;
- Object.values(raiddata.participants).flat().forEach(p => {
+ [...raiddata.tanks, ...raiddata.healers, ...Object.values(raiddata.participants).flat()].forEach(p => {
p['color'] = getClassColor(p.class)
})
+
const user = this.api.getCurrentUser()
const matchingSignup = Object.values(raiddata.participants).flat().find(char => user && char.userid === user.id!)
if(matchingSignup){
-
this.isSignedup = true
this.mySignup = matchingSignup
- this.mySignup.status = matchingSignup['benched']?'Bench':matchingSignup['late']?'Late':'Attending'
+ this.mySignup['status'] = matchingSignup['benched']?'Bench':matchingSignup['late']?'Late':'Attending'
}else{
this.isSignedup = false
this.mySignup = null
}
+ this.changeSearch()
+ }
+
+ changeSearch(){
+ if(!this.search || this.search == ""){
+ this.displayedtokens = this.tokens
+ }else{
+ this.displayedtokens = {}
+ Object.entries(this.tokens).forEach((e: [string, (Character & SRToken & Item)[]]) => {
+ const filteredTokens = e[1].filter(item => {
+ return item.itemname.toLocaleLowerCase().includes(this.search.toLocaleLowerCase())
+ })
+ if(filteredTokens.length > 0)
+ this.displayedtokens[e[0]] = filteredTokens
+ })
+ }
}
setBench(signup:Signup){
diff --git a/src/frontend/src/app/frontcraft/pages/rules/rules.component.html b/src/frontend/src/app/frontcraft/pages/rules/rules.component.html
index 0450bd2..7a98fae 100644
--- a/src/frontend/src/app/frontcraft/pages/rules/rules.component.html
+++ b/src/frontend/src/app/frontcraft/pages/rules/rules.component.html
@@ -20,7 +20,7 @@
{{rule.description}}
- +{{rule.modifier}} {{rule.race}} {{rule.specname}} {{rule.class}}
+ 0">+{{rule.modifier}} {{rule.race}} {{rule.specname}} {{rule.class}}
diff --git a/src/frontend/src/app/frontcraft/pages/shop/buytoken.component.ts b/src/frontend/src/app/frontcraft/pages/shop/buytoken.component.ts
index c06ff6a..f469495 100644
--- a/src/frontend/src/app/frontcraft/pages/shop/buytoken.component.ts
+++ b/src/frontend/src/app/frontcraft/pages/shop/buytoken.component.ts
@@ -72,13 +72,18 @@ import { _Tiers, allItems, Tiers } from '../../../../../../backend/Types/Items';
.then(chars => {
chars.forEach(char => {
char['color'] = getClassColor(char.class)
- this.api.get('ItemManager').getToken(char, this.item).then(token => {
- if(token) this.ownedtokens.push(token)
- else{
- this.api.get('ItemManager').calculatePriorities(this.item.itemname, char).then(modifier => {
- this.modifier[char.charactername] = modifier
- })
- }
+ this.api.get('ItemManager').getToken(char, this.item, false).then(token => {
+ if(token) this.ownedtokens.push(token)
+ else{
+ this.api.get('ItemManager').getToken(char, this.item, true).then(tokken => {
+ if(tokken) this.ownedtokens.push(tokken)
+ else{
+ this.api.get('ItemManager').calculatePriorities(this.item.itemname, char).then(modifier => {
+ this.modifier[char.charactername] = modifier
+ })
+ }
+ })
+ }
})
})
this.characters = chars
@@ -90,15 +95,14 @@ import { _Tiers, allItems, Tiers } from '../../../../../../backend/Types/Items';
}
buyToken = async (charactername:string) => {
-
- const src = this.api.get('ItemManager')
- const token = await src.buyToken(this.api.getAuth().token.value, charactername, this.item.itemname, this.signup)
-
- if(token){
- this.toastr.show(token.characterid+' now has a token for '+token.itemname+' of level '+token.level, 'Yay', {status: 'success'})
- }else{
- this.toastr.show('Error (something went wrong)', 'Oh no', {status: 'danger'})
- }
- this.dialogRef.close()
+ const src = this.api.get('ItemManager')
+ const token = await src.buyToken(this.api.getAuth().token.value, charactername, this.item.itemname, this.signup)
+
+ if(token){
+ this.toastr.show(token.characterid+' now has a token for '+token.itemname+' of level '+token.level, 'Yay', {status: 'success'})
+ }else{
+ this.toastr.show('Error (something went wrong)', 'Oh no', {status: 'danger'})
+ }
+ this.dialogRef.close()
}
}
\ No newline at end of file
diff --git a/src/frontend/src/assets/images/dwarf.png b/src/frontend/src/assets/images/dwarf.png
new file mode 100644
index 0000000..39e14b0
Binary files /dev/null and b/src/frontend/src/assets/images/dwarf.png differ
diff --git a/src/frontend/src/assets/images/dwarf_xs.gif b/src/frontend/src/assets/images/dwarf_xs.gif
new file mode 100644
index 0000000..7ccdce5
Binary files /dev/null and b/src/frontend/src/assets/images/dwarf_xs.gif differ
diff --git a/src/frontend/src/assets/images/gnome.png b/src/frontend/src/assets/images/gnome.png
new file mode 100644
index 0000000..3821686
Binary files /dev/null and b/src/frontend/src/assets/images/gnome.png differ
diff --git a/src/frontend/src/assets/images/gnome_xs.gif b/src/frontend/src/assets/images/gnome_xs.gif
new file mode 100644
index 0000000..744505a
Binary files /dev/null and b/src/frontend/src/assets/images/gnome_xs.gif differ
diff --git a/src/frontend/src/assets/images/human.png b/src/frontend/src/assets/images/human.png
new file mode 100644
index 0000000..0bc152d
Binary files /dev/null and b/src/frontend/src/assets/images/human.png differ
diff --git a/src/frontend/src/assets/images/human_xs.gif b/src/frontend/src/assets/images/human_xs.gif
new file mode 100644
index 0000000..054236b
Binary files /dev/null and b/src/frontend/src/assets/images/human_xs.gif differ
diff --git a/src/frontend/src/assets/images/night elf.png b/src/frontend/src/assets/images/night elf.png
new file mode 100644
index 0000000..598f5ad
Binary files /dev/null and b/src/frontend/src/assets/images/night elf.png differ
diff --git a/src/frontend/src/assets/images/night elf_xs.gif b/src/frontend/src/assets/images/night elf_xs.gif
new file mode 100644
index 0000000..d10e767
Binary files /dev/null and b/src/frontend/src/assets/images/night elf_xs.gif differ
diff --git a/src/frontend/src/assets/images/team.png b/src/frontend/src/assets/images/team.png
deleted file mode 100644
index 17c7d17..0000000
Binary files a/src/frontend/src/assets/images/team.png and /dev/null differ
diff --git a/src/frontend/src/assets/images/warlock.png b/src/frontend/src/assets/images/warlock.png
new file mode 100644
index 0000000..393a7d4
Binary files /dev/null and b/src/frontend/src/assets/images/warlock.png differ
diff --git a/test/backendTest.ts b/test/backendTest.ts
index fa03588..82ae6c3 100644
--- a/test/backendTest.ts
+++ b/test/backendTest.ts
@@ -79,7 +79,7 @@ const testAccounts : protoAccount[] = [
spec: 'Fury',
rank: 'Classleader'
},{
- name: 'Teenieweenie',
+ name: 'Teeniweeni',
class: 'Warlock',
race: 'Gnome',
spec: 'Demonology',
@@ -276,10 +276,30 @@ describe('Frontcraft', () => {
undefined, 1, "hit bias"
),
+ makePrio(
+ 'Maladath, Runed Blade of the Black Flight',
+ undefined,
+ "Human", -2, "(1) Non-Human"
+ ),
+ makePrio(
+ 'Maladath, Runed Blade of the Black Flight',
+ {class:'Rogue', specname:'Subtlety'},
+ undefined, 2, "...Rogues (weapon skill bias)"
+ ),
+ makePrio(
+ 'Maladath, Runed Blade of the Black Flight',
+ {class:'Rogue', specname:'Combat'},
+ undefined, 2, "...Rogues (weapon skill bias)"
+ ),
+ makePrio(
+ 'Maladath, Runed Blade of the Black Flight',
+ {class:'Rogue', specname:'Assassination'},
+ undefined, 2, "...Rogues (weapon skill bias)"
+ ),
makePrio(
'Maladath, Runed Blade of the Black Flight',
{class:'Warrior', specname:'Fury'},
- 'Human', 2, "weapon skill bias"
+ 'Human', 4, "+2 Fury Warrior (weapon skill bias), +2 to offset (1)"
),
makePrio(
@@ -556,7 +576,6 @@ describe('Frontcraft', () => {
}
else{
console.log("Bad user currency", dbUser);
-
}
})
}