From 0ea4eec5dd2122c6704216971eb1249276297867 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Fri, 19 Jun 2026 18:20:26 -0400 Subject: shop fixes, 'toggle' completely removed, movement speed increased --- internal/game/cmd_trigger.go | 121 +++++++++++++++---------------------------- 1 file changed, 43 insertions(+), 78 deletions(-) (limited to 'internal/game/cmd_trigger.go') diff --git a/internal/game/cmd_trigger.go b/internal/game/cmd_trigger.go index 7ef4913..89ed397 100644 --- a/internal/game/cmd_trigger.go +++ b/internal/game/cmd_trigger.go @@ -11,7 +11,7 @@ import ( ) func (g *Game) doTrigger(sess *net.Session, input string) { - p := sess.Player.(*player.Player) + p := sess.Player input = strings.TrimSpace(input) if input == "" { @@ -40,8 +40,6 @@ func (g *Game) doTrigger(sess *net.Session, input string) { g.triggerCombatMod(sess, p, mod, targetArg) case ModTransport: g.triggerTransport(sess, p, mod) - case ModProcessing: - g.triggerProcessing(sess, p, mod, targetArg) case ModUtility: g.triggerUtility(sess, p, mod, targetArg) case ModEnchant: @@ -65,13 +63,13 @@ func (g *Game) parseTriggerArgs(input string) (*ModDef, string) { func (g *Game) triggerCombatMod(sess *net.Session, p *player.Player, mod *ModDef, targetArg string) { if cs := combat.GetCombat(p.Name); cs != nil { - p.AutocastMod = mod.ID + p.AutotriggerMod = mod.ID sess.WriteLine(fmt.Sprintf("You switch to triggering %s.", mod.Name)) return } if p.Action != nil { - g.CancelAction(p) + g.cancelAction(p) } var mobTarget string @@ -105,7 +103,7 @@ func (g *Game) triggerCombatMod(sess *net.Session, p *player.Player, mod *ModDef return } - p.AutocastMod = mod.ID + p.AutotriggerMod = mod.ID g.startCombat(sess, p, mob) } @@ -116,15 +114,13 @@ func (g *Game) triggerTransport(sess *net.Session, p *player.Player, mod *ModDef } if p.Action != nil { - g.CancelAction(p) + g.cancelAction(p) } g.consumeJunkCost(p, mod) - sciXP := int(mod.BaseXP) - if newLevel := p.AddSkillXP(player.Science, sciXP); newLevel > 0 { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d science! ***", p.Level(player.Science)))) - } + sciXP := mod.BaseXP + g.awardSkillXP(sess, p, player.Science, sciXP) if p.OptionBool("xp_drops") { sess.WriteLine(g.colorize(sess, "xp", fmt.Sprintf("+%dxp sci", sciXP))) } @@ -180,7 +176,7 @@ func (g *Game) triggerProcessing(sess *net.Session, p *player.Player, mod *ModDe } if p.Action != nil { - g.CancelAction(p) + g.cancelAction(p) } g.consumeJunkCost(p, mod) @@ -201,17 +197,10 @@ func (g *Game) triggerProcessing(sess *net.Session, p *player.Player, mod *ModDe p.Credits += creditValue - sciXP := int(mod.BaseXP) - var leveledUp []player.SkillName - if newLevel := p.AddSkillXP(player.Science, sciXP); newLevel > 0 { - leveledUp = append(leveledUp, player.Science) - } + sciXP := mod.BaseXP + g.awardSkillXP(sess, p, player.Science, sciXP) g.AccountStore.SaveCharacter(p) - for _, skill := range leveledUp { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d %s! ***", p.Level(skill), skill))) - } - sess.WriteLine(fmt.Sprintf("You process the %s. You receive %s credits.", itemDef.Name, g.colorize(sess, "credits_pickup", fmt.Sprint(creditValue)))) @@ -222,6 +211,8 @@ func (g *Game) triggerProcessing(sess *net.Session, p *player.Player, mod *ModDe func (g *Game) triggerUtility(sess *net.Session, p *player.Player, mod *ModDef, targetArg string) { switch mod.ID { + case "low_process", "high_process": + g.triggerProcessing(sess, p, mod, targetArg) case "bones_to_nutrients": g.triggerBonesToNutrients(sess, p, mod) case "em_grab": @@ -246,7 +237,7 @@ func (g *Game) triggerBonesToNutrients(sess *net.Session, p *player.Player, mod } if p.Action != nil { - g.CancelAction(p) + g.cancelAction(p) } g.consumeJunkCost(p, mod) @@ -258,10 +249,8 @@ func (g *Game) triggerBonesToNutrients(sess *net.Session, p *player.Player, mod } } - sciXP := int(mod.BaseXP) * boneCount - if newLevel := p.AddSkillXP(player.Science, sciXP); newLevel > 0 { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d science! ***", p.Level(player.Science)))) - } + sciXP := mod.BaseXP * boneCount + g.awardSkillXP(sess, p, player.Science, sciXP) g.AccountStore.SaveCharacter(p) sess.WriteLine(fmt.Sprintf("You convert %d bones into nutrient bars.", boneCount)) @@ -301,7 +290,7 @@ func (g *Game) triggerEmGrab(sess *net.Session, p *player.Player, mod *ModDef, t } if p.Action != nil { - g.CancelAction(p) + g.cancelAction(p) } g.consumeJunkCost(p, mod) @@ -318,10 +307,8 @@ func (g *Game) triggerEmGrab(sess *net.Session, p *player.Player, mod *ModDef, t freeSlot := p.FirstFreeSlot() p.SetInvSlot(freeSlot, &player.InventorySlot{ItemID: matchedID, Quantity: qty}) - sciXP := int(mod.BaseXP) - if newLevel := p.AddSkillXP(player.Science, sciXP); newLevel > 0 { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d science! ***", p.Level(player.Science)))) - } + sciXP := mod.BaseXP + g.awardSkillXP(sess, p, player.Science, sciXP) g.AccountStore.SaveCharacter(p) sess.WriteLine(fmt.Sprintf("You magnetically pull the %s toward you.", name)) @@ -377,7 +364,7 @@ func (g *Game) triggerSuperheat(sess *net.Session, p *player.Player, mod *ModDef } if p.Action != nil { - g.CancelAction(p) + g.cancelAction(p) } g.consumeJunkCost(p, mod) @@ -410,14 +397,10 @@ func (g *Game) triggerSuperheat(sess *net.Session, p *player.Player, mod *ModDef p.SetInvSlot(freeSlot, &player.InventorySlot{ItemID: recipe.Output, Quantity: outputQty}) } - sciXP := int(mod.BaseXP) - if newLevel := p.AddSkillXP(player.Science, sciXP); newLevel > 0 { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d science! ***", p.Level(player.Science)))) - } + sciXP := mod.BaseXP + g.awardSkillXP(sess, p, player.Science, sciXP) if recipe.XP > 0 { - if newLevel := p.AddSkillXP(player.SkillName(recipe.Skill), recipe.XP); newLevel > 0 { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d %s! ***", p.Level(player.SkillName(recipe.Skill)), recipe.Skill))) - } + g.awardSkillXP(sess, p, player.SkillName(recipe.Skill), recipe.XP) } g.AccountStore.SaveCharacter(p) @@ -477,7 +460,7 @@ func (g *Game) triggerPlankMake(sess *net.Session, p *player.Player, mod *ModDef } if p.Action != nil { - g.CancelAction(p) + g.cancelAction(p) } g.consumeJunkCost(p, mod) @@ -492,13 +475,9 @@ func (g *Game) triggerPlankMake(sess *net.Session, p *player.Player, mod *ModDef } p.SetInvSlot(freeSlot, &player.InventorySlot{ItemID: info.plankID, Quantity: 1}) - sciXP := int(mod.BaseXP) - if newLevel := p.AddSkillXP(player.Science, sciXP); newLevel > 0 { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d science! ***", p.Level(player.Science)))) - } - if newLevel := p.AddSkillXP(player.Construction, 10); newLevel > 0 { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d construction! ***", p.Level(player.Construction)))) - } + sciXP := mod.BaseXP + g.awardSkillXP(sess, p, player.Science, sciXP) + g.awardSkillXP(sess, p, player.Construction, 10) g.AccountStore.SaveCharacter(p) sess.WriteLine(fmt.Sprintf("You convert the log into %s.", info.name)) @@ -521,7 +500,7 @@ func (g *Game) triggerPlankMake(sess *net.Session, p *player.Player, mod *ModDef } if p.Action != nil { - g.CancelAction(p) + g.cancelAction(p) } g.consumeJunkCost(p, mod) @@ -540,14 +519,10 @@ func (g *Game) triggerPlankMake(sess *net.Session, p *player.Player, mod *ModDef processed++ } - sciXP := int(mod.BaseXP) * qty - if newLevel := p.AddSkillXP(player.Science, sciXP); newLevel > 0 { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d science! ***", p.Level(player.Science)))) - } + sciXP := mod.BaseXP * qty + g.awardSkillXP(sess, p, player.Science, sciXP) conXP := 10 * qty - if newLevel := p.AddSkillXP(player.Construction, conXP); newLevel > 0 { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d construction! ***", p.Level(player.Construction)))) - } + g.awardSkillXP(sess, p, player.Construction, conXP) g.AccountStore.SaveCharacter(p) sess.WriteLine(fmt.Sprintf("You convert %d logs into %s for %d credits.", processed, info.name, totalCost)) @@ -594,17 +569,15 @@ func (g *Game) triggerEnchant(sess *net.Session, p *player.Player, mod *ModDef, } if p.Action != nil { - g.CancelAction(p) + g.cancelAction(p) } g.consumeJunkCost(p, mod) inv.ItemID = outputID - sciXP := int(mod.BaseXP) - if newLevel := p.AddSkillXP(player.Science, sciXP); newLevel > 0 { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d science! ***", p.Level(player.Science)))) - } + sciXP := mod.BaseXP + g.awardSkillXP(sess, p, player.Science, sciXP) g.AccountStore.SaveCharacter(p) outputDef, _ := g.ItemStore.Load(outputID) @@ -637,7 +610,7 @@ func (g *Game) triggerChipBolts(sess *net.Session, p *player.Player, mod *ModDef } if p.Action != nil { - g.CancelAction(p) + g.cancelAction(p) } g.consumeJunkCost(p, mod) @@ -657,10 +630,8 @@ func (g *Game) triggerChipBolts(sess *net.Session, p *player.Player, mod *ModDef p.SetInvSlot(freeSlot, &player.InventorySlot{ItemID: chip.Output, Quantity: chip.Qty}) } - sciXP := int(mod.BaseXP) - if newLevel := p.AddSkillXP(player.Science, sciXP); newLevel > 0 { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d science! ***", p.Level(player.Science)))) - } + sciXP := mod.BaseXP + g.awardSkillXP(sess, p, player.Science, sciXP) g.AccountStore.SaveCharacter(p) inputDef, _ := g.ItemStore.Load(chip.Input) @@ -714,27 +685,21 @@ func (g *Game) scienceAttack(sess *net.Session, p *player.Player, mob *world.Mob mob.StartRegen() } - sciXP := int(mod.BaseXP) - hpXP := int(mod.BaseXP * 0.33) + sciXP := mod.BaseXP + hpXP := mod.BaseXP / 3 + if hpXP < 1 { + hpXP = 1 + } var gains []xpGain - var leveledUp []player.SkillName - if newLevel := p.AddSkillXP(player.Science, sciXP); newLevel > 0 { - leveledUp = append(leveledUp, player.Science) - } + g.awardSkillXP(sess, p, player.Science, sciXP) gains = append(gains, xpGain{string(player.Science), sciXP}) - if newLevel := p.AddSkillXP(player.Hitpoints, hpXP); newLevel > 0 { - leveledUp = append(leveledUp, player.Hitpoints) - } + g.awardSkillXP(sess, p, player.Hitpoints, hpXP) gains = append(gains, xpGain{string(player.Hitpoints), hpXP}) g.AccountStore.SaveCharacter(p) - for _, skill := range leveledUp { - sess.WriteLine(g.colorize(sess, "level_up", fmt.Sprintf("*** You are now level %d %s! ***", p.Level(skill), skill))) - } - mobName := mobDisplayName(mob, true) prefix := fmt.Sprintf(" %s hits %s for %s damage.", g.colorize(sess, "science_mod", mod.Name), -- cgit v1.2.3