#TouhouDanmakufu[Single]
#ScriptVersion[3]
#Title["Bal Dialogue 02"]
#Text["Bal Dialogue 02"]

#include "script/thdcs/system/shotlibrary.txt"
#include "script/thdcs/functions/function_common.txt"
#include "script/thdcs/functions/function_global.txt"
#include "script/thdcs/functions/function_bosseff.txt"

@Initialize {
    SetCommonData("isDialogue", true);
	SetCommonData("bossAttackType",0);
	SetCommonData("bossCircleType",0);
	renderBoss(1);

	if(GetAreaCommonData("game","fightHina", false)) {
	    SetCommonData("isDuet", true);
		renderBoss2(10);
		ObjMove_SetPosition(boss2Obj,-128,-128);
	}

	SetAutoDeleteObject(true);
	mainTask;
} 

@Event { 
	alternative(GetEventType()) 
	case(EV_REQUEST_LIFE) { 
		SetScriptResult(1);
	}
} 

@MainLoop {
    if(GetAreaCommonData("game","fightHina", false)) {
        boss2X = ObjMove_GetX(boss2Obj);
        boss2Y = ObjMove_GetY(boss2Obj);
        SetCommonData("boss2X", boss2X);
        SetCommonData("boss2Y", boss2Y);
    }
    yield;
}
@Finalize { } 

task mainTask { 
	yield;
	if(GetAreaCommonData("game","fightHina",false)) { 
		SetCommonData("isDialogue", true);
		eventListener; 
		let path = "script/thdcs/functions/function_dialogue.txt";
		let id = LoadScript(path);
		StartScript(id);
		let dialogueScriptID = GetCommonData("dialogueScriptID",0);
		NotifyEvent(dialogueScriptID,EV_USER,2);
		while(!IsCloseScript(id)) {
			yield;
		}	
	}
	scriptEnding;
} 

task eventListener {
	let trigEv = 0;
	while(!Obj_IsDeleted(bossObj)) {
		if(GetCommonData("diagEvent",0) == 1 && trigEv == 0) { ObjMove_SetDestAtWeight(boss2Obj,GetCenterX-64,100,20,30); trigEv++; }
		if(GetCommonData("diagEvent",0) == 2 && trigEv == 1) { ObjMove_SetDestAtWeight(boss2Obj,GetCenterX,160,20,30); trigEv++; }
		yield;
	}
}	

task scriptEnding {
	ObjEnemy_SetLife(bossObj,-1);
	DeleteShotAll(TYPE_ALL, TYPE_ITEM);
	Obj_Delete(bossObj);

	CloseScript(GetOwnScriptID);
}