aboutsummaryrefslogtreecommitdiff
path: root/internal/game/combat_attack.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-07-01 02:21:42 -0400
committerhistoria <[not public]>2026-07-01 02:21:42 -0400
commit5f37dc9b6f6b79da04da70ae0c33ec8d02998587 (patch)
treef7c309e36267a4c456fcf5bca800e614507a80af /internal/game/combat_attack.go
parentfee376102192dc6f24297a7b11324636ace3a07d (diff)
downloadthehouseoficarus-5f37dc9b6f6b79da04da70ae0c33ec8d02998587.tar.gz
feat: qol improvements to items crud in admin gui
Diffstat (limited to 'internal/game/combat_attack.go')
-rw-r--r--internal/game/combat_attack.go32
1 files changed, 16 insertions, 16 deletions
diff --git a/internal/game/combat_attack.go b/internal/game/combat_attack.go
index bae210b..ddc3b8f 100644
--- a/internal/game/combat_attack.go
+++ b/internal/game/combat_attack.go
@@ -59,7 +59,7 @@ func (g *Game) doAttack(sess *net.Session, input string) {
}
if itemID, ok := p.Equipment[item.SlotMainHand]; ok {
- if def, err := g.ItemStore.Load(itemID); err == nil && def.WeaponType == item.WeaponRanged {
+ if def, err := g.ItemStore.Load(itemID); err == nil && def.EquipmentType() == item.EquipRangedWeapon {
if _, hasAmmo := p.Equipment[item.SlotAmmo]; !hasAmmo || p.AmmoQty <= 0 {
sess.WriteLine("You don't have any ammo equipped.")
return
@@ -289,23 +289,23 @@ func (g *Game) playerAttack(sess *net.Session, p *player.Player, mob *world.MobI
}
}
-func (g *Game) calculatePlayerAttackRoll(p *player.Player, mob *world.MobInstance) (attackType string, weaponType item.WeaponType, attRoll int, defRoll int, maxHit int) {
+func (g *Game) calculatePlayerAttackRoll(p *player.Player, mob *world.MobInstance) (attackType string, weaponType item.EquipmentType, attRoll int, defRoll int, maxHit int) {
attackType = "crush"
if itemID, ok := p.Equipment[item.SlotMainHand]; ok {
if def, err := g.ItemStore.Load(itemID); err == nil {
- if def.AttackType != "" {
- attackType = def.AttackType
- } else if def.WeaponType == item.WeaponRanged {
+ if def.AttackType() != "" {
+ attackType = def.AttackType()
+ } else if def.EquipmentType() == item.EquipRangedWeapon {
attackType = "ranged"
- } else if def.WeaponType == item.WeaponScience {
+ } else if def.EquipmentType() == item.EquipScienceWeapon {
attackType = "science"
}
- weaponType = def.WeaponType
+ weaponType = def.EquipmentType()
}
}
totals := g.playerEquipBonuses(p)
- isRanged := weaponType == item.WeaponRanged
+ isRanged := weaponType == item.EquipRangedWeapon
if isRanged {
rangedBonus, _ := combat.RangedStyleBonus(string(p.AttackStyle))
@@ -343,15 +343,15 @@ func (g *Game) playerAttackUnarmed(sess *net.Session, p *player.Player, mob *wor
attackType, _, attRoll, defRoll, maxHit := g.calculateUnarmedAttackRoll(p, mob)
if combat.HitCheck(attRoll, defRoll) {
- g.applyPlayerHit(sess, p, mob, attackType, item.WeaponMelee, maxHit)
+ g.applyPlayerHit(sess, p, mob, attackType, item.EquipMeleeWeapon, maxHit)
} else {
- g.applyPlayerMiss(sess, p, mob, item.WeaponMelee)
+ g.applyPlayerMiss(sess, p, mob, item.EquipMeleeWeapon)
}
}
-func (g *Game) calculateUnarmedAttackRoll(p *player.Player, mob *world.MobInstance) (attackType string, weaponType item.WeaponType, attRoll int, defRoll int, maxHit int) {
+func (g *Game) calculateUnarmedAttackRoll(p *player.Player, mob *world.MobInstance) (attackType string, weaponType item.EquipmentType, attRoll int, defRoll int, maxHit int) {
attackType = "crush"
- weaponType = item.WeaponMelee
+ weaponType = item.EquipMeleeWeapon
attBonus, strBonus, _ := combat.AttackStyleBonus(string(p.AttackStyle))
effectiveAccuracy := p.Level(player.Accuracy) + g.techLevelBonus(p, "accuracy") + g.buffLevelBonus(p, "accuracy")
@@ -365,7 +365,7 @@ func (g *Game) calculateUnarmedAttackRoll(p *player.Player, mob *world.MobInstan
return
}
-func (g *Game) applyPlayerHit(sess *net.Session, p *player.Player, mob *world.MobInstance, attackType string, weaponType item.WeaponType, maxHit int) {
+func (g *Game) applyPlayerHit(sess *net.Session, p *player.Player, mob *world.MobInstance, attackType string, weaponType item.EquipmentType, maxHit int) {
dmg := combat.RollDamage(maxHit)
mob.HP -= dmg
@@ -390,7 +390,7 @@ func (g *Game) applyPlayerHit(sess *net.Session, p *player.Player, mob *world.Mo
mobDisplayName(mob, false), fbName)))
}
- isRanged := weaponType == item.WeaponRanged
+ isRanged := weaponType == item.EquipRangedWeapon
gains := g.awardCombatXP(sess, p, dmg, isRanged)
if isRanged {
@@ -425,10 +425,10 @@ func (g *Game) applyPlayerHit(sess *net.Session, p *player.Player, mob *world.Mo
}
}
-func (g *Game) applyPlayerMiss(sess *net.Session, p *player.Player, mob *world.MobInstance, weaponType item.WeaponType) {
+func (g *Game) applyPlayerMiss(sess *net.Session, p *player.Player, mob *world.MobInstance, weaponType item.EquipmentType) {
sess.WriteLine(g.colorize(sess, "miss", fmt.Sprintf("You miss %s.", mobDisplayName(mob, true))))
- if weaponType == item.WeaponRanged {
+ if weaponType == item.EquipRangedWeapon {
g.consumeAmmo(sess, p)
if p.AmmoQty <= 0 {
sess.WriteLine("You've run out of ammo!")