aboutsummaryrefslogtreecommitdiff
path: root/internal/game/sys_assassin.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/sys_assassin.go')
-rw-r--r--internal/game/sys_assassin.go102
1 files changed, 1 insertions, 101 deletions
diff --git a/internal/game/sys_assassin.go b/internal/game/sys_assassin.go
index 65ddb7c..fc814ec 100644
--- a/internal/game/sys_assassin.go
+++ b/internal/game/sys_assassin.go
@@ -2,68 +2,12 @@ package game
import (
"fmt"
- "math/rand"
"thehouseoficarus/internal/net"
"thehouseoficarus/internal/player"
"thehouseoficarus/internal/world"
)
-type assassinTaskEntry struct {
- MobID string
- MinLevel int
- MaxLevel int
- MinCount int
- MaxCount int
- Weight int
-}
-
-var assassinTaskTable = []assassinTaskEntry{
- {"man", 1, 15, 10, 25, 8},
- {"cow", 1, 15, 10, 25, 8},
- {"slug", 1, 99, 15, 45, 15},
- {"drone", 15, 99, 20, 50, 12},
- {"crawler", 30, 99, 15, 40, 10},
- {"phantom", 45, 99, 10, 30, 8},
-}
-
-func (g *Game) assignAssassinTask(sess *net.Session, p *player.Player) {
- level := p.Level(player.Assassin)
- var eligible []assassinTaskEntry
- totalWeight := 0
- for _, entry := range assassinTaskTable {
- if level >= entry.MinLevel && level <= entry.MaxLevel {
- eligible = append(eligible, entry)
- totalWeight += entry.Weight
- }
- }
- if len(eligible) == 0 {
- sess.WriteLine("The Client shakes their head. \"Nothing available for your level.\"")
- return
- }
- roll := rand.Intn(totalWeight)
- var chosen assassinTaskEntry
- for _, entry := range eligible {
- roll -= entry.Weight
- if roll < 0 {
- chosen = entry
- break
- }
- }
- count := chosen.MinCount + rand.Intn(chosen.MaxCount-chosen.MinCount+1)
- g.setPlayerFlag(p, "assassin_task_mob", chosen.MobID)
- g.setPlayerFlag(p, "assassin_task_total", count)
- g.setPlayerFlag(p, "assassin_task_remaining", count)
- g.AccountStore.SaveCharacter(p)
-
- def, err := g.MobStore.LoadDef(chosen.MobID)
- name := chosen.MobID
- if err == nil {
- name = def.Name
- }
- sess.WriteLine(g.colorize(sess, "assassin_task", fmt.Sprintf("\"Your target: %d %ss. Get to work.\"", count, name)))
-}
-
func (g *Game) onAssassinKill(sess *net.Session, p *player.Player, mob *world.MobInstance) {
taskMob := getPlayerFlagString(p, "assassin_task_mob")
if taskMob == "" || taskMob != mob.DefID {
@@ -93,7 +37,7 @@ func (g *Game) onAssassinKill(sess *net.Session, p *player.Player, mob *world.Mo
rep += bonus
currentRep := getPlayerFlagInt(p, "assassin_reputation")
g.setPlayerFlag(p, "assassin_reputation", currentRep+rep)
- sess.WriteLine(g.colorize(sess, "assassin_task", fmt.Sprintf("*** Assassin task complete! ***")))
+ sess.WriteLine(g.colorize(sess, "assassin_task", "*** Assassin task complete! ***"))
if bonus > 0 {
sess.WriteLine(g.colorize(sess, "assassin_task", fmt.Sprintf(" Streak bonus! %d tasks in a row. +%d bonus reputation.", streak, bonus)))
}
@@ -110,50 +54,6 @@ func (g *Game) onAssassinKill(sess *net.Session, p *player.Player, mob *world.Mo
g.AccountStore.SaveCharacter(p)
}
-func (g *Game) skipAssassinTask(sess *net.Session, p *player.Player) {
- rep := getPlayerFlagInt(p, "assassin_reputation")
- if rep < 30 {
- sess.WriteLine("You don't have enough Reputation to skip. (Need 30, have " + fmt.Sprint(rep) + ")")
- return
- }
- g.setPlayerFlag(p, "assassin_reputation", rep-30)
- delete(p.Flags, "assassin_task_mob")
- g.setPlayerFlag(p, "assassin_task_remaining", 0)
- g.setPlayerFlag(p, "assassin_task_total", 0)
- g.setPlayerFlag(p, "assassin_streak", 0)
- g.AccountStore.SaveCharacter(p)
-}
-
-func (g *Game) extendAssassinTask(sess *net.Session, p *player.Player) {
- rep := getPlayerFlagInt(p, "assassin_reputation")
- if rep < 30 {
- sess.WriteLine("You don't have enough Reputation to extend. (Need 30, have " + fmt.Sprint(rep) + ")")
- return
- }
- taskMob := getPlayerFlagString(p, "assassin_task_mob")
- if taskMob == "" {
- sess.WriteLine("You don't have an active task to extend.")
- return
- }
- g.setPlayerFlag(p, "assassin_reputation", rep-30)
- total := getPlayerFlagInt(p, "assassin_task_total")
- remaining := getPlayerFlagInt(p, "assassin_task_remaining")
- extension := total / 2
- if extension < 5 {
- extension = 5
- }
- g.setPlayerFlag(p, "assassin_task_total", total+extension)
- g.setPlayerFlag(p, "assassin_task_remaining", remaining+extension)
- g.AccountStore.SaveCharacter(p)
-
- def, _ := g.MobStore.LoadDef(taskMob)
- name := taskMob
- if def != nil {
- name = def.Name
- }
- sess.WriteLine(fmt.Sprintf("Task extended by %d. Kill %d more %ss (%d total).", extension, remaining+extension, name, total+extension))
-}
-
func streakBonus(streak int) int {
if streak%1000 == 0 {
return 50