diff options
Diffstat (limited to 'internal/world')
| -rw-r--r-- | internal/world/mob.go | 85 | ||||
| -rw-r--r-- | internal/world/objects.go | 4 |
2 files changed, 50 insertions, 39 deletions
diff --git a/internal/world/mob.go b/internal/world/mob.go index 9ca1a45..ec7db36 100644 --- a/internal/world/mob.go +++ b/internal/world/mob.go @@ -56,6 +56,7 @@ type MobDef struct { AssassinLevel int `yaml:"assassin_level"` FinishingBlow string `yaml:"finishing_blow"` DamageWithout string `yaml:"damage_without"` + Size string `yaml:"size"` Talk *action.TalkConfig `yaml:"talk,omitempty"` } @@ -106,12 +107,56 @@ type MobInstance struct { AssassinLevel int FinishingBlow string DamageWithout string + Size string TalkConfig *action.TalkConfig } func (m *MobInstance) IsTalkable() bool { return m.TalkConfig != nil } +func NewMobInstance(def *MobDef, instanceID string, roomID int, wanderRooms []int, wanderInterval float64) *MobInstance { + return &MobInstance{ + InstanceID: instanceID, + DefID: def.ID, + Name: def.Name, + HP: def.HP, + MaxHP: def.HP, + Attack: def.Attack, + Strength: def.Strength, + Defense: def.Defense, + Ranged: def.Ranged, + Science: def.Science, + Speed: def.Speed, + Aggressive: def.Aggressive, + Protected: def.Protected, + Unique: def.Unique, + RespawnTicks: def.RespawnTicks, + RoomID: roomID, + HomeRoomID: roomID, + WanderRooms: wanderRooms, + WanderInterval: wanderInterval, + Drops: def.Drops, + AttackBonus: def.AttackBonus, + StrengthBonus: def.StrengthBonus, + AttackType: def.AttackType, + StabDefense: def.StabDefense, + SlashDefense: def.SlashDefense, + CrushDefense: def.CrushDefense, + ScienceDefense: def.ScienceDefense, + RangedDefense: def.RangedDefense, + Weakness: def.Weakness, + StealTable: def.StealTable, + StealLevel: def.StealLevel, + StealXP: def.StealXP, + StealSpeed: def.StealSpeed, + AssassinLevel: def.AssassinLevel, + FinishingBlow: def.FinishingBlow, + DamageWithout: def.DamageWithout, + Size: def.Size, + TalkConfig: def.Talk, + } +} + const ( MatchNone = 0 MatchPrefix = 1 @@ -276,45 +321,7 @@ func (s *MobStore) SeedMobs(roomID int, entries []RoomMob) { if _, exists := s.instances[instID]; exists { continue } - inst := &MobInstance{ - InstanceID: instID, - DefID: defID, - Name: dw.def.Name, - HP: dw.def.HP, - MaxHP: dw.def.HP, - Attack: dw.def.Attack, - Strength: dw.def.Strength, - Defense: dw.def.Defense, - Ranged: dw.def.Ranged, - Science: dw.def.Science, - Speed: dw.def.Speed, - Aggressive: dw.def.Aggressive, - Protected: dw.def.Protected, - Unique: dw.def.Unique, - RespawnTicks: dw.def.RespawnTicks, - WanderRooms: dw.rm.WanderRooms, - WanderInterval: dw.rm.WanderInterval, - RoomID: roomID, - HomeRoomID: roomID, - Drops: dw.def.Drops, - AttackBonus: dw.def.AttackBonus, - StrengthBonus: dw.def.StrengthBonus, - AttackType: dw.def.AttackType, - StabDefense: dw.def.StabDefense, - SlashDefense: dw.def.SlashDefense, - CrushDefense: dw.def.CrushDefense, - ScienceDefense: dw.def.ScienceDefense, - RangedDefense: dw.def.RangedDefense, - Weakness: dw.def.Weakness, - StealTable: dw.def.StealTable, - StealLevel: dw.def.StealLevel, - StealXP: dw.def.StealXP, - StealSpeed: dw.def.StealSpeed, - AssassinLevel: dw.def.AssassinLevel, - FinishingBlow: dw.def.FinishingBlow, - DamageWithout: dw.def.DamageWithout, - TalkConfig: dw.def.Talk, - } + inst := NewMobInstance(dw.def, instID, roomID, dw.rm.WanderRooms, dw.rm.WanderInterval) inst.IdleDescription = pickIdleDescription(dw.def.IdleDescriptions) s.instances[instID] = inst } diff --git a/internal/world/objects.go b/internal/world/objects.go index ae2586a..bf4b592 100644 --- a/internal/world/objects.go +++ b/internal/world/objects.go @@ -23,6 +23,10 @@ type ObjState struct { SharedMax float64 SharedTimer int Quality float64 + + SafespotLevel int + SafespotTicksAtLevel int + SafespotOccupants []string } type ObjMove struct { |
