|
|
"use strict";(self.webpackChunkplaycanvas_game=self.webpackChunkplaycanvas_game||[]).push([[41,961],{41:(e,i,t)=>{t.r(i),t.d(i,{ObjectiveFactory:()=>n,ObjectiveSets:()=>a,ObjectiveTemplates:()=>r});const r={createCollectionObjective:(e,i,t=100)=>({type:"counter",target:i,description:`Collect ${i} ${e}`,rewards:{experience:t},autoTrigger:"item:pickup",triggerCondition:{itemType:e}}),createExplorationObjective:(e,i=150)=>({type:"counter",target:e.length,description:`Explore ${e.length} areas: ${e.join(", ")}`,rewards:{experience:i,skillPoints:1},autoTrigger:"player:proximity",triggerCondition:{areas:e}}),createTimeTrialObjective(e,i,t=null){const r={type:"simple",timeLimit:i,description:`${e} within ${Math.floor(i/60)} minutes`,rewards:{experience:200}};return t&&(r.requires={tool:t}),r},createSkillObjective(e,i=null,t=300){const r={type:"simple",description:`Complete advanced task requiring ${e}`,requires:{skill:e},rewards:{experience:t,skillPoints:2}};return i&&(r.requires.stat=i),r},createSocialObjective:(e,i=120)=>({type:"counter",target:e,description:`Interact with ${e} NPCs`,rewards:{experience:i,unlockSkills:["social"]},autoTrigger:"npc:interact"}),createSequentialObjective:(e,i=180)=>({type:"counter",target:e.length,description:`Complete tasks in order: ${e.join(" β ")}`,rewards:{experience:i},sequence:e,currentStep:0}),createSurvivalObjective:(e,i=250)=>({type:"simple",timeLimit:e,description:`Survive for ${Math.floor(e/60)} minutes`,rewards:{experience:i,unlockSkills:["survival"]},survivalMode:!0}),createPrecisionObjective:(e,i,t,r=150)=>({type:"simple",description:`Complete ${e} with high precision`,requires:{tool:i,skill:t},rewards:{experience:r,skillPoints:1},precisionRequired:!0}),createInvestigationObjective:(e,i=220)=>({type:"counter",target:e,description:`Find all ${e} investigation clues`,rewards:{experience:i,items:[{id:"investigation_report",quantity:1}]},autoTrigger:"clue:found"}),createMaintenanceObjective:(e,i=160)=>({type:"counter",target:e,description:`Perform maintenance on ${e} pieces of equipment`,requires:{tool:"maintenance_kit"},rewards:{experience:i,unlockSkills:["maintenance"]},autoTrigger:"equipment:maintained"})},a={medicalLabBeginner:[{id:"lab_orientation",name:"Laboratory Orientation",...r.createExplorationObjective(["reception","main_lab","storage"],100)},{id:"collect_basic_supplies",name:"Gather Basic Supplies",...r.createCollectionObjective("basic_supplies",3,80)},{id:"meet_supervisor",name:"Meet Your Supervisor",type:"simple",description:"Find and talk to the lab supervisor",rewards:{experience:60,unlockSkills:["communication"]},autoTrigger:"npc:interact",triggerCondition:{npcId:"supervisor"}}],medicalLabIntermediate:[{id:"emergency_training",name:"Emergency Response Training",...r.createTimeTrialObjective("Complete emergency protocol",300,"emergency_kit")},{id:"advanced_tests",name:"Advanced Laboratory Tests",...r.createSkillObjective("advanced_testing",{intelligence:10},250)},{id:"equipment_check",name:"Daily Equipment Check",...r.createMaintenanceObjective(5,140)}],sciFiEnvironment:[{id:"scan_alien_artifacts",name:"Scan Unknown Artifacts",...r.createCollectionObjective("alien_artifacts",4,200)},{id:"decode_alien_text",name:"Decode Alien Communication",...r.createSkillObjective("xenolinguistics",{intelligence:15},350)},{id:"survive_contamination",name:"Containment Breach Protocol",...r.createSurvivalObjective(600,300)}],socialInteraction:[{id:"team_introductions",name:"Meet the Team",...r.createSocialObjective(5,100)},{id:"conflict_resolution",name:"Resolve Team Conflict",type:"simple",description:"Help resolve the conflict between team members",requires:{skill:"diplomacy"},rewards:{experience:180,skillPoints:2}},{id:"team_building",name:"Team Building Exercise",type:"counter",target:3,description:"Complete all team building activities",rewards:{experience:150,unlockSkills:["leadership"]}}],tutorialSet:[{id:"learn_basic_controls",name:"Learn Basic Controls",type:"counter",target:4,description:"Practice movement: WASD, Mouse Look, F to Interact, Tab for Menu",rewards:{experience:50}},{id:"first_interaction",name:"First Interaction",type:"simple",description:"Interact with any object (look at it and press F)",rewards:{experience:30}},{id:"inventory_tutorial",name:"Using Your Inventory",type:"simple",description:"Pick up an item and check your inventory",rewards:{experience:40,unlockSkills:["inventory_management"]}}]},n={createForScene(e,i="beginner"){const t=[];switch(e){case"medical":t.push(...a.medicalLabBeginner),"beginner"!==i&&t.push(...a.medicalLabIntermediate);break;case"scifi":t.push(...a.sciFiEnvironment);break;case"tutorial":t.push(...a.tutorialSet);break;default:t.push({id:"explore_area",name:"Explore the Area",...r.createExplorationObjective(["area1","area2","area3"],120)})}return t},createProgressiveSet:(e,i=["easy","medium","hard"])=>i.map((t,r)=>({...e,id:`${e.id}_${t}`,name:`${e.name} (${t.toUpperCase()})`,target:e.target?e.target*(r+1):void 0,timeLimit:e.timeLimit?Math.max(60,e.timeLimit-60*r):void 0,rewards:{...e.rewards,experience:(e.rewards.experience||100)*(r+1)},prerequisites:r>0?[`${e.id}_${i[r-1]}`]:void 0})),createDailyObjectives:()=>[{id:"daily_maintenance",name:"Daily Equipment Maintenance",...r.createMaintenanceObjective(3,100),repeatable:!0,resetTime:864e5},{id:"daily_collection",name:"Daily Sample Collection",...r.createCollectionObjective("daily_samples",5,120),repeatable:!0,resetTime:864e5}]}},961:(e,i,t)=>{t.r(i),t.d(i,{MedicalLabObjectives:()=>r,MedicalLabProgression:()=>a,setupMedicalLabObjectiveHandlers:()=>n}),t(41);const r={beginner:[{id:"lab_safety_briefing",name:"Safety First",type:"simple",description:"Complete the laboratory safety briefing",rewards:{experience:50,unlockSkills:["basic_safety"]},autoTrigger:"interaction:triggered",triggerCondition:{entityName:"SafetyPoster"}},{id:"find_equipment",name:"Equipment Familiarization",type:"counter",target:6,description:"Locate and examine all 6 pieces of lab equipment",rewards:{experience:100,items:[{id:"equipment_manual",quantity:1}]},equipment:["Microscope","Centrifuge","Incubator","Scale","Pipette","Autoclave"]},{id:"collect_protective_gear",name:"Personal Protection",type:"counter",target:3,description:"Collect safety goggles, lab coat, and gloves",rewards:{experience:75,unlockSkills:["personal_safety"]},items:["safety_goggles","lab_coat","safety_gloves"],nextObjective:"first_sample_prep"},{id:"first_sample_prep",name:"Sample Preparation Basics",type:"simple",description:"Prepare your first tissue sample for analysis",requires:{item:"tissue_sample",tool:"prep_kit"},rewards:{experience:120,items:[{id:"prepared_sample",quantity:1}]},prerequisites:["collect_protective_gear"]}],intermediate:[{id:"microscope_analysis",name:"Microscopic Analysis",type:"simple",description:"Complete a detailed microscopic analysis of tissue samples",requires:{tool:"microscope",skill:"microscopy",item:"prepared_sample"},rewards:{experience:200,skillPoints:1,items:[{id:"analysis_report",quantity:1}]},prerequisites:["first_sample_prep"]},{id:"emergency_containment",name:"Emergency Containment Protocol",type:"simple",timeLimit:240,description:"Respond to a containment breach and secure the lab",requires:{skill:"emergency_protocols"},rewards:{experience:300,unlockSkills:["advanced_containment"]},emergencyMode:!0},{id:"batch_processing",name:"Efficient Sample Processing",type:"counter",target:10,timeLimit:900,description:"Process 10 samples within 15 minutes",requires:{skill:"sample_processing",tool:"automated_processor"},rewards:{experience:250,items:[{id:"efficiency_certificate",quantity:1}]},prerequisites:["microscope_analysis"],nextObjective:"research_project"},{id:"quality_control",name:"Quality Control Check",type:"simple",description:"Identify contaminated samples in a batch",requires:{skill:"quality_control",stat:{perception:12}},rewards:{experience:180,skillPoints:1},accuracyRequired:90}],advanced:[{id:"research_project",name:"Independent Research Project",type:"counter",target:5,description:"Complete all phases of an independent research project",requires:{skill:"research_methodology",stat:{intelligence:15,experience:1e3}},rewards:{experience:500,skillPoints:3,unlockSkills:["senior_researcher"],items:[{id:"research_publication",quantity:1}]},prerequisites:["quality_control","batch_processing"],nextObjective:"lab_crisis_management",phases:["literature_review","hypothesis_formation","experimental_design","data_collection","analysis_and_conclusion"]},{id:"mentor_trainee",name:"Mentor New Researcher",type:"simple",description:"Successfully train a new lab researcher",requires:{skill:"teaching",stat:{charisma:10}},rewards:{experience:350,unlockSkills:["leadership"],items:[{id:"mentor_badge",quantity:1}]},teachingMode:!0},{id:"crisis_management",name:"Laboratory Crisis Management",type:"simple",timeLimit:600,description:"Handle a major lab crisis involving multiple systems",requires:{skill:"crisis_management",stat:{leadership:12,stress_resistance:10}},rewards:{experience:600,skillPoints:4,unlockSkills:["lab_director"],items:[{id:"crisis_management_award",quantity:1}]},prerequisites:["research_project"],crisisScenario:!0}],specialEvents:[{id:"annual_inspection",name:"Annual Safety Inspection",type:"counter",target:12,timeLimit:1800,description:"Prepare the lab for annual safety inspection",rewards:{experience:400,items:[{id:"inspection_certificate",quantity:1}]},eventObjective:!0,checklistItems:["safety_equipment_check","chemical_inventory","waste_disposal_audit","emergency_exit_clear","fire_extinguisher_check","eyewash_station_test","fume_hood_certification","biosafety_cabinet_test","spill_kit_inventory","personal_protective_equipment","documentation_review","staff_certification_check"]},{id:"contamination_outbreak",name:"Contamination Response",type:"simple",timeLimit:420,description:"Respond to a biological contamination outbreak",requires:{skill:"biohazard_response"},rewards:{experience:450,unlockSkills:["biohazard_expert"]},randomEvent:!0,emergencyProcedures:["isolate_contaminated_area","activate_emergency_ventilation","notify_emergency_team","begin_decontamination_protocol","document_incident"]}],daily:[{id:"daily_equipment_check",name:"Daily Equipment Maintenance",type:"counter",target:5,description:"Complete daily maintenance checks on lab equipment",rewards:{experience:80},repeatable:!0,resetTime:864e5,equipment:["Microscope","Centrifuge","Incubator","Autoclave","Scale"]},{id:"sample_inventory",name:"Sample Inventory Count",type:"simple",description:"Conduct daily sample inventory count",rewards:{experience:60},repeatable:!0,resetTime:864e5},{id:"chemical_safety_check",name:"Chemical Storage Safety Check",type:"counter",target:3,description:"Verify proper storage of all chemical categories",rewards:{experience:70},repeatable:!0,resetTime:864e5,categories:["acids","bases","solvents"]}]};class a{constructor(e){this.objectiveManager=e,this.currentLevel="beginner",this.completedObjectives=new Set}initializeForScene(){this.loadObjectiveSet(r.beginner),this.loadObjectiveSet(r.daily),console.log("[MedicalLab] Objectives initialized for medical lab scene")}loadObjectiveSet(e){e.forEach(e=>{this.objectiveManager.defineObjective(e.id,e),e.prerequisites&&0!==e.prerequisites.length||this.objectiveManager.startObjective(e.id)})}onObjectiveCompleted(e){this.completedObjectives.add(e),this.checkProgression(),this.checkDependentObjectives()}checkProgression(){r.beginner.filter(e=>this.completedObjectives.has(e.id)).length>=3&&"beginner"===this.currentLevel&&(this.currentLevel="intermediate",this.loadObjectiveSet(r.intermediate),console.log("[MedicalLab] Unlocked intermediate objectives")),r.intermediate.filter(e=>this.completedObjectives.has(e.id)).length>=r.intermediate.length&&"intermediate"===this.currentLevel&&(this.currentLevel="advanced",this.loadObjectiveSet(r.advanced),console.log("[MedicalLab] Unlocked advanced objectives"))}checkDependentObjectives(){[...r.beginner,...r.intermediate,...r.advanced].forEach(e=>{e.prerequisites&&e.prerequisites.every(e=>this.completedObjectives.has(e))&&!this.objectiveManager.hasObjective(e.id)&&this.objectiveManager.startObjective(e.id)})}triggerSpecialEvent(e){r.specialEvents.filter(e=>e.eventObjective||e.randomEvent).forEach(i=>{i.id.includes(e)&&(this.objectiveManager.defineObjective(i.id,i),this.objectiveManager.startObjective(i.id))})}}function n(e,i){e.on("interaction:triggered",t=>{["Microscope","Centrifuge","Incubator","Scale","Pipette","Autoclave"].includes(t)&&e.fire("objective:update","find_equipment",i.getEquipmentCount()),"SafetyPoster"===t&&e.fire("objective:attempt","lab_safety_briefing"),e.fire("objective:update","daily_equipment_check",i.getMaintenanceCount())}),e.on("item:pickup",t=>{["safety_goggles","lab_coat","safety_gloves"].includes(t)&&e.fire("objective:update","collect_protective_gear",i.getProtectiveGearCount())}),e.on("sample:processed",()=>{e.fire("objective:update","batch_processing",i.getProcessedSampleCount())}),e.on("emergency:containment_breach",()=>{i.triggerSpecialEvent("contamination_outbreak")}),e.on("objective:completed",e=>{i.onObjectiveCompleted(e)})}}}]); |