From 46335d281feaf3bf04641ddb640869520d629af7 Mon Sep 17 00:00:00 2001 From: hgn Date: Sun, 23 Mar 2025 15:26:18 +0000 Subject: [PATCH] incorporate board maker into world --- content_skaterift/maps/mp_mtzero/before.mdl | Bin 11306264 -> 11306744 bytes content_skaterift/maps/mp_mtzero/main.mdl | Bin 16354536 -> 16355016 bytes src/scripts/generic.c | 40 ++++++++++++++++++++ src/scripts/mtzero.c | 6 ++- src/scripts/tutorial_island.c | 19 ++-------- src/skaterift_script.c | 4 +- src/world_load.c | 6 --- 7 files changed, 50 insertions(+), 25 deletions(-) diff --git a/content_skaterift/maps/mp_mtzero/before.mdl b/content_skaterift/maps/mp_mtzero/before.mdl index 861d53402a547861084b7b31222229bd9826a3ca..e4568af8d3dc50933251af6673dc492aefab48f6 100644 GIT binary patch delta 2269 zcmYk+ZBSHI7{Kv!7Z!FAO+-T$k>y22P0`8}lz^l%E5X#1l$MoUVPV;YWhpI8Eekaf z*OQ8t`BJ8$HI6%q)|fceNTrGPg6UK=*`zj3)bzppQ2o!{rRmK4p7Y%Eocrv3gVuFN zjJKMP7&m4ln$m^Pgb?+9pUYEGPZk=Tf!riRu?#$ANnUVNh&WbF2)!6+`pUdu6 z8+!wRBtuzy;6016wOxpQfpZDj*5f49BH{G-ZEjb+U+q<+nA#X-Ra@e6J8f)m`Ip&z z&L!fOOxBW&nJ0u8DRZ@ioa5((FoyT4KIP>#4i5FvMa@7q0jgHvb~&8BP;Ek&+@M(u zOS@#7X36Qf7`po6@J{dIDrdRh^^8-UeMyM^Y7W zQOd4?;hjEjgWqZMcpbE9{auJk*46c>YpJ#SD{U^1!?~38KcvTCF|__6*U`oFrw|eB z8W!GJZm)6r>>M!4sO2)RgzDmURaEvpww^)qd%ASQ%iDD69jxiEtnZG>EA4K#(^H}D zD1S((*7pm~dVOw(%d^Bwt!#*#6=8|!&>CcQMB?x%RhvY<#iF;WwU<}3 z*!mXbYa=>?Wg~l9w7Ih2SVCfB>VMa&CnY?5^^La5x?}TG7g4n?Ocd7U&@Qz*|5~Eh z$j7e6etG>^%cOj(5K;P9EyM!y=y2{JH-+%YR%ZGOe@d)vm#H2D6elx!-82E_W;od^h=H^blaq9h?Us{T$Roq^Y*CF`d#*HQitG@PVhR8H| z`J3@-is>HD?`3yq5nbI`@#@X0k>iUhJT_xM!ML7{vgn@V_@QZ`^^bRi)+g=?sCC0# zX>xnF-s!W@bUQSSxup7*TvC14>hZ*-EJI2*8fth1&vL0@fr+>KqQQaLNrV; zBL@8ti~bmZJ1`J&7=(BX#t__z1PnzYEJ(sIBx5*IU_~m@kd6$Dz(|ZjCPrfn#^NrF z!+2z20w&^a+=F{D3HM<#rXU+Rn2Kr0#r?=bJ__&vrlSxK;vqbY8F&OU@hBd{#Tg%|M>R^w&7f+noNTCBsXSdV6GKnpe^fK8Bi4V$qA rThWSb*pAon26o_0?8GkY#vZ(dx3L%RU?2A50NQY{y)ORHzPf(_qcpIP delta 1969 zcmX}se^Aq99KiAC8B7NF3lWhavMHjL3H>mGAW-{(Kas>l#bCl`#4NkBJN2%Uv%1qRtM~Ui@Znyc=f~%>&$jQL<6*-w zLWnA_$LTJuVig#L&FQg*JKLHUnd5qn3lYKTaFiFj3d(I>yT@sB zX@zyo&9R1uCz`)D8=MX0~&GB{G|KUv>5DstFdF1x!_ z`$mPmxxRN;RpD_JJKZG}TIWbLC&(Oh>p!n53yK+;=h!AP&1St-rLCxpiYH^|2H*am zITkfMAuoFB+1l`oj0~~Qdg@xP%~fXcR#;|C6TZC(DN+R|o(XPasKWLMzCRO>H^vOL z3K8<8kq}ut7VY+=snaK-WuCfzVu5u8HI~IO!qN~ZOksWInw ztGtdaYE}n_>i3Su(0(FL{|5PL(}l*+kltOBitB7tYc80E)$!3=;m3L0#y=Kyu5*VR zr)(Ez%3O8i;$-4)#4HteNsIIK*g(ux-|O+Q9w%MaPRfZ{>Yx^VH!uGpWwrX|$85Pp z4Y-mm52z(q?n}R#eRZC%=c+>*&REr=u8G=I-!+j}pX^E^-t9^<w2awFm(r} zux_m`rCY0W>Ty?hlA+70&gqFq`qB6sT6&=#H|z1F9`EWg<|i#XU5_<-Jgmp-dJMg( zWmB~1bKdmzH{Rwp1S{*kYjUXX(Y>=F(xOg3XqU;pnm-STPEtk$^Es#8`~OcszxtF#*qDB9f4dXYm}K#|xN* z7cm(xAqA;;8EHtzE66}5reG?j;Z?kb*YO6jFdZ{66SFWIbC8X>$ibVK2km*z$6Hu{ zJS@Z_EJi+-;B6G35H>7D5sG0)2}@MU{W)K`a={|`*VKjHuY diff --git a/content_skaterift/maps/mp_mtzero/main.mdl b/content_skaterift/maps/mp_mtzero/main.mdl index 20e6aa9f518d1fef45404f1d01ef04f3262ba8a7..c0f0ccf519f0a4e4cc6f4a6be09b8ae41546805c 100644 GIT binary patch delta 2452 zcmYk+33yc16~OU(-(+Tz5VCE1+7s6Lc=5(l1V0+bTUD3 zfyg3MSu#HLN;PeuQW3XW&_SR@3)HkMMp`#ighC;U6k2N={oMX{CictyzTcel?m6$i z`(EBl&!)5Xu8yH>s>n)D4or^yad6zgM??AJ=x*^&V{q25u#}>=+ z{M>`DSqpNi{O&+aWwXD<8`RIvcC7BwoapBMKWQ#;t(`FDi^8~QZ=<`x6A)|8%&-hO zu54}c`MHewt?RO!&Ds0jD|h=EvV#7so2HBHk5uegb_-`^wfGx7S&_3^c3e~R)z@;D zn(UNmazNealyg#E=Z}?jSBA)1AKmDHdf6#2408o+Wv|XmoHp@fyLoj<=7_!d(eiv`4TlFHUY8e0%{70Gu;8|eiqb&fnbH>V(ap8m~?gWR~r+sd}~ zo-gg*5!%lUa<@_A%8QHo_U(3^+c^8$+Ao)v+|H*c^{r=y=be-FhT7RD(~Xf%b)r}1 zTarYodFtyCF>NKePBp1d&N51!YFVGmS0iathx=rqD(@#7(@%Dwms87~s;OVzV=Q#4 zzJ57L`obBX%6%3Y41aJzo=cZ)>Wx?_&!u z8T8OkYv_nqOB0QkjEhe8mLA)6ovtOg^ud~{Bm)-2zzQ4eh(#RYF$@V9jzlCO87WA` z2#mxf7=<+GwKL$rXpBK7#^O?BAsgc`9yz!SKfna!;&NPpD{&PjViK-K9wy_5n1XBY zBjlq1g>b@!B3z4NOhpMwF%8#YI?6Bu*W(7v#ErNKKgP|t1+y?4x8gSZ1h=Ccci>LU zK?UYw9`3??EWl4uiG^^Z3e~8A2a8aPI(Si!2Kdm3Ciu~epCN!21ksAcxEo8b6!+j> z+=u(I49n4m2e1Mwu?nm4Al6_levXImFxFu`HeeyB%d@hBd{<4|}4oA3)fiKozk zU*cEj#Aa;4ukkdt;x~8(+wd&5<2gK!7w{rp!f)|1euo{{iC6F{!q|n^up4`@7r)0J zun(`}4g3-NaR3MLC%lO+{2712AsogL9K~Dc#@jfCzv6Fr2k+uNypIoX93SE%e2f$L z1SfF{f5&N@!9Q>o=g@;*^r0W0;ynI|3%H1X;otZS|H0?@FaC#ta8=S558nSBhO6n` delta 2162 zcmYk*3sh896oBD-?lAHY5j15O#PE?~rBNylgA}5@m9#KGOB`W@k%1u?e5ECdisl2l z>cP@Vvoa&itVYXpDl4@#?O{ZwmWmidVo$Vm^1n-0q%no6yOt~>tu<6Cy?E&JC3dH6mOf0h(i=stf!>?$a+VdgKPj_ZTOrKq%yMmu zFkAEI`%lrQ{iozPTtzI17JB-PEYN$!C9Yz9Uyqau?W!;vy$wPM*J9L2tG7ugy=Yv! zPHC}iM*BHR%SE9K=2eE%Z+nQV%x%vua^-TRSff^?n$`FqZK-Ou)&!|-kKB3vB()xm zp{f!>?g9Oj99yBi#HM$MFzp1VSi-c+oKhL4DuHaqLZ7siy zzDKP`O}Lh3Fsqe~+BAc?r`LT_iSK4^`x_{>4o7W;>m|mIMmZrAa--)9(wC@k04rs4a zsEtx&i5S^0OIV`}N+i8VrL)pSiQ%0GC_#!59Xw02#OYv>E(>#n6uEMJE@`G5YHv%2 z{K-DGZFR+;R_Ey}&%k`qUx;8i-oY|dHj|{!K~*(PEE6Fzrhtte1#EZ=#Ij%`&(+^f zl^pLBD@B;+tWy}e^FO61weX@2J_P7*3KoxXf#@T+)qn~yQp}Ns72<-r&LSr*6bX7> zpTIBEWO0S?o24P|vQ5;+%;OZU|95B2H#?Bw1uc zC~34jpr^^Qyc5aoNeoj1)hPWd&_n;lua97v6|QbmD--3>JB2A|f2!WxKm;KeA?S!ubV3+9BODRvg08p$-OwG8Fd+(NM56~{&=WTz7QN6Leb5&-p&$Aq z4g+vAZo#b>h(Wjw@wgp#U@(SYC=xIX79_%oBn(F~?!;Y4!3d;cBu3$G+=F{@AMVEk zco3s825EQ*V=)d7;}N7|JRU^`GLeM|n25*lI3^(*lVQUY z!G&TxffAI$jWSHf49vtV%*K+u3!#7o$Kjd&TG@CshVYuJp}u?26S7H?uJw&5*o$J^L} zcknLWg9kgY3-99t?8b-KgT3(LBYcccun(W&GklKyIDmur0$<_~4&y5v!BKpTZ}2U? z!!dl1I{bio{D|ZD2`6w8r|>g=!D*bqSv24r8gU-Kq6t1U<2PJD3ohb!{DD957yiaS MX!WE diff --git a/src/scripts/generic.c b/src/scripts/generic.c index 4b35497..91ff462 100644 --- a/src/scripts/generic.c +++ b/src/scripts/generic.c @@ -1,3 +1,43 @@ +struct board_maker_unlock_waiter +{ + bool changed; + bool unlocked; +}; + +static bool _skaterift_script_board_maker_unlock( ent_script_event *event ) +{ + if( event->type == k_escript_event_allocate ) + { + struct script_event_allocate *event_info = event->info; + struct board_maker_unlock_waiter *waiter = vg_linear_alloc( event_info->heap, sizeof(struct board_maker_unlock_waiter) ); + waiter->changed = 0; + waiter->unlocked = 0; + event_info->userdata = waiter; + } + + u64 status; + if( on_nugget_changed( event, "board_maker_unlock", &status ) ) + { + struct board_maker_unlock_waiter *waiter = event->userdata; + waiter->changed = 1; + waiter->unlocked = status; + } + + if( event->type == k_escript_event_update || event->type == k_escript_event_world_start ) + { + if( _cutscene.state == k_cutscene_state_none ) + { + struct board_maker_unlock_waiter *waiter = event->userdata; + if( waiter->changed ) + { + ent_list_set_visible( event->world, event->entity_list, waiter->unlocked ); + waiter->changed = 0; + } + } + } + + return 1; +} static bool _skaterift_script_board_maker( ent_script_event *event ) { diff --git a/src/scripts/mtzero.c b/src/scripts/mtzero.c index 7cd46a4..cc468e1 100644 --- a/src/scripts/mtzero.c +++ b/src/scripts/mtzero.c @@ -324,7 +324,11 @@ static bool _skaterift_script_ch2e1( ent_script_event *event ) .freeze_player = 1, .subtitles = EN, }; - optional_video_wrapper( &cutscene, "ch2e1_view", 2, event ); + enum generic_cutscene_event cs_event = optional_video_wrapper( &cutscene, "ch2e1_view", 2, event ); + + if( cs_event == k_generic_cutscene_event_start ) + _skaterift_script_nugget_set( "board_maker_unlock", 1 ); + return 1; } diff --git a/src/scripts/tutorial_island.c b/src/scripts/tutorial_island.c index 7b4e0ec..87d2faf 100644 --- a/src/scripts/tutorial_island.c +++ b/src/scripts/tutorial_island.c @@ -191,23 +191,10 @@ static bool _skaterift_script_ch1s6a( ent_script_event *event ) _skaterift_script_nugget_set( "unlock_mtzero", 1 ); } - return 1; -} - -static bool _skaterift_script_final_portal( ent_script_event *event ) -{ - u64 status; - if( on_nugget_changed( event, "unlock_mtzero", &status ) ) + if( cs_event == k_generic_cutscene_event_end ) { - world_instance *world = event->world; - file_entity_ref *ref = af_arritm( &world->file_entity_ref, event->entity_list->entity_ref_start ); - - u32 type = mdl_entity_id_type( ref->entity_id ), - index = mdl_entity_id_id( ref->entity_id ); - - ent_gate *gate = af_arritm( &event->world->ent_gate, index ); - if( status ) gate->flags &= ~((u32)k_ent_gate_locked); - else gate->flags |= (u32)k_ent_gate_locked; + skaterift_load_world_command( 1, (const char *[]){ "sr002-local-dev_hub" } ); } + return 1; } diff --git a/src/skaterift_script.c b/src/skaterift_script.c index e9dc62d..5363931 100644 --- a/src/skaterift_script.c +++ b/src/skaterift_script.c @@ -706,6 +706,7 @@ enum generic_cutscene_event challenge_video_wrapper( const struct generic_cutsce struct ent_script_table_entry _ent_script_table[] = { + { "board_maker_unlock", _skaterift_script_board_maker_unlock }, { "board_maker", _skaterift_script_board_maker }, { "intro", _skaterift_script_intro }, @@ -718,7 +719,6 @@ struct ent_script_table_entry _ent_script_table[] = { "ch1s5", _skaterift_script_ch1s5 }, { "ch1s6a", _skaterift_script_ch1s6a }, { "unlock_docks", _skaterift_script_unlock_docks }, - { "final_portal", _skaterift_script_final_portal }, { "unlock_mtzero", _skaterift_script_unlock_mtzero }, { "ch2s1", _skaterift_script_ch2s1 }, @@ -754,8 +754,8 @@ struct script_save_nugget } _skaterift_script_savedata[] = { + { "board_maker_unlock" }, { "intro_view" }, - { "hub_info_view" }, { "ch1s2_view" }, diff --git a/src/world_load.c b/src/world_load.c index 2fd36da..5ba1246 100644 --- a/src/world_load.c +++ b/src/world_load.c @@ -534,12 +534,6 @@ void _world_loader_set_target_reg( addon_reg *reg ) /* console command for the above function */ int skaterift_load_world_command( int argc, const char *argv[] ) { - if( !vg_loader_availible() ) - { - vg_error( "Loading thread is currently unavailible\n" ); - return 0; - } - if( argc >= 1 ) { if( !strcmp( argv[0], "reload" ) ) -- 2.25.1