@@ -85,6 +85,7 @@ public override void _Ready()
8585 . Instantiate < EnemyPuppet > ( ) ;
8686 AddChild ( Enemy ) ;
8787 Enemy . Defeated += CheckBattleStatus ;
88+ AddEnemyEffects ( ) ;
8889
8990 CM . PrepChart ( _curSong ) ;
9091 CD . Prep ( ) ;
@@ -200,20 +201,22 @@ private void CheckBattleStatus(PuppetTemplate puppet)
200201 {
201202 if ( puppet == Player )
202203 {
203- LostBattle ( ) ;
204+ BattleLost ( ) ;
204205 return ;
205206 }
207+ else if ( puppet == Enemy )
208+ BattleWon ( ) ; //will have to adjust this to account for when we have multiple enemies at once
209+ }
206210
207- //will have to adjust this to account for when we have multiple enemies at once
208- if ( puppet == Enemy )
209- {
210- Audio . StreamPaused = true ;
211- GD . Print ( "Enemy is dead" ) ;
212- ShowRewardSelection ( 3 ) ;
213- }
211+ private void BattleWon ( )
212+ {
213+ Audio . StreamPaused = true ;
214+ GD . Print ( "Enemy is dead" ) ;
215+ CleanUpRelics ( ) ;
216+ ShowRewardSelection ( 3 ) ;
214217 }
215218
216- private void LostBattle ( )
219+ private void BattleLost ( )
217220 {
218221 GD . Print ( "Player is Dead" ) ;
219222 Audio . StreamPaused = true ;
@@ -241,21 +244,45 @@ private void ShowRewardSelection(int amount)
241244 private delegate void ChartLoopHandler ( BattleDirector BD ) ;
242245 private event ChartLoopHandler ChartLooped ;
243246
247+ private void AddEvent ( IBattleEvent bEvent )
248+ {
249+ switch ( bEvent . GetTrigger ( ) ) //TODO: Look into a way to get eventhandler from string
250+ {
251+ case BattleEffectTrigger . NotePlaced :
252+ NotePlaced += bEvent . OnTrigger ;
253+ break ;
254+ case BattleEffectTrigger . OnLoop :
255+ ChartLooped += bEvent . OnTrigger ;
256+ break ;
257+ }
258+ }
259+
260+ private void AddEnemyEffects ( )
261+ {
262+ foreach ( var effect in Enemy . GetBattleEvents ( ) )
263+ {
264+ AddEvent ( effect ) ;
265+ }
266+ }
267+
244268 private void EventizeRelics ( )
245269 {
246270 foreach ( var relic in Player . Stats . CurRelics )
247271 {
248272 foreach ( var effect in relic . Effects )
249273 {
250- switch ( effect . GetTrigger ( ) ) //TODO: Look into a way to get eventhandler from string
251- {
252- case BattleEffectTrigger . NotePlaced :
253- NotePlaced += effect . OnTrigger ;
254- break ;
255- case BattleEffectTrigger . OnLoop :
256- ChartLooped += effect . OnTrigger ;
257- break ;
258- }
274+ AddEvent ( effect ) ;
275+ }
276+ }
277+ }
278+
279+ private void CleanUpRelics ( )
280+ {
281+ foreach ( var relic in Player . Stats . CurRelics )
282+ {
283+ foreach ( var effect in relic . Effects )
284+ {
285+ effect . OnBattleEnd ( ) ;
259286 }
260287 }
261288 }
0 commit comments