(field string, valueArgs []string, user *users.UserRecord, cfg ZombieConfig)
| 188 | } |
| 189 | |
| 190 | func (m *ZombieModule) handleSet(field string, valueArgs []string, user *users.UserRecord, cfg ZombieConfig) (bool, error) { |
| 191 | value := strings.Join(valueArgs, ` `) |
| 192 | |
| 193 | switch field { |
| 194 | case `combat`: |
| 195 | name := value |
| 196 | if name == `all` { |
| 197 | name = `*` |
| 198 | } |
| 199 | if !containsString(cfg.CombatTargets, name) { |
| 200 | cfg.CombatTargets = append(cfg.CombatTargets, name) |
| 201 | } |
| 202 | m.configs[user.UserId] = cfg |
| 203 | user.SendText(fmt.Sprintf(`Combat target <ansi fg="yellow">%s</ansi> added.`, name)) |
| 204 | |
| 205 | case `roam`: |
| 206 | radius, err := strconv.Atoi(value) |
| 207 | if err != nil || radius < 0 { |
| 208 | user.SendText(`Roam radius must be a non-negative integer.`) |
| 209 | return true, nil |
| 210 | } |
| 211 | if maxRoam, ok := m.plug.Config.Get(`MaximumRoam`).(int); ok && maxRoam > 0 && radius > maxRoam { |
| 212 | user.SendText(fmt.Sprintf(`Roam radius cannot exceed <ansi fg="yellow">%d</ansi> on this server.`, maxRoam)) |
| 213 | return true, nil |
| 214 | } |
| 215 | cfg.RoamRadius = radius |
| 216 | m.configs[user.UserId] = cfg |
| 217 | user.SendText(fmt.Sprintf(`Roam radius set to <ansi fg="yellow">%d</ansi>.`, radius)) |
| 218 | |
| 219 | case `rest`: |
| 220 | pct, err := strconv.Atoi(value) |
| 221 | if err != nil || pct < 1 || pct > 99 { |
| 222 | user.SendText(`Rest threshold must be an integer between 1 and 99.`) |
| 223 | return true, nil |
| 224 | } |
| 225 | cfg.RestThreshold = pct |
| 226 | m.configs[user.UserId] = cfg |
| 227 | user.SendText(fmt.Sprintf(`Rest threshold set to <ansi fg="yellow">%d%%</ansi>.`, pct)) |
| 228 | |
| 229 | case `loot`: |
| 230 | name := value |
| 231 | if name == `all` { |
| 232 | name = `*` |
| 233 | } |
| 234 | if !containsString(cfg.LootTargets, name) { |
| 235 | cfg.LootTargets = append(cfg.LootTargets, name) |
| 236 | } |
| 237 | m.configs[user.UserId] = cfg |
| 238 | user.SendText(fmt.Sprintf(`Loot target <ansi fg="yellow">%s</ansi> added.`, name)) |
| 239 | |
| 240 | default: |
| 241 | user.SendText(`Unknown setting. Valid settings: combat, roam, rest, loot`) |
| 242 | } |
| 243 | |
| 244 | return true, nil |
| 245 | } |
| 246 | |
| 247 | func (m *ZombieModule) handleUnset(field string, valueArgs []string, user *users.UserRecord, cfg ZombieConfig) (bool, error) { |
no test coverage detected