From 8ee8982b8759bcae116647cc993867f4c8b0a6ce Mon Sep 17 00:00:00 2001 From: workhorse Date: Fri, 19 Jun 2026 20:24:52 -0400 Subject: reorganized items, objects, and rooms in directories. oranized module names. added startup checks. --- internal/game/cmd_drink.go | 150 --------------------------------------------- 1 file changed, 150 deletions(-) delete mode 100644 internal/game/cmd_drink.go (limited to 'internal/game/cmd_drink.go') diff --git a/internal/game/cmd_drink.go b/internal/game/cmd_drink.go deleted file mode 100644 index 44ef991..0000000 --- a/internal/game/cmd_drink.go +++ /dev/null @@ -1,150 +0,0 @@ -package game - -import ( - "fmt" - "strings" - "time" - - "thehouseoficarus/internal/engine" - "thehouseoficarus/internal/net" - "thehouseoficarus/internal/object" - "thehouseoficarus/internal/player" -) - -func (g *Game) doDrink(sess *net.Session, args []string) { - p := sess.Player - - if len(args) == 0 { - sess.WriteLine("Drink what?") - return - } - - input := strings.Join(args, " ") - matches := g.findInventoryMatches(input, p) - if len(matches) == 0 { - sess.WriteLine(fmt.Sprintf("You don't have any '%s'.", input)) - return - } - - unique := uniqueItemNames(matches) - if len(unique) > 1 { - g.showWhichOne(sess, matches) - return - } - - itemID := matches[0].ID - def, _ := g.ItemStore.Load(itemID) - - if def == nil { - sess.WriteLine("Something went wrong.") - return - } - - if def.PotionEffect == "" && def.HealValue <= 0 { - sess.WriteLine(fmt.Sprintf("You can't drink the %s.", g.itemColorize(sess, def, def.Name))) - return - } - - if p.ConsumeCooldown > 0 { - sess.WriteLine("You're still recovering from your last drink.") - return - } - - g.cancelRest(p.Name) - - if p.Action == nil && len(p.WalkSequence) == 0 { - g.applyPotion(sess, p, itemID, def) - return - } - - g.cancelAction(p) - - g.consumeQueue[p.Name] = &QueuedCommand{ - Session: sess, - Command: "drink", - Args: itemID, - Timestamp: time.Now(), - } - - if !p.OptionBool("queue_silently") { - sess.WriteLine(fmt.Sprintf("\nYou prepare to drink the %s.", g.itemColorize(sess, def, def.Name))) - } -} - -func (g *Game) applyPotion(sess *net.Session, p *player.Player, itemID string, def *object.ItemDef) { - if def == nil { - var err error - def, err = g.ItemStore.Load(itemID) - if err != nil || (def.PotionEffect == "" && def.HealValue <= 0) { - return - } - } - - p.RemoveItem(itemID, 1) - - effect := strings.ToLower(def.PotionEffect) - - switch effect { - case "battery": - batteryRestore := def.PotionBonus - p.Battery += float64(batteryRestore) - if p.Battery > 100 { - p.Battery = 100 - } - sess.WriteLine(fmt.Sprintf("\nYou drink the %s. Your battery is restored by %d%%.", - g.itemColorize(sess, def, def.Name), batteryRestore)) - - case "heal", "": - healAmount := def.PotionBonus - if healAmount <= 0 { - healAmount = def.HealValue - } - if healAmount <= 0 { - healAmount = 50 - } - before := p.HP - maxHP := p.Level(player.Hitpoints) - if p.HP+healAmount > maxHP { - p.HP = maxHP - } else { - p.HP += healAmount - } - actualHeal := p.HP - before - sess.WriteLine(fmt.Sprintf("\nYou drink the %s. You restore %d hitpoints.", - g.itemColorize(sess, def, def.Name), actualHeal)) - - case "all_combat": - duration := engine.ToTicks(def.PotionDuration) - buffs := []string{"attack", "strength", "defense"} - for _, stat := range buffs { - p.ActiveBuffs = append(p.ActiveBuffs, player.PotionBuff{ - Stat: stat, - BonusPercent: def.PotionBonus, - TicksLeft: duration, - }) - } - sess.WriteLine(fmt.Sprintf("\nYou drink the %s. Your combat stats are boosted by %d%% for %d ticks.", - g.itemColorize(sess, def, def.Name), def.PotionBonus, duration)) - - default: - duration := engine.ToTicks(def.PotionDuration) - p.ActiveBuffs = append(p.ActiveBuffs, player.PotionBuff{ - Stat: effect, - BonusPercent: def.PotionBonus, - TicksLeft: duration, - }) - sess.WriteLine(fmt.Sprintf("\nYou drink the %s. Your %s is boosted by %d%% for %d ticks.", - g.itemColorize(sess, def, def.Name), effect, def.PotionBonus, duration)) - } - - p.ConsumeCooldown = 3 - p.ActionState = &ActionState{Type: ActionEating} - - if g.Hub != nil { - for _, other := range g.Hub.PlayersInRoom(p.RoomID) { - if other != sess && other.Player != nil { - other.WriteLine(g.colorize(other, "broadcast", fmt.Sprintf("\n%s drinks a %s.", p.Name, def.Name))) - } - } - } -} -- cgit v1.2.3