"use strict";(self.webpackChunkplaycanvas_game=self.webpackChunkplaycanvas_game||[]).push([[942],{942:(e,t,o)=>{o.r(t),o.d(t,{default:()=>a});var i=o(96);const a={id:"military_compound",title:"Military Compound",type:"scene",async build(e,t,o){console.log("[MilitaryCompound] Building military compound...");const a=new i.n(e,e.systems?.core||{});a.sceneBuilder=t,a.entityFactory=o,this.alertLevel="GREEN",this.infiltrationTimer=9e5,this.startTime=null,a.createRoom("perimeter_gate",{size:[22,4,18],lighting:"military",position:[0,0,0],buildFunction:n,objectives:[{id:"compound_entry",name:"Perimeter Breach",description:"Infiltrate the military compound perimeter",type:"simple",autoStart:!0,rewards:{experience:35}},{id:"get_patrol_schedule",name:"Intelligence Gathering",description:"Obtain guard patrol schedules from checkpoint",type:"simple",rewards:{experience:60,items:[{id:"patrol_intel",quantity:1}]}}]}),a.createRoom("barracks_complex",{size:[35,5,28],lighting:"barracks",position:[0,0,0],buildFunction:s,objectives:[{id:"equipment_acquisition",name:"Equipment Procurement",description:"Acquire military equipment from supply areas",type:"counter",target:5,progress:0,rewards:{experience:100},nextObjective:"disable_communications"},{id:"disable_communications",name:"Communication Blackout",description:"Sabotage compound communication systems",type:"simple",prerequisites:["equipment_acquisition"],rewards:{experience:150,skillPoints:3,items:[{id:"sabotage_kit",quantity:1}]}}]}),a.createRoom("command_center",{size:[25,6,20],lighting:"command",position:[0,0,0],buildFunction:r,objectives:[{id:"tactical_override",name:"Command Override",description:"Override tactical command systems",type:"sequence",target:["radar_disable","defense_grid","command_codes"],progress:0,rewards:{experience:200,skillPoints:4}}]}),a.createRoom("weapon_vault",{size:[20,7,16],lighting:"vault",position:[0,0,0],buildFunction:c,objectives:[{id:"secure_weapons",name:"Weapons Acquisition",description:"Secure advanced military hardware",type:"simple",rewards:{experience:300,skillPoints:5,items:[{id:"military_hardware",quantity:1}]}}]}),a.createDoor("perimeter_gate","barracks_complex",{type:"keycard",item:"patrol_intel"},{playerSpawnPosition:[-15,0,0]}),a.createDoor("barracks_complex","command_center",{type:"objective",id:"disable_communications"},{playerSpawnPosition:[0,0,8]}),a.createDoor("command_center","weapon_vault",{type:"objective",id:"tactical_override"},{playerSpawnPosition:[0,0,6]});const l=await a.build(e,t,o);return l.multiRoom=a,l},onLoad(e,t){console.log("[MilitaryCompound] Military systems online - Alert Level: GREEN");const o=e.root.findByTag("scene_root")[0];o&&o.multiRoom&&(o.multiRoom.onLoad(e,t),this.multiRoom=o.multiRoom,this.startTime=Date.now(),this.setupAlertSystem(e),this.interactionHandler=o=>{this.handleMilitaryInteraction(o,e,t)},this.multiRoom.setSceneInteractionHandler(this.interactionHandler)),e.fire("ui:notification",{text:"INFILTRATION COMMENCED: Military compound breach - Maintain stealth",type:"warning",duration:4e3})},setupAlertSystem(e){this.alertInterval=setInterval(()=>{if(!this.startTime)return;const t=Date.now()-this.startTime,o=Math.max(0,this.infiltrationTimer-t);t>6e5&&"GREEN"===this.alertLevel?(this.alertLevel="YELLOW",e.fire("ui:notification",{text:"ALERT LEVEL: YELLOW - Increased security patrols detected",type:"warning",duration:4e3})):t>72e4&&"YELLOW"===this.alertLevel?(this.alertLevel="ORANGE",e.fire("ui:notification",{text:"ALERT LEVEL: ORANGE - Security lockdown protocols initiated",type:"error",duration:4e3})):o<=0&&"RED"!==this.alertLevel&&(this.alertLevel="RED",this.onFullAlert(e))},3e4)},onFullAlert(e){clearInterval(this.alertInterval),e.fire("ui:notification",{text:"ALERT LEVEL: RED - Full compound lockdown! Mission compromised!",type:"error",duration:8e3})},handleMilitaryInteraction(e,t,o){console.log("[MilitaryCompound] Interaction triggered with:",e);const i=o.getSystem("objectivemanager");if("SecurityCheckpoint"===e)i&&i.isObjectiveActive("compound_entry")&&(i.completeObjective("compound_entry"),i.startObjective("get_patrol_schedule")),t.fire("ui:notification",{text:"Guard post detected - Searching for intelligence",type:"info",duration:3e3});else if("GuardStation"===e)i&&i.isObjectiveActive("get_patrol_schedule")&&(this.multiRoom.addItem("patrol_intel"),i.completeObjective("get_patrol_schedule"),t.fire("ui:notification",{text:"Patrol schedules acquired - Compound access intelligence obtained",type:"success",duration:3e3}));else if(e.startsWith("EquipmentCache_")){if("barracks_complex"===this.multiRoom.currentRoom&&i&&i.isObjectiveActive("equipment_acquisition")){const o=parseInt(e.split("_")[1]),a=["Night vision goggles","Combat radio","Tactical vest","Electronic lock picks","Explosive charges"];t.fire("ui:notification",{text:`Equipment acquired: ${a[o]}`,type:"success",duration:2500}),i.updateObjective("equipment_acquisition")}}else if("CommunicationHub"===e)i&&i.isComplete("equipment_acquisition")&&i.isObjectiveActive("disable_communications")&&(this.multiRoom.addItem("sabotage_kit"),i.completeObjective("disable_communications"),i.startObjective("tactical_override"),t.fire("ui:notification",{text:"COMMUNICATIONS DISABLED: Compound is isolated from external support",type:"success",duration:4e3}));else if(["RadarSystem","DefenseGrid","CommandTerminal"].includes(e)){if("command_center"===this.multiRoom.currentRoom&&i&&i.isObjectiveActive("tactical_override")){const o={RadarSystem:"radar_disable",DefenseGrid:"defense_grid",CommandTerminal:"command_codes"}[e],a={radar_disable:"RADAR SYSTEMS DISABLED",defense_grid:"DEFENSE GRID COMPROMISED",command_codes:"COMMAND CODES EXTRACTED"};t.fire("ui:notification",{text:a[o],type:"success",duration:2500}),i.updateObjective("tactical_override",o)}}else"WeaponVault"===e&&"weapon_vault"===this.multiRoom.currentRoom&&i&&i.isObjectiveActive("secure_weapons")&&(this.multiRoom.addItem("military_hardware"),i.completeObjective("secure_weapons"),t.fire("ui:notification",{text:"MISSION SUCCESS: Advanced military hardware secured",type:"success",duration:5e3}))},onUnload(e,t){console.log("[MilitaryCompound] Military systems shutting down..."),this.alertInterval&&clearInterval(this.alertInterval),this.multiRoom&&this.multiRoom.setSceneInteractionHandler(null),this.interactionHandler=null,this.multiRoom&&this.multiRoom.onUnload(e,t)}};async function n(e,t,o,i){console.log("[MilitaryCompound] Building perimeter gate...");const a=o.create("SecurityCheckpoint",{components:{model:{type:"box"},collision:{type:"box",halfExtents:[2,1,1.5]},rigidbody:{type:"static"}},position:[0,1,-7],scale:[4,2,3],tags:["interactive","checkpoint"]});if(a.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.4,.4,.2),e.update(),a.model.meshInstances.forEach(t=>t.material=e)}e.addChild(a);const n=o.create("GuardStation",{components:{model:{type:"box"},collision:{type:"box",halfExtents:[1,1.5,.8]},rigidbody:{type:"static"}},position:[4,1.5,-6],scale:[2,3,1.6],tags:["interactive","guard_post"]});if(n.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.3,.4,.3),e.emissive=new pc.Color(.1,.2,.1),e.update(),n.model.meshInstances.forEach(t=>t.material=e)}i.addEntityToRoom(n,"perimeter_gate"),[[-8,1.5,0],[-4,1.5,0],[4,1.5,0],[8,1.5,0],[-8,1.5,6],[8,1.5,6]].forEach((t,i)=>{const a=o.create(`PerimeterFence_${i}`,{components:{model:{type:"box"},collision:{type:"box",halfExtents:[2,1.5,.1]}},position:t,scale:[4,3,.2],tags:["obstacle"]});if(a.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.3,.3,.3),e.metalness=.8,e.update(),a.model.meshInstances.forEach(t=>t.material=e)}e.addChild(a)});const s=o.createNPC("sergeant_harris",{position:[-2,0,-5],displayName:"Sergeant Harris",dialogue:{greeting:"Hold it right there! This is a restricted military facility.",topics:{patrol:"Standard protocol - all guard stations maintain updated patrol schedules.",security:"Perimeter is secure, but we've had reports of unusual activity lately.",compound:"Beyond this gate is classified - you don't have clearance for that area."}}});i.addEntityToRoom(s,"perimeter_gate"),[{pos:[0,3.5,0],color:new pc.Color(1,1,.9)},{pos:[-8,3.5,0],color:new pc.Color(1,1,.9)},{pos:[8,3.5,0],color:new pc.Color(1,1,.9)}].forEach((t,i)=>{const a=o.createLight("point",{color:t.color,intensity:2,range:10,position:t.pos});e.addChild(a)})}async function s(e,t,o,i){console.log("[MilitaryCompound] Building barracks complex..."),[[-12,.8,-10],[-6,.8,-10],[6,.8,-10],[12,.8,-10],[0,.8,10]].forEach((e,t)=>{const a=o.create(`EquipmentCache_${t}`,{components:{model:{type:"box"},collision:{type:"box",halfExtents:[1.2,.8,.8]},rigidbody:{type:"static"}},position:e,scale:[2.4,1.6,1.6],tags:["interactive","equipment"]});if(a.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.4,.3,.2),e.update(),a.model.meshInstances.forEach(t=>t.material=e)}i.addEntityToRoom(a,"barracks_complex")});const a=o.create("CommunicationHub",{components:{model:{type:"cylinder"},collision:{type:"cylinder",radius:1.5,height:4},rigidbody:{type:"static"}},position:[0,2,0],scale:[3,4,3],tags:["interactive","communications"]});if(a.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.2,.2,.3),e.emissive=new pc.Color(.1,.1,.2),e.emissiveIntensity=.5,e.update(),a.model.meshInstances.forEach(t=>t.material=e)}i.addEntityToRoom(a,"barracks_complex"),[[-10,1.5,8],[10,1.5,8],[-10,1.5,-8],[10,1.5,-8]].forEach((t,i)=>{const a=o.create(`Barracks_${i}`,{components:{model:{type:"box"},collision:{type:"box",halfExtents:[4,1.5,3]}},position:t,scale:[8,3,6],tags:["building"]});if(a.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.5,.4,.3),e.update(),a.model.meshInstances.forEach(t=>t.material=e)}e.addChild(a)});const n=o.createNPC("supply_officer_jones",{position:[8,0,0],displayName:"Supply Officer Jones",dialogue:{greeting:"Equipment inventory is running smoothly. Everything accounted for.",topics:{equipment:"We keep tactical gear distributed across multiple cache points for security.",communications:"That comm tower handles all external contact - vital for operations.",security:"Standard procedure - equipment audits every 6 hours to prevent theft."}}});i.addEntityToRoom(n,"barracks_complex"),[{pos:[0,4.5,0],color:new pc.Color(.9,.9,.8)},{pos:[-12,4,0],color:new pc.Color(.9,.9,.8)},{pos:[12,4,0],color:new pc.Color(.9,.9,.8)}].forEach((t,i)=>{const a=o.createLight("point",{color:t.color,intensity:1.8,range:12,position:t.pos});e.addChild(a)})}async function r(e,t,o,i){console.log("[MilitaryCompound] Building command center...");const a=o.create("RadarSystem",{components:{model:{type:"cylinder"},collision:{type:"cylinder",radius:2,height:3},rigidbody:{type:"static"}},position:[-8,1.5,-6],scale:[4,3,4],tags:["interactive","radar"]}),n=o.create("DefenseGrid",{components:{model:{type:"box"},collision:{type:"box",halfExtents:[2,2.5,1]},rigidbody:{type:"static"}},position:[0,2.5,-6],scale:[4,5,2],tags:["interactive","defense"]}),s=o.create("CommandTerminal",{components:{model:{type:"box"},collision:{type:"box",halfExtents:[3,1.5,1.5]},rigidbody:{type:"static"}},position:[8,1.5,-6],scale:[6,3,3],tags:["interactive","command"]});if(a.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.2,.6,.3),e.emissive=new pc.Color(.1,.3,.15),e.update(),a.model.meshInstances.forEach(t=>t.material=e)}if(n.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.6,.3,.2),e.emissive=new pc.Color(.3,.15,.1),e.update(),n.model.meshInstances.forEach(t=>t.material=e)}if(s.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.3,.3,.6),e.emissive=new pc.Color(.15,.15,.3),e.emissiveIntensity=.6,e.update(),s.model.meshInstances.forEach(t=>t.material=e)}i.addEntityToRoom(a,"command_center"),i.addEntityToRoom(n,"command_center"),i.addEntityToRoom(s,"command_center"),[[-8,.8,4],[-4,.8,4],[4,.8,4],[8,.8,4]].forEach((t,i)=>{const a=o.create(`Workstation_${i}`,{components:{model:{type:"box"},collision:{type:"box",halfExtents:[2,.8,1]}},position:t,scale:[4,1.6,2],tags:["equipment"]});if(a.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.3,.3,.3),e.emissive=new pc.Color(.1,.1,.15),e.update(),a.model.meshInstances.forEach(t=>t.material=e)}e.addChild(a)});const r=o.createNPC("commander_stone",{position:[0,0,2],displayName:"Commander Stone",dialogue:{greeting:"This is a restricted command center! How did you get past security?",topics:{radar:"Our radar array monitors all airspace within a 50-mile radius.",defense:"Defense grid controls automated perimeter weapons systems.",command:"Command terminal has access to all compound tactical systems."}}});i.addEntityToRoom(r,"command_center"),[{pos:[0,5.5,0],color:new pc.Color(.7,.8,1)},{pos:[-8,4.5,0],color:new pc.Color(.7,.8,1)},{pos:[8,4.5,0],color:new pc.Color(.7,.8,1)}].forEach((t,i)=>{const a=o.createLight("point",{color:t.color,intensity:2.2,range:12,position:t.pos});e.addChild(a)})}async function c(e,t,o,i){console.log("[MilitaryCompound] Building weapon vault...");const a=o.create("WeaponVault",{components:{model:{type:"box"},collision:{type:"box",halfExtents:[3,3,2]},rigidbody:{type:"static"}},position:[0,3,-6],scale:[6,6,4],tags:["interactive","vault"]});if(a.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.4,.4,.5),e.emissive=new pc.Color(.2,.2,.3),e.metalness=.9,e.update(),a.model.meshInstances.forEach(t=>t.material=e)}i.addEntityToRoom(a,"weapon_vault"),[[-6,2,0],[6,2,0],[-6,2,4],[6,2,4]].forEach((t,i)=>{const a=o.create(`WeaponRack_${i}`,{components:{model:{type:"box"},collision:{type:"box",halfExtents:[1.5,2,.5]}},position:t,scale:[3,4,1],tags:["storage"]});if(a.model){const e=new pc.StandardMaterial;e.diffuse=new pc.Color(.5,.5,.6),e.metalness=.8,e.update(),a.model.meshInstances.forEach(t=>t.material=e)}e.addChild(a)}),[{pos:[0,6.5,0],color:new pc.Color(1,.8,.8)},{pos:[-6,5,0],color:new pc.Color(1,.8,.8)},{pos:[6,5,0],color:new pc.Color(1,.8,.8)}].forEach((t,i)=>{const a=o.createLight("point",{color:t.color,intensity:2,range:12,position:t.pos});e.addChild(a)})}}}]);