diff options
Diffstat (limited to 'internal/game/combat_attack.go')
| -rw-r--r-- | internal/game/combat_attack.go | 32 |
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!") |
