Testhostplaycanvasmobile / 99.bundle.js
kwabs22
puzzle scene and label fix attempts
8dcf070
"use strict";(self.webpackChunkplaycanvas_game=self.webpackChunkplaycanvas_game||[]).push([[99],{99:(e,t,i)=>{i.r(t),i.d(t,{default:()=>r});var o=i(96);const r={id:"ancient_temple",title:"Ancient Temple of Elements",type:"scene",async build(e,t,i){console.log("[AncientTemple] Building ancient temple of elements...");const r=new o.n(e,e.systems?.core||{});r.sceneBuilder=t,r.entityFactory=i,this.curseLevel=0,this.ritualProgress={},this.startTime=null,r.createRoom("temple_entrance",{size:[20,6,16],lighting:"ancient",position:[0,0,0],buildFunction:n,objectives:[{id:"temple_discovery",name:"Ancient Discovery",description:"Investigate the mysterious ancient temple",type:"simple",autoStart:!0,rewards:{experience:30}},{id:"decipher_symbols",name:"Symbol Translation",description:"Decipher the ancient symbol sequence",type:"sequence",target:["symbol_earth","symbol_water","symbol_fire","symbol_air"],progress:0,rewards:{experience:80,items:[{id:"symbol_knowledge",quantity:1}]}}]}),r.createRoom("elemental_chamber",{size:[25,8,20],lighting:"elemental",position:[0,0,0],buildFunction:a,objectives:[{id:"collect_artifacts",name:"Elemental Artifacts",description:"Collect the four elemental artifacts",type:"counter",target:4,progress:0,rewards:{experience:120},nextObjective:"activate_barriers"},{id:"activate_barriers",name:"Elemental Barriers",description:"Use artifacts to activate elemental barrier sequence",type:"sequence",target:["earth_barrier","water_barrier","fire_barrier","air_barrier"],progress:0,prerequisites:["collect_artifacts"],rewards:{experience:180,skillPoints:3}}]}),r.createRoom("ritual_chamber",{size:[22,10,18],lighting:"ritual",position:[0,0,0],buildFunction:s,objectives:[{id:"coordinate_ritual",name:"Synchronized Ritual",description:"Perform coordinated actions at ritual stations within time limit",type:"sequence",target:["ritual_north","ritual_east","ritual_south","ritual_west","ritual_center"],progress:0,rewards:{experience:250,skillPoints:4}}]}),r.createRoom("inner_sanctum",{size:[18,12,14],lighting:"sanctum",position:[0,0,0],buildFunction:c,objectives:[{id:"ancient_guardian",name:"Guardian Challenge",description:"Face the ancient guardian and claim the temple's power",type:"simple",rewards:{experience:400,skillPoints:6,items:[{id:"temple_heart",quantity:1}]}}]}),r.createDoor("temple_entrance","elemental_chamber",{type:"keycard",item:"symbol_knowledge"},{playerSpawnPosition:[0,0,8]}),r.createDoor("elemental_chamber","ritual_chamber",{type:"objective",id:"activate_barriers"},{playerSpawnPosition:[0,0,7]}),r.createDoor("ritual_chamber","inner_sanctum",{type:"objective",id:"coordinate_ritual"},{playerSpawnPosition:[0,0,5]});const l=await r.build(e,t,i);return l.multiRoom=r,l},onLoad(e,t){console.log("[AncientTemple] Ancient temple awakening - Mystical energies detected");const i=e.root.findByTag("scene_root")[0];i&&i.multiRoom&&(i.multiRoom.onLoad(e,t),this.multiRoom=i.multiRoom,this.interactionHandler=i=>{this.handleTempleInteraction(i,e,t)},this.multiRoom.setSceneInteractionHandler(this.interactionHandler),this.ritualProgress={coordinatedActions:[],lastActionTime:0,timeWindow:3e4},this.startTime=Date.now(),this.setupMysticalSystems(e)),e.fire("ui:notification",{text:"ANCIENT POWER: Temple awakens to your presence - Proceed with reverence",type:"info",duration:4e3})},setupMysticalSystems(e){this.mysticalInterval=setInterval(()=>{this.curseLevel=Math.min(100,this.curseLevel+2),this.curseLevel>=60&&e.fire("ui:notification",{text:`ANCIENT CURSE: ${this.curseLevel}% - The temple's power grows restless`,type:"warning",duration:2e3})},15e3)},handleTempleInteraction(e,t,i){console.log("[AncientTemple] Ancient interaction with:",e);const o=i.getSystem("objectivemanager");if("AncientInscription"===e)o&&o.isObjectiveActive("temple_discovery")&&(o.completeObjective("temple_discovery"),o.startObjective("decipher_symbols")),t.fire("ui:notification",{text:'INSCRIPTION: "Only those who understand the elemental sequence may proceed"',type:"info",duration:5e3});else if(e.startsWith("Symbol_")){if("temple_entrance"===this.multiRoom.currentRoom&&o&&o.isObjectiveActive("decipher_symbols")){const i=e.split("_")[1];["earth","water","fire","air"][o.getObjective("decipher_symbols").progress]===i?(this.removeStoneBarrier(i),t.fire("ui:notification",{text:`${i.toUpperCase()} symbol activated - Ancient barrier recedes`,type:"success",duration:3e3}),o.updateObjective("decipher_symbols",`symbol_${i}`)):(this.curseLevel+=10,t.fire("ui:notification",{text:"CURSE PENALTY: Wrong symbol sequence! Ancient wrath increases",type:"error",duration:3e3}))}}else if(e.startsWith("Artifact_")){if("elemental_chamber"===this.multiRoom.currentRoom&&o&&o.isObjectiveActive("collect_artifacts")){const i=e.split("_")[1];t.fire("ui:notification",{text:`${i} artifact claimed - Elemental power flows through you`,type:"success",duration:2500}),o.updateObjective("collect_artifacts"),o.getObjective("collect_artifacts").progress>=4&&o.startObjective("activate_barriers")}}else if(e.startsWith("BarrierAltar_")){if("elemental_chamber"===this.multiRoom.currentRoom&&o&&o.isObjectiveActive("activate_barriers")){const i=e.split("_")[1];this.toggleElementalBarrier(i,!1),t.fire("ui:notification",{text:`${i.toUpperCase()} barrier dispelled - Path cleared`,type:"success",duration:2500}),o.updateObjective("activate_barriers",`${i}_barrier`)}}else if(e.startsWith("RitualStation_")){if("ritual_chamber"===this.multiRoom.currentRoom&&o&&o.isObjectiveActive("coordinate_ritual")){const i=e.split("_")[1],r=Date.now();r-this.ritualProgress.lastActionTime>this.ritualProgress.timeWindow&&(this.ritualProgress.coordinatedActions=[]),this.ritualProgress.coordinatedActions.push(i),this.ritualProgress.lastActionTime=r;const n=["north","east","south","west","center"],a=this.ritualProgress.coordinatedActions.length-1;n[a]===i?(t.fire("ui:notification",{text:`Ritual ${i.toUpperCase()} activated - ${5-a-1} steps remain`,type:"success",duration:2e3}),o.updateObjective("coordinate_ritual",`ritual_${i}`)):(this.ritualProgress.coordinatedActions=[],this.curseLevel+=15,t.fire("ui:notification",{text:"RITUAL FAILED: Wrong sequence! Ancient spirits are displeased",type:"error",duration:3e3}))}}else"AncientGuardian"===e&&"inner_sanctum"===this.multiRoom.currentRoom&&o&&o.isObjectiveActive("ancient_guardian")&&(this.multiRoom.addItem("temple_heart"),o.completeObjective("ancient_guardian"),t.fire("ui:notification",{text:"TEMPLE MASTERED: You have proven worthy - The ancient power is yours",type:"success",duration:6e3}))},removeStoneBarrier(e){const t=this.app.root.findByName(`StoneBarrier_${e}`);t&&(t.tween(t.getPosition()).to({x:t.getPosition().x,y:-2,z:t.getPosition().z},3,pc.SineOut).start(),setTimeout(()=>{t.rigidbody&&(t.rigidbody.enabled=!1)},3e3))},toggleElementalBarrier(e,t=!0){const i={earth:[-8,1.5,0],water:[8,1.5,0],fire:[0,1.5,-8],air:[0,1.5,8]}[e],o=this.app.root.findByName(`ElementalBarrier_${e}`);if(t&&!o){const t=this.multiRoom.entityFactory.create(`ElementalBarrier_${e}`,{components:{model:{type:"box"},collision:{type:"box",halfExtents:[.3,4,6]},rigidbody:{type:"static"}},position:i,scale:[.6,8,12],tags:["elemental_barrier","impassable"]});if(t.model){const i={earth:new pc.Color(.6,.4,.2),water:new pc.Color(.2,.4,.8),fire:new pc.Color(.8,.3,.2),air:new pc.Color(.8,.8,.9)},o=new pc.StandardMaterial;o.diffuse=i[e],o.emissive=new pc.Color(.6*i[e].r,.6*i[e].g,.6*i[e].b),o.emissiveIntensity=1.2,o.opacity=.8,o.blendType=pc.BLEND_NORMAL,o.update(),t.model.meshInstances.forEach(e=>e.material=o)}multiRoom.addEntityToRoom(t,this.multiRoom.currentRoom)}else!t&&o&&o.destroy()},onUnload(e,t){console.log("[AncientTemple] Ancient powers returning to slumber..."),this.mysticalInterval&&clearInterval(this.mysticalInterval),this.multiRoom&&this.multiRoom.setSceneInteractionHandler(null),this.interactionHandler=null,this.multiRoom&&this.multiRoom.onUnload(e,t)}};async function n(e,t,i,o){console.log("[AncientTemple] Building temple entrance...");const r=i.create("AncientInscription",{components:{model:{type:"box"},collision:{type:"box",halfExtents:[3,2,.5]},rigidbody:{type:"static"}},position:[0,2,-6],scale:[6,4,1],tags:["interactive","inscription"]});if(r.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.6,.5,.3),e.update(),r.model.meshInstances.forEach(t=>t.material=e)}e.addChild(r),[{element:"earth",pos:[-6,1,-2],barrierPos:[0,1.5,-6]},{element:"water",pos:[-2,1,2],barrierPos:[-6,1.5,0]},{element:"fire",pos:[2,1,2],barrierPos:[6,1.5,0]},{element:"air",pos:[6,1,-2],barrierPos:[0,1.5,6]}].forEach(e=>{const t=i.create(`Symbol_${e.element}`,{components:{model:{type:"cylinder"},collision:{type:"cylinder",radius:.8,height:1.5},rigidbody:{type:"static"}},position:e.pos,scale:[1.6,1.5,1.6],tags:["interactive","symbol"]});if(t.model){const i={earth:new pc.Color(.6,.4,.2),water:new pc.Color(.2,.4,.8),fire:new pc.Color(.8,.3,.2),air:new pc.Color(.8,.8,.9)},o=new pc.StandardMaterial;o.diffuse=i[e.element],o.emissive=new pc.Color(.4*i[e.element].r,.4*i[e.element].g,.4*i[e.element].b),o.update(),t.model.meshInstances.forEach(e=>e.material=o)}o.addEntityToRoom(t,"temple_entrance");const r=i.create(`StoneBarrier_${e.element}`,{components:{model:{type:"box"},collision:{type:"box",halfExtents:[3,3,.8]},rigidbody:{type:"static"}},position:e.barrierPos,scale:[6,6,1.6],tags:["stone_barrier","impassable"]});if(r.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.5,.5,.4),e.update(),r.model.meshInstances.forEach(t=>t.material=e)}o.addEntityToRoom(r,"temple_entrance")});const n=i.createNPC("keeper_spirit",{position:[0,0,0],displayName:"Ancient Temple Keeper",dialogue:{greeting:"Mortal... you dare disturb our eternal rest? Prove your understanding of the elements.",topics:{elements:"Earth grounds, Water flows, Fire burns, Air lifts - this is the order of creation.",sequence:"Only those who activate the symbols in correct sequence may pass the stone barriers.",curse:"Each mistake strengthens the ancient curse - tread carefully, seeker."}}});o.addEntityToRoom(n,"temple_entrance"),[{pos:[0,5.5,0],color:new pc.Color(1,.8,.6)},{pos:[-6,4.5,0],color:new pc.Color(1,.8,.6)},{pos:[6,4.5,0],color:new pc.Color(1,.8,.6)}].forEach((t,o)=>{const r=i.createLight("point",{color:t.color,intensity:1.8,range:9,position:t.pos});e.addChild(r)});const a=i.create("SpawnPoint",{position:[0,1,5],tags:["spawn"]});e.addChild(a)}async function a(e,t,i,o){console.log("[AncientTemple] Building elemental chamber with ELEMENTAL BARRIERS..."),[{element:"earth",pos:[-10,1,-8],altarPos:[-8,1.5,0]},{element:"water",pos:[10,1,-8],altarPos:[8,1.5,0]},{element:"fire",pos:[-10,1,8],altarPos:[0,1.5,-8]},{element:"air",pos:[10,1,8],altarPos:[0,1.5,8]}].forEach(e=>{const t=i.create(`Artifact_${e.element}`,{components:{model:{type:"cylinder"},collision:{type:"cylinder",radius:.6,height:2},rigidbody:{type:"static"}},position:e.pos,scale:[1.2,2,1.2],tags:["interactive","artifact"]}),r={earth:new pc.Color(.6,.4,.2),water:new pc.Color(.2,.4,.8),fire:new pc.Color(.8,.3,.2),air:new pc.Color(.8,.8,.9)};if(t.model){const i=new pc.StandardMaterial;i.diffuse=r[e.element],i.emissive=new pc.Color(.8*r[e.element].r,.8*r[e.element].g,.8*r[e.element].b),i.emissiveIntensity=1,i.update(),t.model.meshInstances.forEach(e=>e.material=i)}o.addEntityToRoom(t,"elemental_chamber");const n=i.create(`BarrierAltar_${e.element}`,{components:{model:{type:"box"},collision:{type:"box",halfExtents:[1.5,1,1]},rigidbody:{type:"static"}},position:e.altarPos,scale:[3,2,2],tags:["interactive","altar"]});if(n.model){const t=new pc.StandardMaterial;t.diffuse=r[e.element],t.emissive=new pc.Color(.5*r[e.element].r,.5*r[e.element].g,.5*r[e.element].b),t.update(),n.model.meshInstances.forEach(e=>e.material=t)}o.addEntityToRoom(n,"elemental_chamber");const a=i.create(`ElementalBarrier_${e.element}`,{components:{model:{type:"box"},collision:{type:"box",halfExtents:[.3,4,6]},rigidbody:{type:"static"}},position:e.altarPos,scale:[.6,8,12],tags:["elemental_barrier","impassable"]});if(a.model){const t=new pc.StandardMaterial;t.diffuse=r[e.element],t.emissive=new pc.Color(.6*r[e.element].r,.6*r[e.element].g,.6*r[e.element].b),t.emissiveIntensity=1.2,t.opacity=.8,t.blendType=pc.BLEND_NORMAL,t.update(),a.model.meshInstances.forEach(e=>e.material=t)}o.addEntityToRoom(a,"elemental_chamber")}),[{pos:[0,7.5,0],color:new pc.Color(.9,.8,1)},{pos:[-10,6,0],color:new pc.Color(1,.6,.4)},{pos:[10,6,0],color:new pc.Color(.4,.6,1)}].forEach((t,o)=>{const r=i.createLight("point",{color:t.color,intensity:2.2,range:12,position:t.pos});e.addChild(r)})}async function s(e,t,i,o){console.log("[AncientTemple] Building ritual chamber with TIMED COORDINATION..."),[{direction:"north",pos:[0,1,-7]},{direction:"east",pos:[7,1,0]},{direction:"south",pos:[0,1,7]},{direction:"west",pos:[-7,1,0]},{direction:"center",pos:[0,1,0]}].forEach(e=>{const t=i.create(`RitualStation_${e.direction}`,{components:{model:{type:"cylinder"},collision:{type:"cylinder",radius:1.2,height:2.5},rigidbody:{type:"static"}},position:e.pos,scale:[2.4,2.5,2.4],tags:["interactive","ritual"]});if(t.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.4,.3,.6),e.emissive=new pc.Color(.2,.15,.4),e.emissiveIntensity=.8,e.update(),t.model.meshInstances.forEach(t=>t.material=e)}o.addEntityToRoom(t,"ritual_chamber")});const r=i.create("RitualCircle",{components:{model:{type:"cylinder"},collision:{type:"cylinder",radius:9,height:.1}},position:[0,.05,0],scale:[18,.1,18],tags:["ritual_circle"]});if(r.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.3,.2,.4),e.emissive=new pc.Color(.2,.1,.3),e.update(),r.model.meshInstances.forEach(t=>t.material=e)}e.addChild(r),[{pos:[0,9.5,0],color:new pc.Color(.8,.6,1)},{pos:[-7,7,0],color:new pc.Color(.8,.6,1)},{pos:[7,7,0],color:new pc.Color(.8,.6,1)},{pos:[0,7,-7],color:new pc.Color(.8,.6,1)},{pos:[0,7,7],color:new pc.Color(.8,.6,1)}].forEach((t,o)=>{const r=i.createLight("point",{color:t.color,intensity:2,range:8,position:t.pos});e.addChild(r)})}async function c(e,t,i,o){console.log("[AncientTemple] Building inner sanctum...");const r=i.create("AncientGuardian",{components:{model:{type:"cylinder"},collision:{type:"cylinder",radius:2,height:5},rigidbody:{type:"static"}},position:[0,2.5,0],scale:[4,5,4],tags:["interactive","guardian"]});if(r.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.8,.7,.3),e.emissive=new pc.Color(.6,.5,.2),e.emissiveIntensity=1.5,e.metalness=.8,e.update(),r.model.meshInstances.forEach(t=>t.material=e)}o.addEntityToRoom(r,"inner_sanctum"),[[-6,1,-4],[6,1,-4],[-6,1,4],[6,1,4]].forEach((t,o)=>{const r=i.create(`Treasure_${o}`,{components:{model:{type:"box"},collision:{type:"box",halfExtents:[.8,.6,.6]}},position:t,scale:[1.6,1.2,1.2],tags:["treasure"]});if(r.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.8,.6,.2),e.emissive=new pc.Color(.4,.3,.1),e.metalness=.9,e.update(),r.model.meshInstances.forEach(t=>t.material=e)}e.addChild(r)});const n=i.createLight("point",{color:new pc.Color(1,.9,.6),intensity:3,range:15,position:[0,11.5,0]});e.addChild(n)}}}]);