From abd612c15799f604e671e83dc7c410ed2b44185f Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Thu, 25 Jun 2026 15:40:48 -0400 Subject: slop refactor --- internal/game/action_search.go | 126 ----------------------------------------- 1 file changed, 126 deletions(-) delete mode 100644 internal/game/action_search.go (limited to 'internal/game/action_search.go') diff --git a/internal/game/action_search.go b/internal/game/action_search.go deleted file mode 100644 index 0f755a5..0000000 --- a/internal/game/action_search.go +++ /dev/null @@ -1,126 +0,0 @@ -package game - -import ( - "fmt" - - "thehouseoficarus/internal/action" - "thehouseoficarus/internal/engine" - "thehouseoficarus/internal/net" - "thehouseoficarus/internal/player" -) - -func (g *Game) startSearch(sess *net.Session, p *player.Player, itemID string, slotIdx int) { - def, err := g.ItemStore.Load(itemID) - if err != nil || def.SearchTable == "" { - sess.WriteLine("You can't search that.") - return - } - - ticks := def.SearchTicks - if ticks <= 0 { - ticks = 3 - } - - p.Action = &action.Action{ - Type: "search", - TargetID: itemID, - TargetName: def.Name, - WaitLeft: engine.ToTicks(ticks), - Data: &action.SearchData{ - ItemID: itemID, - SlotIdx: slotIdx, - Started: false, - }, - } - - g.broadcastAction(sess, "\n%s searches a %s.", p.Name, def.Name) -} - -func (g *Game) advanceSearch(sess *net.Session, p *player.Player) { - d, ok := p.Action.Data.(*action.SearchData) - if !ok || d == nil { - sess.WriteLine("Something went wrong.") - g.cancelAction(p) - return - } - - def, err := g.ItemStore.Load(d.ItemID) - if err != nil { - sess.WriteLine("Something went wrong.") - g.cancelAction(p) - return - } - - if !d.Started { - msg := def.SearchMessage - if msg == "" { - msg = fmt.Sprintf("digging through the %s", def.Name) - } - sess.WriteLine(fmt.Sprintf("You begin %s.", msg)) - d.Started = true - return - } - - slot := p.InvSlot(d.SlotIdx) - if slot == nil || slot.ItemID != d.ItemID || slot.Quantity <= 0 { - sess.WriteLine("The item is gone.") - g.cancelAction(p) - return - } - - if slot.Quantity > 1 { - slot.Quantity-- - } else { - p.SetInvSlot(d.SlotIdx, nil) - } - - dt, err := action.LoadDropTable(g.DataDir, def.SearchTable) - if err == nil && len(dt.Drops) > 0 { - drop := action.ResolveDrop(g.DataDir, dt.Drops) - if drop != nil && drop.ItemID != "" { - g.giveSearchLoot(sess, p, drop) - } - } - - if def.SearchMiscTable != "" { - dt2, err := action.LoadDropTable(g.DataDir, def.SearchMiscTable) - if err == nil && len(dt2.Drops) > 0 { - drop := action.ResolveDrop(g.DataDir, dt2.Drops) - if drop != nil && drop.ItemID != "" { - g.giveSearchLoot(sess, p, drop) - } - } - } - - g.AccountStore.SaveCharacter(p) - g.cancelAction(p) -} - -func (g *Game) giveSearchLoot(sess *net.Session, p *player.Player, drop *action.DropEntry) { - qty := drop.Quantity - if qty <= 0 { - qty = 1 - } - - name := drop.ItemID - lootDef, _ := g.ItemStore.Load(drop.ItemID) - if lootDef != nil { - name = lootDef.Name - } - - if drop.ItemID == "credits" { - p.Credits += qty - sess.WriteLine(g.colorize(sess, "credits_pickup", fmt.Sprintf("You find %d credits.", qty))) - return - } - - freeSlot := p.FirstFreeSlot() - if freeSlot == -1 { - g.World.AddGroundItem(p.RoomID, drop.ItemID, qty) - sess.WriteLine(fmt.Sprintf("You find %s. It falls to the ground.", g.itemColorize(sess, lootDef, name))) - return - } - - p.SetInvSlot(freeSlot, &player.InventorySlot{ItemID: drop.ItemID, Quantity: qty}) - sess.WriteLine(fmt.Sprintf("You find %s.", g.itemColorize(sess, lootDef, name))) -} -- cgit v1.2.3