57 lines
1.5 KiB
Go
57 lines
1.5 KiB
Go
package actions
|
|
|
|
import (
|
|
"dk/internal/items"
|
|
"dk/internal/users"
|
|
)
|
|
|
|
// UserEquipItem equips a given item onto a user. This overwrites any
|
|
// previously equipped item in the slot. Does not save.
|
|
func UserEquipItem(user *users.User, item *items.Item) {
|
|
slotInUse := false
|
|
if item.Type == items.TypeWeapon && user.WeaponID != 0 {
|
|
slotInUse = true
|
|
}
|
|
if item.Type == items.TypeArmor && user.ArmorID != 0 {
|
|
slotInUse = true
|
|
}
|
|
if item.Type == items.TypeShield && user.ShieldID != 0 {
|
|
slotInUse = true
|
|
}
|
|
|
|
var oldItem *items.Item
|
|
if slotInUse && item.Type == items.TypeWeapon {
|
|
oldItem, _ = items.Find(user.WeaponID)
|
|
} else if slotInUse && item.Type == items.TypeArmor {
|
|
oldItem, _ = items.Find(user.ArmorID)
|
|
} else if slotInUse && item.Type == items.TypeShield {
|
|
oldItem, _ = items.Find(user.ShieldID)
|
|
}
|
|
|
|
if oldItem != nil {
|
|
switch oldItem.Type {
|
|
case items.TypeWeapon:
|
|
user.Set("Attack", user.Attack-oldItem.Att)
|
|
case items.TypeArmor:
|
|
user.Set("Defense", user.Defense-oldItem.Att)
|
|
case items.TypeShield:
|
|
user.Set("Defense", user.Defense-oldItem.Att)
|
|
}
|
|
}
|
|
|
|
switch item.Type {
|
|
case items.TypeWeapon:
|
|
user.Set("Attack", user.Attack+item.Att)
|
|
user.Set("WeaponID", item.ID)
|
|
user.Set("WeaponName", item.Name)
|
|
case items.TypeArmor:
|
|
user.Set("Defense", user.Defense+item.Att)
|
|
user.Set("ArmorID", item.ID)
|
|
user.Set("ArmorName", item.Name)
|
|
case items.TypeShield:
|
|
user.Set("Defense", user.Defense+item.Att)
|
|
user.Set("ShieldID", item.ID)
|
|
user.Set("ShieldName", item.Name)
|
|
}
|
|
}
|