aboutsummaryrefslogtreecommitdiff
path: root/internal/game/cmd_trigger.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-19 18:20:26 -0400
committerhistoria <[not public]>2026-06-19 18:20:26 -0400
commit0ea4eec5dd2122c6704216971eb1249276297867 (patch)
tree430fbbef04e837820f1d031c190f52ecd6112e25 /internal/game/cmd_trigger.go
parent3a58125d14bb307f861b38c6c5b0a63babde7e08 (diff)
downloadthehouseoficarus-0ea4eec5dd2122c6704216971eb1249276297867.tar.gz
shop fixes, 'toggle' completely removed, movement speed increased
Diffstat (limited to 'internal/game/cmd_trigger.go')
-rw-r--r--internal/game/cmd_trigger.go121
1 files changed, 43 insertions, 78 deletions
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),