@@ -13,6 +13,7 @@ import {
13
13
import {
14
14
GameStateEquipItemAction ,
15
15
GameStateHealPartyAction ,
16
+ GameStateHurtPartyAction ,
16
17
GameStateUnequipItemAction ,
17
18
} from '../game-state/game-state.actions' ;
18
19
import { Armor , Item , Magic , Weapon } from '../item' ;
@@ -101,6 +102,7 @@ type EntityReducerTypes =
101
102
| GameStateEquipItemAction
102
103
| GameStateUnequipItemAction
103
104
| GameStateHealPartyAction
105
+ | GameStateHurtPartyAction
104
106
| CombatVictoryAction ;
105
107
106
108
export function entityReducer (
@@ -152,6 +154,23 @@ export function entityReducer(
152
154
return updateBeingsResult ;
153
155
} ) ;
154
156
}
157
+ case GameStateHurtPartyAction . typeId : {
158
+ const result : EntityStateRecord = state ;
159
+ const partyAction : GameStateHurtPartyAction = action ;
160
+ return result . updateIn ( [ 'beings' ] , ( beings : EntityCollectionRecord ) => {
161
+ let updateBeingsResult = beings ;
162
+ const damage = action . payload . damage ;
163
+ partyAction . payload . partyIds . forEach ( ( partyMemberId : string ) => {
164
+ const newHp = state . beings . byId . get ( partyMemberId ) . hp - damage ;
165
+ updateBeingsResult = mergeEntityInCollection (
166
+ updateBeingsResult ,
167
+ { hp : newHp } ,
168
+ partyMemberId
169
+ ) ;
170
+ } ) ;
171
+ return updateBeingsResult ;
172
+ } ) ;
173
+ }
155
174
case GameStateEquipItemAction . typeId : {
156
175
let result : EntityStateRecord = state ;
157
176
const current : Entity = state . beings . byId . get ( action . payload . entityId ) ;
0 commit comments