X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=ent_region.c;h=44d49a096637bff1f4e6777aedb38e7820fcf12f;hb=888e62fcd8f9777cee774fbb8fab2e52660303a7;hp=eecf22d05ff65d1b4846bdb324c56733ed0c2b33;hpb=6d3a4c99f0223a4849e1fd2beab937d496800e2c;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/ent_region.c b/ent_region.c index eecf22d..44d49a0 100644 --- a/ent_region.c +++ b/ent_region.c @@ -62,6 +62,9 @@ static void ent_region_call( world_instance *world, ent_call *call ){ * reevaluate all achievements to calculate the compiled achievement */ static void ent_region_re_eval( world_instance *world ){ + u32 world_total = k_ent_route_flag_achieve_gold | + k_ent_route_flag_achieve_silver; + for( u32 i=0; ient_region); i ++ ){ ent_region *region = mdl_arritm(&world->ent_region, i); @@ -109,5 +112,39 @@ static void ent_region_re_eval( world_instance *world ){ } region->flags = combined; + world_total &= combined; + + /* run unlock triggers. v105+ */ + if( world->meta.info.version >= 105 ){ + if( region->flags & (k_ent_route_flag_achieve_gold| + k_ent_route_flag_achieve_silver) ){ + if( region->target0[0] ){ + ent_call call; + call.data = NULL; + call.id = region->target0[0]; + call.function = region->target0[1]; + entity_call( world, &call ); + } + } + } + } + + u32 instance_id = world - world_static.instances; + + if( world_static.instance_addons[instance_id]->flags & ADDON_REG_MTZERO ){ + if( world_total & k_ent_route_flag_achieve_gold ){ + steam_set_achievement( "MTZERO_GOLD" ); + steam_store_achievements(); + } + + if( world_total & k_ent_route_flag_achieve_silver ){ + steam_set_achievement( "MTZERO_SILVER" ); + steam_store_achievements(); + } + } + + if( world_static.instance_addons[instance_id]->flags & ADDON_REG_CITY ){ + steam_set_achievement( "CITY_COMPLETE" ); + steam_store_achievements(); } }