MCPcopy Create free account
hub / github.com/GoMudEngine/GoMud / UpdateAttackMessage

Function UpdateAttackMessage

internal/items/admin.go:71–127  ·  view source on GitHub ↗
(subtype ItemSubType, intensity Intensity, proximity, target string, index int, message string)

Source from the content-addressed store, hash-verified

69}
70
71func UpdateAttackMessage(subtype ItemSubType, intensity Intensity, proximity, target string, index int, message string) error {
72 group, ok := attackMessages[subtype]
73 if !ok {
74 return fmt.Errorf("unknown subtype: %s", subtype)
75 }
76
77 opts, ok := group.Options[intensity]
78 if !ok {
79 return fmt.Errorf("unknown intensity: %s", intensity)
80 }
81
82 update := func(sl MessageOptions, i int) (MessageOptions, error) {
83 if i < 0 || i >= len(sl) {
84 return nil, fmt.Errorf("index %d out of range (length %d)", i, len(sl))
85 }
86 sl[i] = ItemMessage(message)
87 return sl, nil
88 }
89
90 var err error
91 switch proximity {
92 case "together":
93 switch target {
94 case "toattacker":
95 opts.Together.ToAttacker, err = update(opts.Together.ToAttacker, index)
96 case "todefender":
97 opts.Together.ToDefender, err = update(opts.Together.ToDefender, index)
98 case "toroom":
99 opts.Together.ToRoom, err = update(opts.Together.ToRoom, index)
100 default:
101 return fmt.Errorf("unknown together target: %s", target)
102 }
103 case "separate":
104 switch target {
105 case "toattacker":
106 opts.Separate.ToAttacker, err = update(opts.Separate.ToAttacker, index)
107 case "todefender":
108 opts.Separate.ToDefender, err = update(opts.Separate.ToDefender, index)
109 case "toattackerroom":
110 opts.Separate.ToAttackerRoom, err = update(opts.Separate.ToAttackerRoom, index)
111 case "todefenderroom":
112 opts.Separate.ToDefenderRoom, err = update(opts.Separate.ToDefenderRoom, index)
113 default:
114 return fmt.Errorf("unknown separate target: %s", target)
115 }
116 default:
117 return fmt.Errorf("unknown proximity: %s (expected together or separate)", proximity)
118 }
119
120 if err != nil {
121 return err
122 }
123
124 group.Options[intensity] = opts
125
126 return SaveAttackMessageGroup(group)
127}
128

Callers 1

Calls 3

ItemMessageTypeAlias · 0.85
SaveAttackMessageGroupFunction · 0.85
updateFunction · 0.50

Tested by

no test coverage detected