aboutsummaryrefslogtreecommitdiff
path: root/internal/object
diff options
context:
space:
mode:
Diffstat (limited to 'internal/object')
-rw-r--r--internal/object/item.go1
-rw-r--r--internal/object/object.go29
2 files changed, 26 insertions, 4 deletions
diff --git a/internal/object/item.go b/internal/object/item.go
index b0865d6..b90432d 100644
--- a/internal/object/item.go
+++ b/internal/object/item.go
@@ -91,6 +91,7 @@ type ItemDef struct {
PotionEffect string `yaml:"potion_effect"`
PotionBonus int `yaml:"potion_bonus"`
PotionDuration float64 `yaml:"potion_duration"`
+ Recoverable bool `yaml:"recoverable"`
}
type CraftList []CraftDef
diff --git a/internal/object/object.go b/internal/object/object.go
index 826a315..12e5585 100644
--- a/internal/object/object.go
+++ b/internal/object/object.go
@@ -24,15 +24,34 @@ type ObjectDef struct {
StealSpeed float64 `yaml:"steal_speed"`
GuardMob string `yaml:"guard_mob"`
- Gather *action.GatherConfig `yaml:"gather,omitempty"`
- Talk *action.TalkConfig `yaml:"talk,omitempty"`
- Use *action.UseConfig `yaml:"use,omitempty"`
+ Gather *action.GatherConfig `yaml:"gather,omitempty"`
+ Talk *action.TalkConfig `yaml:"talk,omitempty"`
+ Use *action.UseConfig `yaml:"use,omitempty"`
+ Safespot *SafespotConfig `yaml:"safespot,omitempty"`
+}
+
+type SafespotConfig struct {
+ Tier int `yaml:"tier"`
+ MaxBlockSize string `yaml:"max_block_size"`
+ MaxOccupants int `yaml:"max_occupants"`
+ UnsafeChance float64 `yaml:"unsafe_chance"`
+ DecayTicks float64 `yaml:"decay_ticks"`
+ DecayChance float64 `yaml:"decay_chance"`
+ RespawnOnHide bool `yaml:"respawn_on_hide"`
+ RespawnTicks float64 `yaml:"respawn_ticks"`
+ Levels []SafespotLevel `yaml:"levels"`
+}
+
+type SafespotLevel struct {
+ Message string `yaml:"message"`
+ DegradeMessage string `yaml:"degrade_message"`
}
func (d *ObjectDef) IsGatherable() bool { return d.Gather != nil }
func (d *ObjectDef) IsTalkable() bool { return d.Talk != nil }
func (d *ObjectDef) IsUsable() bool { return d.Use != nil }
-func (d *ObjectDef) IsInteractable() bool { return d.Gather != nil || d.Talk != nil || d.Use != nil }
+func (d *ObjectDef) IsSafespot() bool { return d.Safespot != nil }
+func (d *ObjectDef) IsInteractable() bool { return d.Gather != nil || d.Talk != nil || d.Use != nil || d.Safespot != nil }
func (d *ObjectDef) BehaviorType() string {
switch {
@@ -42,6 +61,8 @@ func (d *ObjectDef) BehaviorType() string {
return "talk"
case d.Use != nil:
return "use"
+ case d.Safespot != nil:
+ return "safespot"
}
return ""
}