VG_STATIC void ent_objective_pass( world_instance *world,
ent_objective *objective ){
if( objective->id_next ){
- world->challenge_timer += objective->filter;
+ world_static.challenge_timer += objective->filter;
u32 index = mdl_entity_id_id( objective->id_next );
ent_objective *next = mdl_arritm( &world->ent_objective, index );
- world->challenge_target = next;
+ world_static.challenge_target = next;
+ objective->flags |= k_ent_objective_passed;
if( next->filter & k_ent_objective_filter_passthrough )
ent_objective_pass( world, next );
}
else {
vg_success( "NYU Film school graduate SUCKAH\n" );
- world->challenge_target = NULL;
- world->challenge_timer = 0.0f;
+ world_static.challenge_target = NULL;
+ world_static.challenge_timer = 0.0f;
if( objective->id_win ){
ent_call call;
ent_objective *objective = mdl_arritm( &world->ent_objective, index );
if( call->function == 0 ){
- if( objective->flags & k_ent_objective_hidden ) return;
+ if( objective->flags & (k_ent_objective_hidden|
+ k_ent_objective_passed)) return;
- if( world->challenge_target ){
- if( (world->challenge_target == objective) &&
+ if( world_static.challenge_target ){
+ if( (world_static.challenge_target == objective) &&
ent_objective_check_filter( objective )){
ent_objective_pass( world, objective );
}
else {
vg_error( "womp womp\n" );
- world->challenge_target = NULL;
- world->challenge_timer = 0.0f;
+ world_static.challenge_target = NULL;
+ world_static.challenge_timer = 0.0f;
}
}
}
-#if 0
- else if( call->function == 1 ){
- if( objective->flags & k_ent_objective_hidden ) return;
-
- vg_info( "begin the challenge\n" );
- world->challenge_timer = 0.0f;
- ent_objective_pass( world, objective );
- }
-#endif
else if( call->function == 2 ){
objective->flags &= ~k_ent_objective_hidden;