return 0;
}
-enum escript_script_id
+static bool _skaterift_script_hub_setup( enum escript_event ev, const char *inf )
{
- k_escript_script_id_test = 0,
- k_escript_script_id_intro,
- k_escript_script_id_ch1s2,
- k_escript_script_id_ch1s3,
- k_escript_script_id_ch1s3b,
- k_escript_script_id_ch1s4,
- k_escript_script_id_ch1s5,
- k_escript_script_id_ch1s6a,
- k_escript_script_id_ch2s1,
- k_escript_script_id_ch2s2,
- k_escript_script_id_ch2s3a,
- k_escript_script_id_ch2s4,
- k_escript_script_id_ch2e1,
- k_escript_script_id_ch2s5,
- k_escript_script_id_ch2s6,
- k_escript_script_id_ch3s1,
- k_escript_script_id_ch3s2,
- k_escript_script_id_ch3s3,
- k_escript_script_id_ch4s1a,
- k_escript_script_id_ch4s1, /* NOTE: 1 and 2 are backwards in order (accident) */
- k_escript_script_id_ch4s2, k_escript_script_id_ch4s3,
- k_escript_script_id_max
-};
+ if( ev == k_escript_event_call )
+ {
+ world_instance *world = &_world.main;
+
+ bool unlock_mtzero = _skaterift_script_check_unlocked( k_escript_script_id_ch2s1 ),
+ unlock_city = _skaterift_script_check_unlocked( k_escript_script_id_ch3s1 ),
+ unlock_valley = _skaterift_script_check_unlocked( k_escript_script_id_ch4s1a );
+
+ for( u32 i=0; i<af_arrcount( &world->ent_prop ); i ++ )
+ {
+ ent_prop *prop = af_arritm( &world->ent_prop, i );
+
+ if( AF_STR_EQ( &world->meta.af, prop->pstr_alias, "MARC" ) )
+ if( skaterift.achievements & 0x1 )
+ prop->flags &= ~0x1;
+
+ if( AF_STR_EQ( &world->meta.af, prop->pstr_alias, "ALBERT" ) )
+ if( skaterift.achievements & 0x2 )
+ prop->flags &= ~0x1;
+
+ if( AF_STR_EQ( &world->meta.af, prop->pstr_alias, "JANET" ) )
+ if( skaterift.achievements & 0x4 )
+ prop->flags &= ~0x1;
+
+ if( AF_STR_EQ( &world->meta.af, prop->pstr_alias, "BERNADETTA" ) )
+ if( skaterift.achievements & 0x8 )
+ prop->flags &= ~0x1;
+
+ if( AF_STR_EQ( &world->meta.af, prop->pstr_alias, "main_island_block" ) )
+ if( unlock_mtzero )
+ prop->flags |= k_prop_flag_hidden;
+
+ if( AF_STR_EQ( &world->meta.af, prop->pstr_alias, "mtzero_block" ) )
+ if( unlock_mtzero )
+ prop->flags |= k_prop_flag_hidden;
+
+ if( AF_STR_EQ( &world->meta.af, prop->pstr_alias, "city_block" ) )
+ if( unlock_city )
+ prop->flags |= k_prop_flag_hidden;
+
+ if( AF_STR_EQ( &world->meta.af, prop->pstr_alias, "valley_block" ) )
+ if( unlock_valley )
+ prop->flags |= k_prop_flag_hidden;
+ }
+ return 1;
+ }
+
+ return 0;
+}
struct
{
[k_escript_script_id_ch4s1] = { "ch4s1", _skaterift_script_ch4s1, SCRIPT_FLAG_STORY_EVENT },
[k_escript_script_id_ch4s2] = { "ch4s2", _skaterift_script_ch4s2, SCRIPT_FLAG_STORY_EVENT },
[k_escript_script_id_ch4s3] = { "ch4s3", _skaterift_script_ch4s3, SCRIPT_FLAG_STORY_EVENT },
+ [k_escript_script_id_hub_setup] = { "hub_setup", _skaterift_script_hub_setup },
};
+bool _skaterift_script_check_unlocked( enum escript_script_id id )
+{
+ struct script_info *info = &_script_infos[ id ];
+ return info->availible;
+}
+
struct script_info *skaterift_script_get_info( const char *alias )
{
for( u32 i=0; i<k_escript_script_id_max; i ++ )
{
vg_msg_frame( sav, info->alias );
{
- vg_msg_wkvnum( sav, "viewed_time",
- k_vg_msg_u64, 1, &info->viewed_time );
+ vg_msg_wkvnum( sav, "viewed_time", k_vg_msg_u64, 1, &info->viewed_time );
u8 availible = info->availible;
vg_msg_wkvnum( sav, "availible", k_vg_msg_u8, 1, &availible );
{
if( vg_msg_seekframe( sav, info->alias ) )
{
- vg_msg_getkvintg( sav, "viewed_time", k_vg_msg_u64,
- &info->viewed_time, NULL );
+ vg_msg_getkvintg( sav, "viewed_time", k_vg_msg_u64, &info->viewed_time, NULL );
u8 availible;
vg_msg_getkvintg( sav, "availible", k_vg_msg_u8, &availible, NULL );
{
if( _script.script_id != k_escript_script_id_max )
{
- if( _script_infos[ _script.script_id ].jump( k_escript_event_update,
- NULL ) )
+ if( _script_infos[ _script.script_id ].jump( k_escript_event_update, NULL ) )
_script.script_id = k_escript_script_id_max;
}
}
{
if( _script.script_id != k_escript_script_id_max )
{
- if( _script_infos[ _script.script_id ].jump(
- k_escript_event_cutscene_marker, marker) )
+ if( _script_infos[ _script.script_id ].jump( k_escript_event_cutscene_marker, marker) )
_script.script_id = k_escript_script_id_max;
}
}
void _skaterift_script_init(void)
{
- vg_console_reg_cmd( "script", _skaterift_script_hook,
- _skaterift_script_hook_poll );
+ vg_console_reg_cmd( "script", _skaterift_script_hook, _skaterift_script_hook_poll );
}
void _skaterift_script_unlink_all_challenges(void)
struct script_info *skaterift_script_get_info( const char *alias );
void _skaterift_script_unlink_all_challenges(void);
+
+enum escript_script_id
+{
+ k_escript_script_id_test = 0,
+ k_escript_script_id_intro,
+ k_escript_script_id_ch1s2,
+ k_escript_script_id_ch1s3,
+ k_escript_script_id_ch1s3b,
+ k_escript_script_id_ch1s4,
+ k_escript_script_id_ch1s5,
+ k_escript_script_id_ch1s6a,
+ k_escript_script_id_ch2s1,
+ k_escript_script_id_ch2s2,
+ k_escript_script_id_ch2s3a,
+ k_escript_script_id_ch2s4,
+ k_escript_script_id_ch2e1,
+ k_escript_script_id_ch2s5,
+ k_escript_script_id_ch2s6,
+ k_escript_script_id_ch3s1,
+ k_escript_script_id_ch3s2,
+ k_escript_script_id_ch3s3,
+ k_escript_script_id_ch4s1a,
+ k_escript_script_id_ch4s1, /* NOTE: 1 and 2 are backwards in order (accident) */
+ k_escript_script_id_ch4s2,
+ k_escript_script_id_ch4s3,
+ k_escript_script_id_hub_setup,
+ k_escript_script_id_max
+};
+bool _skaterift_script_check_unlocked( enum escript_script_id id );