2015 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			2015 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | 
 | |||
|  | // 褐叙 议葛搅 - ?煎餍颤殓 蒙机 | |||
|  | // ?营煎怃 议葛搅 霜机 舱侥赀击 宪 热 桡朝 妇啗煎 罹彻饵蒂 渠鼻戏煎 蒙机击 ?艘蝗栖棻. | |||
|  | // 渡碟除 Thief陛 褐叙 议葛搅 - 葆办蝶夔?煤 霜机桧塭坚 除舆?栖棻. | |||
|  | // ?? Thief陛 嬴棋 褐叙 霜机 舱侥赀戏煎 夥绂横捡 ?栖棻. | |||
|  | // 寿缣 舆戮侥缣 Master塭坚 赀芦肾朝匙擎 夔?煤 肾朝 螃粽薛?菟暧 MainCharacter殓栖棻. | |||
|  | 
 | |||
|  | 
 | |||
|  | // 觼葬缣桧搅 瞪瘫鼻?樯虽 羹觼?朝 ?热殓栖棻. | |||
|  | function IsInBattleCreator(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return false; | |||
|  | 
 | |||
|  | 	if (!obj.isMyControlObject()) | |||
|  | 		return false; | |||
|  | 
 | |||
|  | 	//print(" isInBattle:" + obj.isInBattle()); | |||
|  | 
 | |||
|  | 	if (sq_GetCurrentModuleType() == MODULE_TYPE_SELECT_DUNGEON) | |||
|  | 	{ | |||
|  | 		return false; | |||
|  | 	} | |||
|  | 
 | |||
|  | 	if (sq_IsInBattle() && !sq_IsPauseTypeWorld(obj)) | |||
|  | 	{ | |||
|  | 		if (!obj.isInActiveSkillBlockedMap()) | |||
|  | 		{ // 挡?粽 蝶鉴击 噩 热 毡朝 裘樯虽 羹觼?栖棻. | |||
|  | 			if (obj.isInBattle()) | |||
|  | 				return true; | |||
|  | 		} | |||
|  | 	} | |||
|  | 
 | |||
|  | 	return false; | |||
|  | } | |||
|  | 
 | |||
|  | function lockMouse(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	if (sq_IsMyControlObject(obj) && sq_getJob(obj) == ENUM_CHARACTERJOB_CREATOR_MAGE) | |||
|  | 	{ | |||
|  | 		sq_SetClipCursor(true); | |||
|  | 		setEnableBattleInUI(false); | |||
|  | 		obj.getVar("MouseLock").clear_vector(); | |||
|  | 		obj.getVar("MouseLock").push_vector(1); | |||
|  | 
 | |||
|  | 		print(" lock mouse"); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | function unLockMouse(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	if (sq_IsMyControlObject(obj) && sq_getJob(obj) == ENUM_CHARACTERJOB_CREATOR_MAGE) | |||
|  | 	{ | |||
|  | 		sq_SetClipCursor(false); | |||
|  | 		setEnableBattleInUI(true);	 | |||
|  | 		obj.getVar("MouseLock").clear_vector(); | |||
|  | 		obj.getVar("MouseLock").push_vector(0); | |||
|  | 
 | |||
|  | 		print(" un lock mouse"); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function getCreatorTypeGaugeRate(obj) | |||
|  | { | |||
|  | 	local appendage = getCreatorMageStateAppendage(obj); | |||
|  | 
 | |||
|  | 	if (appendage) | |||
|  | 	{ | |||
|  | 		local max_gaugeValue = appendage.sq_var.get_vector(I_MAX_COUNT); | |||
|  | 		local gaugeValue = appendage.sq_var.get_vector(I_REMAIN_COUNT); | |||
|  | 		 | |||
|  | 		local rate = (gaugeValue.tofloat() * 100.0) / max_gaugeValue.tofloat(); | |||
|  | 		 | |||
|  | 		return rate; | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return 0.0; | |||
|  | } | |||
|  | 
 | |||
|  | function getCreatorTypeColor(obj, type) | |||
|  | { | |||
|  | 	local rgb = sq_RGB(255,50,50); | |||
|  | 	switch (type) | |||
|  | 	{ | |||
|  | 	case CREATOR_TYPE_FLAME: | |||
|  | 		rgb = sq_RGB(255,50,50); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_ICE: | |||
|  | 		rgb = sq_RGB(50,255,255); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_DISTURB: | |||
|  | 		rgb = sq_RGB(110,30,230); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_GUARDIAN: | |||
|  | 		rgb = sq_RGB(255,170,40); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_WIND: | |||
|  | 		rgb = sq_RGB(255,250,150); | |||
|  | 		break; | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return rgb; | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function getCreatorTypeAlphaColor(obj, type, alpha) | |||
|  | { | |||
|  | 	local rgba = sq_RGBA(255,50,50,alpha); | |||
|  | 	switch (type) | |||
|  | 	{ | |||
|  | 	case CREATOR_TYPE_FLAME: | |||
|  | 		rgba = sq_RGBA(255,50,50,alpha); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_ICE: | |||
|  | 		rgba = sq_RGBA(50,255,255,alpha); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_DISTURB: | |||
|  | 		rgba = sq_RGBA(110,30,230,alpha); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_GUARDIAN: | |||
|  | 		rgba = sq_RGBA(255,170,40,alpha); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_WIND: | |||
|  | 		rgba = sq_RGBA(255,250,150,alpha); | |||
|  | 		break; | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return rgba; | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | // 觼葬缣桧搅暧 颤殓缣 评塭 楼撩横?蛤虽蒂 葬欐?栖棻. | |||
|  | function getCreatorMageAppendageByType(obj, type) | |||
|  | { | |||
|  | 	local appendage = null; | |||
|  | 	local appendageName = null; | |||
|  | 
 | |||
|  | 	switch (type) | |||
|  | 	{ | |||
|  | 	case CREATOR_TYPE_FLAME: | |||
|  | 		appendageName = "Character/CreatorMage/ap_creatormage_flame.nut"; | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_ICE: | |||
|  | 		appendageName = "Character/CreatorMage/ap_creatormage_ice.nut"; | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_DISTURB: | |||
|  | 		appendageName = "Character/CreatorMage/ap_creatormage_disturb.nut"; | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_GUARDIAN: | |||
|  | 		appendageName = "Character/CreatorMage/ap_creatormage_guardian.nut"; | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_WIND: | |||
|  | 		appendageName = "Character/CreatorMage/ap_creatormage_wind.nut"; | |||
|  | 		break; | |||
|  | 	}	 | |||
|  | 	 | |||
|  | 	if (appendageName != null) | |||
|  | 		appendage = CNSquirrelAppendage.sq_GetAppendage(obj,appendageName); | |||
|  | 	 | |||
|  | 	return appendage; | |||
|  | } | |||
|  | 
 | |||
|  | function getAniCreatorSkillOn(obj, type) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return null; | |||
|  | 		 | |||
|  | 	local sq_var = obj.getVar(); | |||
|  | 	 | |||
|  | 	local ani = null; | |||
|  | 	switch (type) | |||
|  | 	{ | |||
|  | 	case CREATOR_TYPE_FLAME: | |||
|  | 		 ani = sq_var.GetAnimationMap("hud_skillicon_creator_fire", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_fire.ani"); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_ICE: | |||
|  | 		 ani = sq_var.GetAnimationMap("hud_skillicon_creator_ice", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_ice.ani"); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_DISTURB: | |||
|  | 		 ani = sq_var.GetAnimationMap("hud_skillicon_creator_defence", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_defence.ani"); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_GUARDIAN: | |||
|  | 		 ani = sq_var.GetAnimationMap("hud_skillicon_creator_block", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_block.ani"); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_WIND: | |||
|  | 		 ani = sq_var.GetAnimationMap("hud_skillicon_creator_wind", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_wind.ani"); | |||
|  | 		break; | |||
|  | 	}	 | |||
|  | 	 | |||
|  | 	return ani; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function getAniCreatorSkillOff(obj, type) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return null; | |||
|  | 		 | |||
|  | 	local sq_var = obj.getVar(); | |||
|  | 	 | |||
|  | 	local ani = null; | |||
|  | 	switch (type) | |||
|  | 	{ | |||
|  | 	case CREATOR_TYPE_FLAME: | |||
|  | 		 ani = sq_var.GetAnimationMap("hud_skillicon_creator_fire02", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_fire02.ani"); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_ICE: | |||
|  | 		 ani = sq_var.GetAnimationMap("hud_skillicon_creator_ice02", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_ice02.ani"); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_DISTURB: | |||
|  | 		 ani = sq_var.GetAnimationMap("hud_skillicon_creator_defence02", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_defence02.ani"); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_GUARDIAN: | |||
|  | 		 ani = sq_var.GetAnimationMap("hud_skillicon_creator_block02", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_block02.ani"); | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_WIND: | |||
|  | 		 ani = sq_var.GetAnimationMap("hud_skillicon_creator_wind02", "Character/Mage/CreatorAnimation/ui/hud_skillicon/hud_skillicon_creator_wind02.ani"); | |||
|  | 		break; | |||
|  | 	}	 | |||
|  | 
 | |||
|  | 	if (ani) | |||
|  | 	{ | |||
|  | 		 | |||
|  | 		local rate = getCreatorTypeGaugeRate(obj); | |||
|  | 		 | |||
|  | 		local currentFrameIndex = ani.GetCurrentFrameIndex(); | |||
|  | 		 | |||
|  | 		if (rate < 50.0 && rate > 30.0) | |||
|  | 		{ | |||
|  | 			if (currentFrameIndex > 3) | |||
|  | 			{ | |||
|  | 				ani.setEnd(false); | |||
|  | 				ani.setCurrentFrameWithChildLayer(0); | |||
|  | 			} | |||
|  | 		} | |||
|  | 		else if (rate <= 30.0) | |||
|  | 		{ | |||
|  | 			if (currentFrameIndex > 8) | |||
|  | 			{ | |||
|  | 				ani.setEnd(false); | |||
|  | 				ani.setCurrentFrameWithChildLayer(5); | |||
|  | 			} | |||
|  | 		} | |||
|  | 			 | |||
|  | 	 | |||
|  | 	} | |||
|  | 
 | |||
|  | 	 | |||
|  | 	return ani; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | // 觼葬缣搅暧 醱瞪晦栋击 撮??栖棻. | |||
|  | function setChargeCreatorMageGauge(obj, type, value) | |||
|  | { | |||
|  | 	local appendage = getCreatorMageAppendageByType(obj, type); | |||
|  | 	 | |||
|  | 	if (appendage) | |||
|  | 	{ | |||
|  | 		if (value) | |||
|  | 		{ // 醱瞪卫蒙桧塭贼 颤桧该蒂 亿煎 撮??栖棻. | |||
|  | 			appendage.getTimer().Reset(); | |||
|  | 			appendage.getTimer().Start(10000,0); | |||
|  | 			 | |||
|  | 			// 陴嬴毡朝 偎热蒂 ?学?怃 ?煎 瓣表韩阳梱虽暧 卫除击 掘?鹿栖棻. | |||
|  | 			local initRemainCnt = appendage.sq_var.get_vector(I_REMAIN_COUNT); | |||
|  | 			appendage.sq_var.set_vector(I_CHARGE_INIT_COUNT, initRemainCnt); | |||
|  | 		} | |||
|  | 			 | |||
|  | 		appendage.sq_var.set_vector(l_CHARGE_ON, value); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | // 觼葬缣搅暧 陕 撮睡蝶鉴缣 渠? 啪桧虽 模赅榆击 掘?栖棻. | |||
|  | function getCreatorSkillConsumeValue(obj, skillIndex) | |||
|  | { | |||
|  | 	local consumeValue = 10; | |||
|  | 	local staticRowIndex = -1; | |||
|  | 	 | |||
|  | 	switch (skillIndex) | |||
|  | 	{ | |||
|  | 	case SKILL_FIREWALL: | |||
|  | 		// 1. 模赅榆 | |||
|  | 		staticRowIndex = 1; | |||
|  | 		break; | |||
|  | 	case SKILL_WOODFENCE: | |||
|  | 		// 1. 模赅榆 | |||
|  | 		staticRowIndex = 1; | |||
|  | 		break; | |||
|  | 	case SKILL_ICEROCK: | |||
|  | 		// 2. 模赅榆 | |||
|  | 		staticRowIndex = 2; | |||
|  | 		break; | |||
|  | 	case SKILL_FIREHURRICANE: | |||
|  | 		// 1. 模赅榆 | |||
|  | 		staticRowIndex = 1; | |||
|  | 		break; | |||
|  | 	case SKILL_ICESHIELD: | |||
|  | 		// 1. 模赅榆 | |||
|  | 		staticRowIndex = 1; | |||
|  | 		break; | |||
|  | 	case SKILL_ICEPLATE: | |||
|  | 		// 1. 模赅榆 | |||
|  | 		staticRowIndex = 1; | |||
|  | 		break; | |||
|  | 	case SKILL_MGRAB: | |||
|  | 		// 2. 模赅榆 | |||
|  | 		staticRowIndex = 2; | |||
|  | 		break; | |||
|  | 	case SKILL_FIREMETEO: | |||
|  | 		// 2. 模赅榆 | |||
|  | 		staticRowIndex = 2; | |||
|  | 		break; | |||
|  | 	case SKILL_WINDPRESS: | |||
|  | 		// 2. 模赅榆 | |||
|  | 		staticRowIndex = 2; | |||
|  | 		break; | |||
|  | 	case SKILL_WINDSTORM: | |||
|  | 		// 2. 模赅榆 | |||
|  | 		staticRowIndex = 1; | |||
|  | 		break; | |||
|  | 	} | |||
|  | 	 | |||
|  | 	if (staticRowIndex != -1) | |||
|  | 		consumeValue = sq_GetIntData(obj, skillIndex, staticRowIndex); | |||
|  | 	 | |||
|  | 	return consumeValue; | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | // 觼溯桧搅暧 赅苌 楼撩 啪桧虽 醱瞪击 卫蒙?栖棻. | |||
|  | function onAllChargeCreatorMageGauge(obj) | |||
|  | { | |||
|  | 	for (local i = CREATOR_TYPE_FLAME; i < CREATOR_TYPE_MAX; i++) | |||
|  | 	{ | |||
|  | 		setChargeCreatorMageGauge(obj, i, 1); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | function getCreatorMageStateAppendage(obj) | |||
|  | { | |||
|  | 	// 觼葬缣桧搅 state 横?蛤虽 殓栖棻. | |||
|  | 	// 蝶鉴击 噙贼 桧翕?贼怃 ?廓缣 ?釭暧 蝶鉴虏 噩 热 毡晦阳侥缣 横?蛤虽蒂 舒朝匙殓栖棻. | |||
|  | 	// ap_creatormage_flame.nut | |||
|  | 	// ap_creatormage_disturb.nut | |||
|  | 	// ap_creatormage_guardian.nut | |||
|  | 	// ap_creatormage_ice.nut | |||
|  | 	 | |||
|  | 	// 觼葬缣桧搅暧 奢问颤殓击 椭横褫栖棻. | |||
|  | 	local type = obj.getVar("state").get_vector(0); | |||
|  | 	 | |||
|  | 	if (type < 0) | |||
|  | 		return null; | |||
|  | 		 | |||
|  | 	local appendage = getCreatorMageAppendageByType(obj, type); | |||
|  | 	 | |||
|  | 	if (!appendage) | |||
|  | 		return null; | |||
|  | 	 | |||
|  | 	 | |||
|  | 	if (appendage.sq_var.size_vector() == 0) | |||
|  | 	{ | |||
|  | 		for (local i = 0; i < I_SIZE; i++) | |||
|  | 			appendage.sq_var.push_vector(-1); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return appendage; | |||
|  | } | |||
|  | 
 | |||
|  | function getCreatorBeforePosX(obj) | |||
|  | { | |||
|  | 	local appendage = getCreatorMageStateAppendage(obj); | |||
|  | 	 | |||
|  | 	if(appendage) | |||
|  | 	{ | |||
|  | 		return appendage.sq_var.get_vector(I_BEFORE_X); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return -1; | |||
|  | } | |||
|  | 
 | |||
|  | function getCreatorBeforePosY(obj) | |||
|  | { | |||
|  | 	local appendage = getCreatorMageStateAppendage(obj); | |||
|  | 	 | |||
|  | 	if(appendage) | |||
|  | 	{ | |||
|  | 		return appendage.sq_var.get_vector(I_BEFORE_Y); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return -1; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function setCreatorBeforePos(obj, x, y) | |||
|  | { | |||
|  | 	local appendage = getCreatorMageStateAppendage(obj); | |||
|  | 	 | |||
|  | 	if(appendage) | |||
|  | 	{ | |||
|  | 		if (appendage.sq_var.size_vector() == 0) | |||
|  | 		{ | |||
|  | 			for (local i = 0; i < I_SIZE; i++) | |||
|  | 				appendage.sq_var.push_vector(0); | |||
|  | 		} | |||
|  | 	 | |||
|  | 		appendage.sq_var.set_vector(I_BEFORE_X, x); | |||
|  | 		appendage.sq_var.set_vector(I_BEFORE_Y, y); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | function setCreatorBeforeCount(obj, cnt) | |||
|  | { | |||
|  | 	local appendage = getCreatorMageStateAppendage(obj); | |||
|  | 	 | |||
|  | 	if(appendage) | |||
|  | 	{ | |||
|  | 		if (appendage.sq_var.size_vector() == 0) | |||
|  | 		{ | |||
|  | 			for (local i = 0; i < I_SIZE; i++) | |||
|  | 				appendage.sq_var.push_vector(0); | |||
|  | 		} | |||
|  | 	 | |||
|  | 		appendage.sq_var.set_vector(I_BEFORE_COUNT, cnt); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | // 觼葬缣桧搅暧 蝶鉴樯策蝶蒂 撮??栖棻. | |||
|  | function setCreatorSkillStateSkillIndex(obj, index) | |||
|  | {	 | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	local oldStateIndex = getCreatorSkillStateSkillIndex(obj); | |||
|  | 
 | |||
|  | 	if (oldStateIndex == CREATOR_TYPE_DISTURB) | |||
|  | 	{ | |||
|  | 		// 寞?赅萄缣怃 萄煎办蒂 堤舆朝匙击 ?廓 ?轿?鄹栖棻. | |||
|  | 		// 援艇鼻鹧缣怃 蝶鉴樯策蝶蒂 渗唳?贼 夸醮毡朝 帼斜嫦当 | |||
|  | 		onMouseButtonUp_Mgrab(obj); | |||
|  | 	} | |||
|  | 
 | |||
|  | 
 | |||
|  | 	obj.getVar("state").clear_vector(); | |||
|  | 	obj.getVar("state").push_vector(index); | |||
|  | 
 | |||
|  | 	if (index != -1) | |||
|  | 	{ | |||
|  | 		local ani = getAniCreatorSkillOn(obj, index); | |||
|  | 		 | |||
|  | 		if (obj.getVar("gauge_ani").size_vector() == 0) | |||
|  | 			obj.getVar("gauge_ani").push_vector(1); | |||
|  | 		else | |||
|  | 			obj.getVar("gauge_ani").set_vector(0, 1); | |||
|  | 			 | |||
|  | 		if (ani) | |||
|  | 		{ | |||
|  | 			obj.sq_PlaySound("PCHANGE"); | |||
|  | 			sq_Rewind(ani); | |||
|  | 		} | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | // 觼葬缣桧搅暧 蝶鉴偎热蒂 撮??栖棻. | |||
|  | function setCreatorSkillCount(obj, cnt) | |||
|  | { | |||
|  | 
 | |||
|  | 	local appendage = getCreatorMageStateAppendage(obj); | |||
|  | 	 | |||
|  | 	if (appendage) | |||
|  | 	{ | |||
|  | 		if (appendage.sq_var.size_vector() == 0) | |||
|  | 		{ | |||
|  | 			for (local i = 0; i < I_SIZE; i++) | |||
|  | 				appendage.sq_var.push_vector(0); | |||
|  | 		} | |||
|  | 		 | |||
|  | 		appendage.sq_var.set_vector(I_REMAIN_COUNT, cnt); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | // ?营噙坚 毡朝 蝶鉴樯策蝶 殓栖棻. | |||
|  | function getCreatorSkillStateSkillIndex(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return -1; | |||
|  | 		 | |||
|  | 	if (obj.getVar("state").size_vector() == 0) | |||
|  | 	{ | |||
|  | 		obj.getVar("state").push_vector(-1); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return obj.getVar("state").get_vector(0); | |||
|  | } | |||
|  | 
 | |||
|  | // 陴嬴毡朝 蝶鉴偎热 | |||
|  | function getCreatorRemainSkillCount(obj) | |||
|  | { | |||
|  | 	local remainCount = 0; | |||
|  | 	 | |||
|  | 	local appendage = getCreatorMageStateAppendage(obj); | |||
|  | 	 | |||
|  | 	if(appendage) | |||
|  | 	{ | |||
|  | 		if (appendage.sq_var.size_vector() == 0) | |||
|  | 		{ | |||
|  | 			for (local i = 0; i < I_SIZE; i++) | |||
|  | 				appendage.sq_var.push_vector(0); | |||
|  | 		} | |||
|  | 	 | |||
|  | 		remainCount = appendage.sq_var.get_vector(I_REMAIN_COUNT); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return remainCount; | |||
|  | } | |||
|  | 
 | |||
|  | // 觼溯桧搅暧 卫瞪饵遴萄蒂 嫦翕?栖棻. | |||
|  | function playCreatorCastSound(obj, skillIndex) | |||
|  | { | |||
|  | 	switch (skillIndex) | |||
|  | 	{ | |||
|  | 	case SKILL_FIREWALL: | |||
|  | 		obj.sq_PlaySound("R_CR_FIREWALL"); | |||
|  | 		break; | |||
|  | 	case SKILL_FIREMETEO: | |||
|  | 		obj.sq_PlaySound("R_CR_METEO"); | |||
|  | 		break; | |||
|  | 	case SKILL_ICEROCK: | |||
|  | 		obj.sq_PlaySound("R_CR_ICESTONE"); | |||
|  | 		break; | |||
|  | 	case SKILL_ICEPLATE: | |||
|  | 		obj.sq_PlaySound("R_CR_ICEPLATE"); | |||
|  | 		break; | |||
|  | 	case SKILL_WOODFENCE: | |||
|  | 		obj.sq_PlaySound("R_CR_WOODFENCE"); | |||
|  | 		break; | |||
|  | 	case SKILL_MGRAB: | |||
|  | 		obj.sq_PlaySound("R_CR_THROW_MONSTER"); | |||
|  | 		break; | |||
|  | 	case SKILL_WINDSTORM: | |||
|  | 		obj.sq_PlaySound("R_CR_WINDSTORM"); | |||
|  | 		break; | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | function useCreatorSkill(obj, skillIndex, x, y, consumeValue) | |||
|  | { | |||
|  | 	local appendage = getCreatorMageStateAppendage(obj); | |||
|  | 	 | |||
|  | 	if(appendage) | |||
|  | 	{ | |||
|  | 		switch (skillIndex) | |||
|  | 		{ | |||
|  | 		case SKILL_FIREWALL: | |||
|  | 		case SKILL_WOODFENCE: | |||
|  | 		case SKILL_ICEROCK: | |||
|  | 		case SKILL_FIREMETEO: | |||
|  | 		case SKILL_ICEPLATE: | |||
|  | 			{ | |||
|  | 				// 鼻晦 蝶鉴菟擎 夥款y蹴匐仪击 ?瑭捡 ?栖棻. | |||
|  | 				if (y < TILE_FLOOR_START_Y) | |||
|  | 					return false; | |||
|  | 			} | |||
|  | 			break; | |||
|  | 		} | |||
|  | 		 | |||
|  | 
 | |||
|  | 		local cnt = getCreatorRemainSkillCount(obj); | |||
|  | 		 | |||
|  | 		local remainCnt = (cnt - consumeValue); | |||
|  | 		 | |||
|  | 		if(remainCnt < 0) | |||
|  | 		{ | |||
|  | 			remainCnt = 0; | |||
|  | 
 | |||
|  | 			if (obj.isMessage()) | |||
|  | 			{ | |||
|  | 				//29004>啪桧虽陛 睡褶?罹 %s蝶鉴桧 ?薯腌栖棻. | |||
|  | 
 | |||
|  | 				local type = getCreatorSkillStateSkillIndex(obj); | |||
|  | 
 | |||
|  | 				local typeStrIndex = 0; | |||
|  | 
 | |||
|  | 				switch (type) | |||
|  | 				{ | |||
|  | 				case CREATOR_TYPE_FLAME: | |||
|  | 					typeStrIndex = 29005; | |||
|  | 					break; | |||
|  | 				case CREATOR_TYPE_ICE: | |||
|  | 					typeStrIndex = 29006; | |||
|  | 					break; | |||
|  | 				case CREATOR_TYPE_DISTURB: | |||
|  | 					typeStrIndex = 29007; | |||
|  | 					break; | |||
|  | 				case CREATOR_TYPE_GUARDIAN: | |||
|  | 					typeStrIndex = 29008; | |||
|  | 					break; | |||
|  | 				case CREATOR_TYPE_WIND: | |||
|  | 					typeStrIndex = 29009; | |||
|  | 					break; | |||
|  | 				}	 | |||
|  | 
 | |||
|  | 				if (typeStrIndex) | |||
|  | 				{ | |||
|  | 					sq_AddMessagePrintf(29004, typeStrIndex); | |||
|  | 				} | |||
|  | 			} | |||
|  | 
 | |||
|  | 			setCreatorSkillStateSkillIndex(obj, -1); | |||
|  | 			// 赅苌 觼溯桧搅暧 楼撩 醱瞪击 卫蒙?栖棻. | |||
|  | 			//setCreatorBeforeCount(obj, remainCnt); | |||
|  | 			onAllChargeCreatorMageGauge(obj); | |||
|  | 
 | |||
|  | 
 | |||
|  | 			return false; | |||
|  | 		} | |||
|  | 
 | |||
|  | 		setCreatorBeforePos(obj, x, y); | |||
|  | 		setCreatorBeforeCount(obj, cnt); | |||
|  | 		setCreatorSkillCount(obj, remainCnt); | |||
|  | 
 | |||
|  | 		//  | |||
|  | 		appendage.getTimer().Reset(); | |||
|  | 		appendage.getTimer().Start(10000,0); | |||
|  | 
 | |||
|  | 
 | |||
|  | 		// 质湍 晦奖击 绿掖?怃 譆蟾煎 噙朝匙桧塭贼..卫瞪饵遴萄 轿溘 | |||
|  | 		if (obj.getVar("useskill").size_vector() == 0) | |||
|  | 		{ | |||
|  | 			obj.getVar("useskill").push_vector(skillIndex); | |||
|  | 			playCreatorCastSound(obj, skillIndex); | |||
|  | 		} | |||
|  | 		else | |||
|  | 		{		 | |||
|  | 			if (obj.getVar("useskill").get_vector(0) != skillIndex) | |||
|  | 			{ | |||
|  | 				obj.getVar("useskill").set_vector(0, skillIndex); | |||
|  | 				playCreatorCastSound(obj, skillIndex); | |||
|  | 			} | |||
|  | 		} | |||
|  | 		// | |||
|  | 		 | |||
|  | 
 | |||
|  | 		local rate = getCreatorTypeGaugeRate(obj); | |||
|  | 		 | |||
|  | 		if (rate < 50) | |||
|  | 		{ | |||
|  | 			if (obj.getVar("gauge_ani").get_vector(0) != 2) | |||
|  | 			{ | |||
|  | 				local type = getCreatorSkillStateSkillIndex(obj); | |||
|  | 				local ani = getAniCreatorSkillOff(obj, type); | |||
|  | 				 | |||
|  | 				if (ani) | |||
|  | 				{ | |||
|  | 					sq_Rewind(ani); | |||
|  | 				} | |||
|  | 				 | |||
|  | 				if (obj.getVar("gauge_ani").size_vector() == 0) | |||
|  | 					obj.getVar("gauge_ani").push_vector(2); | |||
|  | 				else | |||
|  | 					obj.getVar("gauge_ani").set_vector(0, 2); | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return true; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | // ?营 蹂羶? 颤殓 葆办蝶 豭赝葛击 ?击 阳 横雯 蝶鉴樯虽 椭横鹿栖棻. | |||
|  | function getLButtonSkillByType(obj, type) | |||
|  | { | |||
|  | 	if (type < 0 || type >= CREATOR_TYPE_MAX) | |||
|  | 		return -1; | |||
|  | 		 | |||
|  | 	local size = CREATOR_TYPE_MAX; // ?釭 涡 跷陛?捡? | |||
|  | 	local skill_l =[]; | |||
|  | 	 | |||
|  | 	skill_l.resize(size); | |||
|  | 
 | |||
|  | 	skill_l[CREATOR_TYPE_NONE] = -1; | |||
|  | 	skill_l[CREATOR_TYPE_FLAME] = SKILL_FIREWALL; | |||
|  | 	skill_l[CREATOR_TYPE_ICE] = SKILL_ICEROCK; | |||
|  | 	skill_l[CREATOR_TYPE_DISTURB] = SKILL_WOODFENCE; | |||
|  | 	skill_l[CREATOR_TYPE_GUARDIAN] = SKILL_FIREHURRICANE; | |||
|  | 	skill_l[CREATOR_TYPE_WIND] = SKILL_WINDPRESS; | |||
|  | 
 | |||
|  | 	return 	skill_l[type]; | |||
|  | } | |||
|  | 
 | |||
|  | // ?营 蹂羶? 颤殓 葆办蝶 螃艇赝葛击 ?击 阳 横雯 蝶鉴樯虽 椭横鹿栖棻. | |||
|  | function getRButtonSkillByType(obj, type) | |||
|  | { | |||
|  | 	 | |||
|  | 	if (type < 0 || type >= CREATOR_TYPE_MAX) | |||
|  | 		return -1; | |||
|  | 	 | |||
|  | 	 | |||
|  | 	local size = CREATOR_TYPE_MAX; // ?釭 涡 跷陛?捡? | |||
|  | 	local skill_l =[]; | |||
|  | 	 | |||
|  | 	skill_l.resize(size); | |||
|  | 
 | |||
|  | 	skill_l[CREATOR_TYPE_NONE] = -1; | |||
|  | 	skill_l[CREATOR_TYPE_FLAME] = SKILL_FIREMETEO; | |||
|  | 	skill_l[CREATOR_TYPE_ICE] = SKILL_ICEPLATE; | |||
|  | 	skill_l[CREATOR_TYPE_DISTURB] = SKILL_MGRAB; | |||
|  | 	skill_l[CREATOR_TYPE_GUARDIAN] = SKILL_ICESHIELD; | |||
|  | 	skill_l[CREATOR_TYPE_WIND] = SKILL_WINDSTORM; | |||
|  | 	 | |||
|  | 	return 	skill_l[type]; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | // ?营 葆办蝶 豭赝葛 帼?击 扬毓击 阳 釭螃朝 蝶鉴击 葬欐?栖棻. | |||
|  | function getLButtonSkill(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return -1; | |||
|  | 		 | |||
|  | 	local type = obj.getVar("state").get_vector(0); | |||
|  | 	 | |||
|  | 	local skillIndex = getLButtonSkillByType(obj, type); | |||
|  | 	 | |||
|  | 	 | |||
|  | 	if (skillIndex != -1) | |||
|  | 	{ | |||
|  | 		local level = sq_GetSkillLevel(obj, skillIndex); | |||
|  | 		 | |||
|  | 		if (level <= 0) | |||
|  | 			return -1; | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return skillIndex; | |||
|  | } | |||
|  | 
 | |||
|  | // ?营 葆办蝶 螃艇赝葛 帼?击 扬毓击 阳 釭螃朝 蝶鉴击 椭蝗栖棻. | |||
|  | function getRButtonSkill(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return -1; | |||
|  | 		 | |||
|  | 	local type = obj.getVar("state").get_vector(0); | |||
|  | 	 | |||
|  | 	 | |||
|  | 	local skillIndex = getRButtonSkillByType(obj, type); | |||
|  | 	 | |||
|  | 	if (skillIndex != -1) | |||
|  | 	{ | |||
|  | 		local level = sq_GetSkillLevel(obj, skillIndex); | |||
|  | 		 | |||
|  | 		if (level <= 0) | |||
|  | 			return -1; | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return skillIndex; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | // ?营 觼葬缣桧搅 瞪瘫 ui ?撩? 鼻鹧樯虽 羹觼?琐栖棻. | |||
|  | // 橾奁 ui陛 ?撩?樯虽 羹觼?贼 腌栖棻. | |||
|  | function isEnableCreatorBattleInUI() | |||
|  | { | |||
|  | 	local mainControl = sq_GetGlobalMainControl(); | |||
|  | 
 | |||
|  | 	if (mainControl) | |||
|  | 	{ | |||
|  | 		return mainControl.IsEnable(); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return false; | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function setEnableBattleInUI(enable) | |||
|  | { | |||
|  | 	local quiestUI = sq_GetPopupWindowMainCotrol(1); // quest guide | |||
|  | 	if (quiestUI) | |||
|  | 	{ | |||
|  | 		quiestUI.SetEnable(enable); | |||
|  | 		quiestUI.SetVisible(true); | |||
|  | 	} | |||
|  | 
 | |||
|  | 	local group = sq_GetUISystemChatControl(99); | |||
|  | 
 | |||
|  | 	if (group) | |||
|  | 	{ | |||
|  | 		group.SetEnable(enable); | |||
|  | 		group.SetVisible(true); | |||
|  | 	} | |||
|  | 
 | |||
|  | 
 | |||
|  | 	local chatControl = sq_GetGlobalChatControl(); | |||
|  | 
 | |||
|  | 	if (chatControl) | |||
|  | 	{ | |||
|  | 		chatControl.SetEnable(enable); | |||
|  | 		chatControl.SetVisible(true); | |||
|  | 	} | |||
|  | 
 | |||
|  | 	local mainControl = sq_GetGlobalMainControl(); | |||
|  | 
 | |||
|  | 	if (mainControl) | |||
|  | 	{ | |||
|  | 		mainControl.SetEnable(enable); | |||
|  | 		mainControl.SetVisible(true); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	local strikerUI = sq_GetStrikerSkillUi(); | |||
|  | 
 | |||
|  | 	if (strikerUI) | |||
|  | 	{ | |||
|  | 		strikerUI.SetEnable(enable); | |||
|  | 	//	strikerUI.SetVisible(enable); | |||
|  | 	} | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | // 褐叙 议葛搅 - 觼葬缣桧搅缣怃 瞪瘫 卫 葆办蝶 晦栋击 斛渠??晦 嫔?  | |||
|  | // ?贼顶 ui菟 葆办蝶 ?撩?陛 肾朝虽 寰肾朝虽 晦遽桧 肾朝 嫔纂殓栖棻. 桧够缣 属寥or sqr 夥樯注击 ?栖棻. | |||
|  | function onOpenPopupWindow_CreatorMage(obj, popupType, windowTileType) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	if (!IsInBattleCreator(obj)) | |||
|  | 	{ | |||
|  | 		return; | |||
|  | 	} | |||
|  | 	 | |||
|  | 	// 樯? 孺紫办谛 晦颤 ?釭?釭 ?机击 鼠卫?栖棻. | |||
|  | 	if (sq_IsIgnoreOpenPopupCreator(popupType, windowTileType)) | |||
|  | 		return; | |||
|  | 		 | |||
|  | 
 | |||
|  | 
 | |||
|  | 	local isEsc = sq_IsESCClosableWindow(popupType); | |||
|  | 	 | |||
|  | 	local windowsNum = sq_GetPopupWindows();	 | |||
|  | 	 | |||
|  | 	 | |||
|  | 	// 褐叙 议葛搅 - 觼葬缣桧搅缣怃 瞪瘫 卫 葆办蝶 晦栋击 斛渠??晦 嫔?  | |||
|  | 	// ?贼顶 ui菟 葆办蝶 ?撩?陛 肾朝虽 寰肾朝虽 晦遽桧 肾朝 嫔纂殓栖棻. 桧够缣 属寥or sqr 夥樯注击 ?栖棻. | |||
|  | 	unLockMouse(obj); | |||
|  | } | |||
|  | 
 | |||
|  | function onClosePopupWindow_CreatorMage(obj, popupType, windowTileType) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 		 | |||
|  | 	if (!IsInBattleCreator(obj)) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 		 | |||
|  | 	// 樯? 孺紫办谛 晦颤 ?釭?釭 ?机击 鼠卫?栖棻. | |||
|  | 	if (sq_IsIgnoreOpenPopupCreator(popupType, windowTileType)) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	local isEsc = sq_IsESCClosableWindow(popupType); | |||
|  | 	 | |||
|  | 	// 翮萼 孺紫办陛 ?釭塭紫 毡戏贼 鼠卫?栖棻.	 | |||
|  | 	 | |||
|  | 	//if (!isEsc) | |||
|  | 		//return; | |||
|  | 
 | |||
|  | 	local windowsNum = sq_GetPopupWindows();	 | |||
|  | 	// | |||
|  | 	 | |||
|  | 	// 觼葬缣桧搅陛 鼠卫? 热 桡朝 夔?煤?捡?朝 ?机桧 翮溥毡朝虽 羹觼?朝 ?热殓栖棻. | |||
|  | 	if (sq_IsOpenCreatorControlPopupWindows()) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	print(" onClose popupType:" + popupType + " windowTileType:" + windowTileType); | |||
|  | 	//print(" clip on"); | |||
|  | 	lockMouse(obj); | |||
|  | } | |||
|  | 
 | |||
|  | // 渠莲饵遴萄蒂 撮??朝 螃帼塭桧注胀 ?热殓栖棻.. | |||
|  | // 觼葬缣桧搅朝 渠莲横鸥饵遴萄陛 釭螃贼 寰腌栖棻. | |||
|  | function playDashAttackSound_CreatorMage(obj)  | |||
|  | { | |||
|  | 	return 1; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | // 螃帼胀 嬴桧蛊击 琼晦嫔? ?热 殓栖棻. | |||
|  | function checkOverItemObject_CreatorMage(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return null; | |||
|  | 	 | |||
|  | 	 | |||
|  | 	 | |||
|  | 	local itemObj = null; | |||
|  | 	 | |||
|  | 	local objMgr = obj.getObjectManager(); | |||
|  | 	 | |||
|  | 	if (objMgr) | |||
|  | 	{ | |||
|  | 		itemObj = objMgr.getMeetItemObject(IMouse.GetXPos(), IMouse.GetYPos()); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return itemObj; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | // 觼葬缣桧搅暧 颤殓涤 蝶鉴樯策蝶蒂 椭蝗栖棻. | |||
|  | function getTypeSkillIndex(obj, type) | |||
|  | { | |||
|  | 	local idx = SKILL_CREATORFLAME; | |||
|  | 	switch (type) | |||
|  | 	{ | |||
|  | 	case CREATOR_TYPE_FLAME: | |||
|  | 		idx = SKILL_CREATORFLAME; | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_ICE: | |||
|  | 		idx = SKILL_CREATORICE; | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_DISTURB: | |||
|  | 		idx = SKILL_CREATORDISTURB; | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_GUARDIAN: | |||
|  | 		idx = SKILL_CREATORGUARDIAN; | |||
|  | 		break; | |||
|  | 	case CREATOR_TYPE_WIND: | |||
|  | 		idx = SKILL_CREATORWIND; | |||
|  | 		break; | |||
|  | 	}	 | |||
|  | 	 | |||
|  | 	return idx; | |||
|  | } | |||
|  | 
 | |||
|  | function drawMainCustomUI_CreatorMage(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 	local sq_var = obj.getVar(); | |||
|  | 			 | |||
|  | 	// 蝶鉴蜗煜 | |||
|  | 	local hud_creator_b_gauge = sq_var.GetAnimationMap("hud_creator_b_gauge", "Character/Mage/CreatorAnimation/ui/hud_creator_b_gauge.ani"); | |||
|  | 	local hud_creator_b_select = sq_var.GetAnimationMap("hud_creator_b_select", "Character/Mage/CreatorAnimation/ui/hud_creator_b_select.ani"); | |||
|  | 	 | |||
|  | 	local skill_ui_index = 0; | |||
|  | 
 | |||
|  | 
 | |||
|  | 	local x = 626; | |||
|  | 	local y = 588; | |||
|  | 	local offset = 36; | |||
|  | 
 | |||
|  | 	// ?斜葬晦 | |||
|  | 	local hudCreatorAni = sq_var.GetAnimationMap("hud_creator_back", "Character/Mage/CreatorAnimation/ui/hud_creator_back.ani");	 | |||
|  | 	sq_DrawSpecificFrame(hudCreatorAni, x, y, false, 0, false, 1.0); | |||
|  | 	// | |||
|  | 	 | |||
|  | 	// 谆办濠陛 毡击 热 毡戏嘎煎 桧够缣怃 寡?樯虽 嬴棋虽蒂 羹觼?罹  | |||
|  | 	// 寡?桧 嬴棋 唳办 醴怃谛 ui蒂 ?横鄹栖棻. | |||
|  | 	if (!IsInBattleCreator(obj)) | |||
|  | 	{ | |||
|  | 		local isEnable = isEnableCreatorBattleInUI(); | |||
|  | 		 | |||
|  | 		if (!isEnable) | |||
|  | 		{ | |||
|  | 			unLockMouse(obj); | |||
|  | 		} | |||
|  | 		 | |||
|  | 		//return; | |||
|  | 	} | |||
|  | 	 | |||
|  | 	 | |||
|  | 	 | |||
|  | 	// 摹鸥? 才舒葬 斜葬晦 | |||
|  | 	if (getCreatorSkillStateSkillIndex(obj) != -1) | |||
|  | 	{	 | |||
|  | 		local type = getCreatorSkillStateSkillIndex(obj); | |||
|  | 		 | |||
|  | 		local skillmgr = obj.getSkillManager(); | |||
|  | 		 | |||
|  | 		local slot = -1; | |||
|  | 		if (skillmgr) | |||
|  | 		{ | |||
|  | 			local index = getTypeSkillIndex(obj, type); | |||
|  | 			slot = skillmgr.getSlotindex(index); | |||
|  | 		} | |||
|  | 		 | |||
|  | 		if (slot != -1) | |||
|  | 		{	 | |||
|  | 			// 摹鸥虽 斜葬晦 | |||
|  | 			sq_AnimationProc(hud_creator_b_select); | |||
|  | 			sq_drawCurrentFrame(hud_creator_b_select, x + (slot * offset), y, false); | |||
|  | 		} | |||
|  | 	} | |||
|  | 	 | |||
|  | 	// 啪桧虽 斜葬晦 | |||
|  | 	local hud_creator_b_gauge = sq_var.GetAnimationMap("hud_creator_b_gauge", "Character/Mage/CreatorAnimation/ui/hud_creator_b_gauge.ani"); | |||
|  | 
 | |||
|  | 	// 楼撩蝶鉴 啪桧虽 斜葬晦 睡碟殓栖棻.	 | |||
|  | 	 | |||
|  | 	local skillmgr = obj.getSkillManager(); | |||
|  | 	 | |||
|  | 	if (!skillmgr) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	for (local i = CREATOR_TYPE_FLAME; i < CREATOR_TYPE_MAX; i++) | |||
|  | 	{	 | |||
|  | 		local slot = -1; | |||
|  | 		 | |||
|  | 		if (skillmgr) | |||
|  | 		{ | |||
|  | 			local index = getTypeSkillIndex(obj, i); | |||
|  | 			slot = skillmgr.getSlotindex(index); | |||
|  | 		} | |||
|  | 	 | |||
|  | 		if (slot != -1) | |||
|  | 		{ | |||
|  | 			local appendage = getCreatorMageAppendageByType(obj, i); | |||
|  | 			if (appendage) | |||
|  | 			{ | |||
|  | 				local gaugeValue = 0; | |||
|  | 				local max_gaugeValue = 0; | |||
|  | 				 | |||
|  | 				max_gaugeValue = appendage.sq_var.get_vector(I_MAX_COUNT); | |||
|  | 				 | |||
|  | 				gaugeValue = appendage.sq_var.get_vector(I_REMAIN_COUNT); | |||
|  | 				local rate = gaugeValue.tofloat() / max_gaugeValue.tofloat();			 | |||
|  | 				local rgb = getCreatorTypeColor(obj, i); | |||
|  | 				local alpha = sq_ALPHA(255); | |||
|  | 				hud_creator_b_gauge.setImageRate(rate, 1.0);	 | |||
|  | 				local gaugePosX = x - 87; | |||
|  | 				sq_DrawSpecificFrameEffect_SIMPLE(hud_creator_b_gauge, gaugePosX + (slot * offset), y, 0, rgb, alpha, true); | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | function onProcSkillShop_CreatorMage(obj, control) | |||
|  | { | |||
|  | 	local x = 573; | |||
|  | 	local y = 538; | |||
|  | 	local offset = 46; | |||
|  | 
 | |||
|  | 	//print(" control x:" + control.GetXPos() + " y:" + control.GetYPos()); | |||
|  | 
 | |||
|  | 	local sq_var = obj.getVar(); | |||
|  | 	// 啪桧虽 斜葬晦 | |||
|  | 	local hud_creator_b_gauge = sq_var.GetAnimationMap("hud_creator_b_gauge", "Character/Mage/CreatorAnimation/ui/hud_creator_b_gauge.ani"); | |||
|  | 
 | |||
|  | 	// 楼撩蝶鉴 啪桧虽 斜葬晦 睡碟殓栖棻.	 | |||
|  | 	 | |||
|  | 	local skillmgr = obj.getSkillManager(); | |||
|  | 	 | |||
|  | 	if (!skillmgr) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	for (local i = CREATOR_TYPE_FLAME; i < CREATOR_TYPE_MAX; i++) | |||
|  | 	{	 | |||
|  | 		local slot = -1; | |||
|  | 		 | |||
|  | 		if (skillmgr) | |||
|  | 		{ | |||
|  | 			local index = getTypeSkillIndex(obj, i); | |||
|  | 			slot = skillmgr.getSlotindex(index); | |||
|  | 		} | |||
|  | 	 | |||
|  | 		if (slot != -1) | |||
|  | 		{ | |||
|  | 			local appendage = getCreatorMageAppendageByType(obj, i); | |||
|  | 			if (appendage) | |||
|  | 			{ | |||
|  | 				local gaugeValue = 0; | |||
|  | 				local max_gaugeValue = 0; | |||
|  | 				 | |||
|  | 				max_gaugeValue = appendage.sq_var.get_vector(I_MAX_COUNT); | |||
|  | 				 | |||
|  | 				gaugeValue = appendage.sq_var.get_vector(I_REMAIN_COUNT); | |||
|  | 				local rate = gaugeValue.tofloat() / max_gaugeValue.tofloat();			 | |||
|  | 				local rgb = getCreatorTypeColor(obj, i); | |||
|  | 				local alpha = sq_ALPHA(255); | |||
|  | 				hud_creator_b_gauge.setImageRate(rate, 1.0);	 | |||
|  | 				local gaugePosX = x; | |||
|  | 				sq_DrawSpecificFrameEffect_SIMPLE(hud_creator_b_gauge, gaugePosX + (slot * offset), y, 0, rgb, alpha, true); | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function drawCustomUI_CreatorMage(obj) | |||
|  | { | |||
|  | 	// 葆办蝶斜椰 籀葬 | |||
|  | 	 | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	 | |||
|  | 	if (!IsInBattleCreator(obj)) | |||
|  | 	{ | |||
|  | 		return; | |||
|  | 	} | |||
|  | 	// 醴怃斜葬晦	 | |||
|  | 	// 醴怃 斜葬晦 睡碟殓栖棻. | |||
|  | 	 | |||
|  | 	 | |||
|  | 	local isLock = sq_IsClipCursor(); | |||
|  | 
 | |||
|  | 	 | |||
|  | 	if (!isLock) | |||
|  | 	{ | |||
|  | 		if (!sq_IsVisibleCursor()) | |||
|  | 		{ | |||
|  | 			sq_SetVisibleCursor(true); | |||
|  | 		} | |||
|  | 		 | |||
|  | 		return; | |||
|  | 	} | |||
|  | 
 | |||
|  | 		 | |||
|  | 	if (sq_IsVisibleCursor()) | |||
|  | 	{ | |||
|  | 		sq_SetVisibleCursor(false); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	local ani = obj.getVar().GetAnimationMap("NORMAL",  | |||
|  | 	"Character/Mage/Effect/Animation/CreatorMagicSphere/normal.ani"); // 橾奁醴怃 | |||
|  | 
 | |||
|  | 	local usingSkillIndex = getCreatorSkillStateSkillIndex(obj); | |||
|  | 	 | |||
|  | 	if (usingSkillIndex == CREATOR_TYPE_DISTURB) | |||
|  | 	{ | |||
|  | 		local stage = sq_GetObjectManagerStage(obj); | |||
|  | 		 | |||
|  | 		if (!stage) | |||
|  | 			return; | |||
|  | 		 | |||
|  | 		local control = stage.getMainControl();		 | |||
|  | 
 | |||
|  | 		if (control.IsRBDown()) | |||
|  | 		{ // 萄煎办橾隆 醴怃蒂 夥习栖棻. | |||
|  | 			ani = obj.getVar().GetAnimationMap("THROW",  | |||
|  | 			"Character/Mage/Effect/Animation/CreatorMagicSphere/draw_cursor.ani"); // | |||
|  | 		} | |||
|  | 		else | |||
|  | 		{ | |||
|  | 			ani = obj.getVar().GetAnimationMap("BLOCK",  | |||
|  | 			"Character/Mage/Effect/Animation/CreatorMagicSphere/block.ani"); // | |||
|  | 		} | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == CREATOR_TYPE_GUARDIAN) | |||
|  | 	{ | |||
|  | 		ani = obj.getVar().GetAnimationMap("GUARD",  | |||
|  | 		"Character/Mage/Effect/Animation/CreatorMagicSphere/guard.ani"); // | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == CREATOR_TYPE_ICE) | |||
|  | 	{ | |||
|  | 		ani = obj.getVar().GetAnimationMap("ICE",  | |||
|  | 		"Character/Mage/Effect/Animation/CreatorMagicSphere/icesphere.ani"); // | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == CREATOR_TYPE_FLAME) | |||
|  | 	{ | |||
|  | 		ani = obj.getVar().GetAnimationMap("FIRE",  | |||
|  | 			"Character/Mage/Effect/Animation/CreatorMagicSphere/firesphere.ani"); //		 | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == CREATOR_TYPE_WIND)	 | |||
|  | 	{ | |||
|  | 		ani = obj.getVar().GetAnimationMap("WIND",  | |||
|  | 		"Character/Mage/Effect/Animation/CreatorMagicSphere/wind.ani"); // | |||
|  | 	}		 | |||
|  | 
 | |||
|  | 	local state = obj.getState(); | |||
|  | 
 | |||
|  | 	if (state == STATE_ICESHIELD) | |||
|  | 	{	 | |||
|  | 		ani = obj.getVar().GetAnimationMap("SHIELD",  | |||
|  | 		"Character/Mage/Effect/Animation/CreatorMagicSphere/shield_cursor_dodge.ani"); // | |||
|  | 	} | |||
|  | 	else if (state == STATE_FIREHURRICANE) | |||
|  | 	{ | |||
|  | 		ani = obj.getVar().GetAnimationMap("HURRICANE",  | |||
|  | 		"Character/Mage/Effect/Animation/CreatorMagicSphere/hurricane_cursor.ani"); // | |||
|  | 	} | |||
|  | 	 | |||
|  | 	if (ani) | |||
|  | 	{ | |||
|  | 		local posX = IMouse.GetXPos(); | |||
|  | 		local posY = IMouse.GetYPos(); | |||
|  | 		 | |||
|  | 		sq_AnimationProc(ani); | |||
|  | 		sq_drawCurrentFrame(ani, posX, posY, false); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	 | |||
|  | 	////////////// 诡樯ui | |||
|  | 	if (getCreatorSkillStateSkillIndex(obj) == -1) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	local sq_var = obj.getVar(); | |||
|  | 	local skill_ui_index = 0; | |||
|  | 
 | |||
|  | 
 | |||
|  | 	local x = 400; | |||
|  | 	local y = 470; | |||
|  | 	local offset = 36; | |||
|  | 
 | |||
|  | 	local alpha = sq_ALPHA(200); | |||
|  | 	local baseRGB = sq_RGB(255,255,255); | |||
|  | 
 | |||
|  | 	// ?斜葬晦 | |||
|  | 	local main_gauge_b = sq_var.GetAnimationMap("main_gauge_b",  | |||
|  | 	"Character/Mage/CreatorAnimation/ui/main_gauge_b.ani");	 | |||
|  | 	local main_gauge_b_select = sq_var.GetAnimationMap("main_gauge_b_select",  | |||
|  | 	"Character/Mage/CreatorAnimation/ui/main_gauge_b_select.ani");	 | |||
|  | 
 | |||
|  | 
 | |||
|  | 	sq_AnimationProc(main_gauge_b); | |||
|  | 
 | |||
|  | 	local currentFrameIndex = main_gauge_b.GetCurrentFrameIndex(); | |||
|  | 	sq_DrawSpecificFrameEffect_SIMPLE(main_gauge_b, x, y, currentFrameIndex, baseRGB, alpha, false); | |||
|  | 	//sq_drawCurrentFrame(main_gauge_b, x, y, false); | |||
|  | 	 | |||
|  | 	// 啪桧虽 斜葬晦 | |||
|  | 	local hud_creator_b_gauge = sq_var.GetAnimationMap("hud_creator_b_gauge", "Character/Mage/CreatorAnimation/ui/hud_creator_b_gauge.ani"); | |||
|  | 	 | |||
|  | 	if (getCreatorSkillStateSkillIndex(obj) != -1) | |||
|  | 	{ | |||
|  | 		local creator_guage_1 = sq_var.GetAnimationMap("creator_guage_1", "Character/Mage/CreatorAnimation/ui/creator_guage_1.ani");	 | |||
|  | 		local creator_guage_2 = sq_var.GetAnimationMap("creator_guage_2", "Character/Mage/CreatorAnimation/ui/creator_guage_2.ani");	 | |||
|  | 		local creator_guage_3 = sq_var.GetAnimationMap("creator_guage_3", "Character/Mage/CreatorAnimation/ui/creator_guage_3.ani");	 | |||
|  | 		local creator_guage_4 = sq_var.GetAnimationMap("creator_guage_4", "Character/Mage/CreatorAnimation/ui/creator_guage_4.ani"); | |||
|  | 		local type = getCreatorSkillStateSkillIndex(obj); | |||
|  | 		 | |||
|  | 		local appendage = getCreatorMageAppendageByType(obj, type); | |||
|  | 		if (appendage) | |||
|  | 		{ | |||
|  | 			local gaugeValue = 0; | |||
|  | 			local max_gaugeValue = 0; | |||
|  | 			 | |||
|  | 		//I_REMAIN_COUNT <- 0 // 陴嬴毡朝 蝶鉴偎热 | |||
|  | 		//l_CHARGE_ON <- 1 // 醱瞪 酝 樯虽 羹觼 | |||
|  | 		//I_BEFORE_X <- 2 // 卫除 | |||
|  | 		//I_BEFORE_Y <- 3 // 卫除 | |||
|  | 		//I_MAX_COUNT <- 4 // 譆渠醱瞪榆 | |||
|  | 		//I_SIZE <- 5 // 卫除 | |||
|  | 			max_gaugeValue = appendage.sq_var.get_vector(I_MAX_COUNT); | |||
|  | 			gaugeValue = appendage.sq_var.get_vector(I_REMAIN_COUNT); | |||
|  | 			local rate = gaugeValue.tofloat() / max_gaugeValue.tofloat(); | |||
|  | 			local maxFrameIndex = 156; | |||
|  | 			local frameRate = maxFrameIndex.tofloat() * rate.tofloat(); | |||
|  | 			 | |||
|  | 			local frameIndex = maxFrameIndex - frameRate.tointeger(); | |||
|  | 			 | |||
|  | 			local rgb = getCreatorTypeColor(obj, type); | |||
|  | 
 | |||
|  | 			//local rgba = getCreatorTypeAlphaColor(obj, type, 50); | |||
|  | 			 | |||
|  | 			sq_DrawSpecificFrameEffect_SIMPLE(creator_guage_1, x, y, frameIndex, rgb, alpha, true); | |||
|  | 			sq_DrawSpecificFrameEffect_SIMPLE(creator_guage_2, x, y, frameIndex, rgb, alpha, true); | |||
|  | 			sq_DrawSpecificFrameEffect_SIMPLE(creator_guage_3, x, y, frameIndex, rgb, alpha, true); | |||
|  | 			sq_DrawSpecificFrameEffect_SIMPLE(creator_guage_4, x, y, frameIndex, rgb, alpha, true); | |||
|  | 		} | |||
|  | 	} | |||
|  | 	 | |||
|  | 	//摹鸥? 蝶鉴菟 | |||
|  | 	local main_gauge_lb = sq_var.GetAnimationMap("main_gauge_lb", "Character/Mage/CreatorAnimation/ui/main_gauge_lb.ani");	 | |||
|  | 	local main_gauge_rb = sq_var.GetAnimationMap("main_gauge_rb", "Character/Mage/CreatorAnimation/ui/main_gauge_rb.ani");	 | |||
|  | 
 | |||
|  | 	//sq_DrawSpecificFrame(main_gauge_lb, x, y, false, 0, false, 1.0); | |||
|  | 	//sq_DrawSpecificFrame(main_gauge_rb, x, y, false, 0, false, 1.0);	 | |||
|  | 	sq_DrawSpecificFrameEffect_SIMPLE(main_gauge_lb, x, y, 0, baseRGB, alpha, false); | |||
|  | 	sq_DrawSpecificFrameEffect_SIMPLE(main_gauge_rb, x, y, 0, baseRGB, alpha, false); | |||
|  | 
 | |||
|  | 	 | |||
|  | 	// 摹鸥? 蝶鉴樯策蝶 斜葬晦	 | |||
|  | 	local main_gauge_b_select = sq_var.GetAnimationMap("main_gauge_b_select", "Character/Mage/CreatorAnimation/ui/main_gauge_b_select.ani");	 | |||
|  | 	 | |||
|  | 	if (getCreatorSkillStateSkillIndex(obj) != -1) | |||
|  | 	{		 | |||
|  | 		local off = 32; | |||
|  | 		local type = getCreatorSkillStateSkillIndex(obj); | |||
|  | 
 | |||
|  | 		local skill_icon_mode = obj.getVar("gauge_ani").get_vector(0); | |||
|  | 		if (skill_icon_mode == 1) | |||
|  | 		{ | |||
|  | 			local hud_creatorskill_icon = getAniCreatorSkillOn(obj, type); | |||
|  | 			 | |||
|  | 			sq_AnimationProc(hud_creatorskill_icon); | |||
|  | 			sq_drawCurrentFrame(hud_creatorskill_icon, x, y, false); | |||
|  | 			//sq_DrawCurrentFrameEffect_SIMPLE(hud_creatorskill_icon, x, y, baseRGB, alpha, false); | |||
|  | 		} | |||
|  | 		else if (skill_icon_mode == 2) | |||
|  | 		{ | |||
|  | 			local hud_creatorskill_icon = getAniCreatorSkillOff(obj, type); | |||
|  | 			 | |||
|  | 			sq_AnimationProc(hud_creatorskill_icon); | |||
|  | 			sq_drawCurrentFrame(hud_creatorskill_icon, x, y, false); | |||
|  | 			//sq_DrawCurrentFrameEffect_SIMPLE(hud_creatorskill_icon, x, y, baseRGB, alpha, false); | |||
|  | 		} | |||
|  | 		 | |||
|  | 		 | |||
|  | 		// 摹鸥? 蝶鉴嬴桧夔 斜葬晦 | |||
|  | 		local lbuttonSkl = getLButtonSkillByType(obj, type); | |||
|  | 		local rbuttonSkl = getRButtonSkillByType(obj, type); | |||
|  | 		 | |||
|  | 		local ls = sq_GetSkill(obj, lbuttonSkl); | |||
|  | 		local rs = sq_GetSkill(obj, rbuttonSkl); | |||
|  | 		 | |||
|  | 		local sx = x - 29; | |||
|  | 		local sy = y - 16; | |||
|  | 		 | |||
|  | 		if (ls) | |||
|  | 		{ | |||
|  | 			if (sq_GetSkillLevel(obj, lbuttonSkl) > 0) | |||
|  | 			{ | |||
|  | 				sq_DrawSkillIcon(ls, sx, sy, alpha); | |||
|  | 			} | |||
|  | 		} | |||
|  | 
 | |||
|  | 		if (rs) | |||
|  | 		{ | |||
|  | 			if (sq_GetSkillLevel(obj, rbuttonSkl) > 0) | |||
|  | 			{ | |||
|  | 				sq_DrawSkillIcon(rs, sx + off, sy, alpha); | |||
|  | 			} | |||
|  | 		} | |||
|  | 		 | |||
|  | 		// 摹鸥?击阳 | |||
|  | 		 | |||
|  | 		local stage = sq_GetObjectManagerStage(obj); | |||
|  | 		 | |||
|  | 		if (!stage) | |||
|  | 			return; | |||
|  | 		 | |||
|  | 		local control = stage.getMainControl();		 | |||
|  | 		 | |||
|  | 		if (control.IsLBDown()) | |||
|  | 		{ | |||
|  | 			sq_AnimationProc(main_gauge_b_select); | |||
|  | 			sq_drawCurrentFrame(main_gauge_b_select, x, y, false); | |||
|  | 		} | |||
|  | 		else if(control.IsRBDown())	 | |||
|  | 		{ | |||
|  | 			sq_AnimationProc(main_gauge_b_select); | |||
|  | 			sq_drawCurrentFrame(main_gauge_b_select, x + off, y, false); | |||
|  | 		} | |||
|  | 		 | |||
|  | 	} | |||
|  | 	 | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | function onStartMap_CreatorMage(obj) | |||
|  | { | |||
|  | 	if(!obj) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	lockMouse(obj); | |||
|  | 
 | |||
|  | 	obj.getVar("dstpos").clear_vector(); | |||
|  | 	 | |||
|  | 	// 寞桧 剩横鬲朝等 ?热 横?蛤虽陛 毡棻贼.. | |||
|  | 	// 饷薯?鄹栖棻. | |||
|  | 	// 棻挤寞缣怃紫 ?娄陛 虽楼肾晦 阳侥殓栖棻. | |||
|  | 	local appendage = CNSquirrelAppendage.sq_GetAppendage(obj, "Appendage/Character/ap_common_suck.nut"); | |||
|  | 	 | |||
|  | 	if (appendage) | |||
|  | 	{ | |||
|  | 		appendage.sq_DeleteAppendages(); | |||
|  | 		CNSquirrelAppendage.sq_RemoveAppendage(obj, "Appendage/Character/ap_common_suck.nut"); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function resetDungeonStart_CreatorMage(obj, moduleType, resetReason, isDeadTower, isResetSkillUserCount) | |||
|  | { | |||
|  | 	if (!obj) return -1;	 | |||
|  | 
 | |||
|  | 	if (!obj.isMyControlObject()) | |||
|  | 		return -1; | |||
|  | 		 | |||
|  | 	local isReset = true; // 晦狱瞳戏烦 瞪睡 葬掸殓栖棻. | |||
|  | 	 | |||
|  | 	setCreatorSkillStateSkillIndex(obj, -1); | |||
|  | 	onAllChargeCreatorMageGauge(obj); | |||
|  | 	 | |||
|  | 	if (sq_GetCurrentModuleType() == MODULE_TYPE_ROOM_LIST || sq_GetCurrentModuleType() == MODULE_TYPE_ENTRANCE || sq_GetCurrentModuleType() == MODULE_TYPE_SELECT_DUNGEON) | |||
|  | 	{ | |||
|  | 		unLockMouse(obj); | |||
|  | 	}	 | |||
|  | 	else | |||
|  | 	{ | |||
|  | 		print(" game module:" + sq_GetCurrentModuleType()); | |||
|  | 		lockMouse(obj); | |||
|  | 	} | |||
|  | 
 | |||
|  | 	print(" resetDungeonStart_CreatorMage game module:" + sq_GetCurrentModuleType()); | |||
|  | 
 | |||
|  | 	if (!sq_IsTowerDungeon()) | |||
|  | 	{ | |||
|  | 		for (local i = CREATOR_TYPE_FLAME; i < CREATOR_TYPE_MAX; i++) | |||
|  | 		{	 | |||
|  | 			local slot = -1; | |||
|  | 		 | |||
|  | 			local skillmgr = obj.getSkillManager(); | |||
|  | 		 | |||
|  | 			if (skillmgr) | |||
|  | 			{ | |||
|  | 				local index = getTypeSkillIndex(obj, i); | |||
|  | 				slot = skillmgr.getSlotindex(index); | |||
|  | 			} | |||
|  | 	 | |||
|  | 			if (slot != -1) | |||
|  | 			{ | |||
|  | 				local appendage = getCreatorMageAppendageByType(obj, i); | |||
|  | 				if (appendage) | |||
|  | 				{ | |||
|  | 					local max_gaugeValue = appendage.sq_var.get_vector(I_MAX_COUNT); | |||
|  | 					appendage.sq_var.set_vector(I_REMAIN_COUNT, max_gaugeValue); | |||
|  | 					appendage.sq_var.set_vector(l_CHARGE_ON, 0); | |||
|  | 					appendage.sq_var.set_vector(I_CHARGE_INIT_COUNT, 0); | |||
|  | 					appendage.sq_var.set_vector(I_CURRENT_CHARGE_TIME, 0); | |||
|  | 				} | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 	 | |||
|  | 	 | |||
|  | 	return 1; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function onStartDungeon_CreatorMage(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 		 | |||
|  | 	if (sq_IsMyCharacter(obj)) | |||
|  | 	{ | |||
|  | 		lockMouse(obj); | |||
|  | 		////////////////////////////////////////////////////// | |||
|  | 		obj.getVar("lbdown").clear_timer_vector(); | |||
|  | 		obj.getVar("lbdown").push_timer_vector(); | |||
|  | 		obj.getVar("lbdown").push_timer_vector(); | |||
|  | 				 | |||
|  | 		local t = obj.getVar("lbdown").get_timer_vector(0); | |||
|  | 		t.setParameter(20, -1); | |||
|  | 		t.resetInstant(0); | |||
|  | 		 | |||
|  | 		obj.getVar("lbdown").clear_ct_vector(); | |||
|  | 		obj.getVar("lbdown").push_ct_vector(); | |||
|  | 		local timer = obj.getVar("lbdown").get_ct_vector(0); | |||
|  | 		timer.Reset(); | |||
|  | 		timer.Start(10000,0); | |||
|  | 		////////////////////////////////////////////////////// | |||
|  | 
 | |||
|  | 		// 觼溯桧搅暧 赅苌 楼撩 啪桧虽 醱瞪击 卫蒙?栖棻. | |||
|  | 		onAllChargeCreatorMageGauge(obj); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | // 孺紫办陛 ?撩? 腑击阳 ?轿肾朝 属寥?热 殓栖棻. | |||
|  | function onActiveWindow_CreatorMage(obj, activeState) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 	if (IsInBattleCreator(obj)) | |||
|  | 	{ | |||
|  | //#define     WA_INACTIVE     0 | |||
|  | //#define     WA_ACTIVE       1 | |||
|  | //#define     WA_CLICKACTIVE  2 | |||
|  | 		local isOpen = sq_IsOpenCreatorControlPopupWindows(); | |||
|  | 		local hotKey = sq_IsDownHotKeyCreatorCursor(); | |||
|  | 		if (isOpen || hotKey) | |||
|  | 		{ | |||
|  | 			return; | |||
|  | 		} | |||
|  | 
 | |||
|  | 		lockMouse(obj); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | // 孺紫办陛 绿?撩? 腑击阳 ?轿肾朝 属寥?热 殓栖棻. | |||
|  | function onInActiveWindow_CreatorMage(obj) | |||
|  | { | |||
|  | 	unLockMouse(obj); | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | function onChangeSkillEffect_CreatorMage(obj, skillIndex, reciveData) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	if (skillIndex == SKILL_MGRAB) | |||
|  | 	{ | |||
|  | 		onChangeSkillEffect_Mgrab(obj, skillIndex, reciveData); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function procAppend_CreatorMage(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return 0; | |||
|  | 
 | |||
|  | 	local type = getCreatorSkillStateSkillIndex(obj); | |||
|  | 
 | |||
|  | 	if (type == CREATOR_TYPE_DISTURB) | |||
|  | 	{ | |||
|  | 		onProc_Mgrab(obj); | |||
|  | 	} | |||
|  | 
 | |||
|  | 	if (!obj.isMyControlObject()) | |||
|  | 		return 0; | |||
|  | 
 | |||
|  | 	local STATE_ACTIVE = 1;		 | |||
|  | 	 | |||
|  | 	local cashState = sq_GetStateCashShop(); | |||
|  | 	local isClipCursor = sq_IsClipCursor(); // 醴怃陛 陉?毡朝虽 羹觼?栖棻. | |||
|  | 	 | |||
|  | 	if (cashState == STATE_ACTIVE) | |||
|  | 	{ | |||
|  | 		// 撮塭憧桧 翮溜朝等 醴怃陛 off赅萄陛 肾横怃朝 寰腌栖棻. | |||
|  | 		if (isClipCursor) | |||
|  | 			unLockMouse(obj); | |||
|  | 	} | |||
|  | 	else | |||
|  | 	{ | |||
|  | 		// 葆办蝶块桧 ?葬虽 强擎 唳办 葆虽虞 湍瞪 赝葬横鼻鹧樯虽 羹觼?琐栖棻. | |||
|  | 		if (sq_GetResultState() || sq_GetRewardState()) | |||
|  | 		{ | |||
|  | 			// 念娄玺桧 釭螃朝 翕寰缣紫 鼻濠蛔击 睡敷帼葬晦 嫔? | |||
|  | 			// 桧廓缚 羲戏煎 ui?撩?郦蒂 援脑贼 葆办蝶蒂 濡掬帼董栖棻. | |||
|  | 			local hotKey = sq_IsDownHotKeyCreatorCursor(); | |||
|  | 
 | |||
|  | 			if (hotKey) | |||
|  | 			{ | |||
|  | 				// ui?撩?郦陛 扬萼鼻鹧缣怃朝 赝董桧 ?溥毡棻贼.. | |||
|  | 				// 棻卫 濡掬帼董栖棻. | |||
|  | 				if (!isClipCursor) | |||
|  | 					lockMouse(obj); | |||
|  | 			} | |||
|  | 			else | |||
|  | 			{ | |||
|  | 				if (isClipCursor) | |||
|  | 				{ | |||
|  | 					unLockMouse(obj); | |||
|  | 				} | |||
|  | 			} | |||
|  | 			return 0; | |||
|  | 		} | |||
|  | 
 | |||
|  | 		if (IsInBattleCreator(obj)) | |||
|  | 		{ // 瞪潍酝桧塭贼.. | |||
|  | 			local hotKey = sq_IsDownHotKeyCreatorCursor(); | |||
|  | 
 | |||
|  | 			if (hotKey) | |||
|  | 			{ | |||
|  | 				// ui?撩? 郦蒂 援艇 鼻鹧缣歙 葆办蝶陛 濡衔朝虽 羹觼?琐栖棻. | |||
|  | 				if (isClipCursor) | |||
|  | 				{ | |||
|  | 					// 葆办蝶陛 濡衔棻贼 | |||
|  | 					unLockMouse(obj); | |||
|  | 				} | |||
|  | 			} | |||
|  | 			else | |||
|  | 			{ | |||
|  | 				// ?营 葆办蝶 谢?陛 孺紫办 ?贼寰薹缣 毡朝 羹觼?栖棻. | |||
|  | 				//print(" isClipCursor:" + isClipCursor); | |||
|  | 				if (!isClipCursor) | |||
|  | 				{ // 葆办蝶块桧 ?萼 鼻鹧塭贼					 | |||
|  | 					//print(" isopencreator:" + sq_IsOpenCreatorControlPopupWindows()); | |||
|  | 					if (!sq_IsOpenCreatorControlPopupWindows()) | |||
|  | 					{ | |||
|  | 						if (sq_IsMousePtInWindowRect()) | |||
|  | 						{ // 葆办蝶陛 顶睡缣 谢?蒂 ??毡棻贼.. | |||
|  | 							// ui?撩? 郦蒂 援艇 鼻鹧缣怃 谖睡瓣?玺击 援脑贼 橾卫瞳戏煎  | |||
|  | 							// ui?撩? 郦陛 false煎 肾朝等 桧阳 葆办蝶块击 勘横舆贼 寰腌栖棻. | |||
|  | 							lockMouse(obj); | |||
|  | 						} | |||
|  | 					} | |||
|  | 				} | |||
|  | 			} | |||
|  | 		} | |||
|  | 		else | |||
|  | 		{ | |||
|  | 			if (isClipCursor == true) | |||
|  | 			{ | |||
|  | 				unLockMouse(obj); | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 
 | |||
|  | 		 | |||
|  | 
 | |||
|  | 	return 1; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | // 奢问除问击 姜?晦 嫔? 樯搅弊击 姜?怃 葬欐?栖棻. | |||
|  | function IsInterval(obj, interval) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return false; | |||
|  | 
 | |||
|  | 	// 晦狱奢问 颤桧该  | |||
|  | 	local t = obj.getVar().get_ct_vector(0); | |||
|  | 
 | |||
|  | 	if (!t) | |||
|  | 	{ | |||
|  | 		obj.getVar().clear_ct_vector(); | |||
|  | 		obj.getVar().push_ct_vector();  | |||
|  | 		t = obj.getVar().get_ct_vector(0); | |||
|  | 		t.Reset(); | |||
|  | 		t.Start(10000,0); | |||
|  | 
 | |||
|  | 		return true; | |||
|  | 	} | |||
|  | 
 | |||
|  | 	local currentT = t.Get(); | |||
|  | 	if(currentT > interval) | |||
|  | 	{  | |||
|  | 		t.Reset(); | |||
|  | 		t.Start(10000,0); | |||
|  | 
 | |||
|  | 		return true; | |||
|  | 	} | |||
|  | 
 | |||
|  | 	//print(" not interval"); | |||
|  | 
 | |||
|  | 	return false; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | // 葆办蝶帼?击 扬毓击 阳 籀葬肾横捡 ?朝 蝶鉴?煎撮蝶 睡碟殓栖棻. | |||
|  | function onMouseButtonDown_ProcSkill(obj, usingSkillIndex) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	if (!obj.isMyControlObject()) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	if (!IsInBattleCreator(obj)) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	if (!sq_IsClipCursor()) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	// 骁匙击 颤坚 毡戏贼 葆办蝶 奢问击 ? 热 桡蝗栖棻. | |||
|  | 	if (sq_IsRidingObject(obj)) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	local objectManager = obj.getObjectManager(); | |||
|  | 
 | |||
|  | 	if (!objectManager) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	local xPos = objectManager.getFieldXPos(IMouse.GetXPos(), ENUM_DRAWLAYER_NORMAL); | |||
|  | 	local yPos = objectManager.getFieldYPos(IMouse.GetYPos(), 0, ENUM_DRAWLAYER_NORMAL); | |||
|  | 
 | |||
|  | 	//print(" onMouseButtonDown_ProcSkill:" + usingSkillIndex); | |||
|  | 	if (usingSkillIndex == SKILL_WOODFENCE) | |||
|  | 	{ | |||
|  | 		// 办萄?蝶暧 唳办朝 萄楚斜寞冲桧晦 阳侥缣  | |||
|  | 		// 罹晦怃 籀葬肾虽 强蝗栖棻. | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == SKILL_FIREWALL) | |||
|  | 	{ | |||
|  | 		//print(" onMouseMoveCharacter_Firewall:" + usingSkillIndex); | |||
|  | 		onMouseMoveCharacter_Firewall(obj, IMouse.GetXPos(), IMouse.GetYPos()); | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == SKILL_ICEROCK) | |||
|  | 	{ | |||
|  | 		local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex); | |||
|  | 		 | |||
|  | 		if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue)) | |||
|  | 			onMouseButtonDown_IceRock(obj); | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == SKILL_FIREMETEO) | |||
|  | 	{ | |||
|  | 		local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex); | |||
|  | 		 | |||
|  | 		if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue)) | |||
|  | 			onMouseButtonDown_FireMeteo(obj); | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == SKILL_ICEPLATE)	 | |||
|  | 	{ | |||
|  | 		local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex); | |||
|  | 		 | |||
|  | 		if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue)) | |||
|  | 			onMouseButtonDown_IcePlate(obj); | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == SKILL_FIREHURRICANE) | |||
|  | 	{ | |||
|  | 		local isExcute = obj.isExcutableState(SKILL_CREATORGUARDIAN); | |||
|  | 		if (isExcute) | |||
|  | 		{ | |||
|  | 			local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex); | |||
|  | 			 | |||
|  | 			if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue)) | |||
|  | 			{ | |||
|  | 				obj.sq_IntVectClear(); | |||
|  | 				obj.sq_IntVectPush(SUB_STATE_FIREHURRICANE_0); // substate撮? | |||
|  | 				obj.sq_AddSetStatePacket(STATE_FIREHURRICANE, STATE_PRIORITY_USER, true); | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == SKILL_ICESHIELD) | |||
|  | 	{	 | |||
|  | 		if (obj.isExcutableState(SKILL_CREATORGUARDIAN)) | |||
|  | 		{ | |||
|  | 			local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex); | |||
|  | 			 | |||
|  | 			if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue)) | |||
|  | 			{ | |||
|  | 				obj.sq_IntVectClear(); | |||
|  | 				obj.sq_IntVectPush(SUB_STATE_ICESHIELD_0); // substate撮? | |||
|  | 				obj.sq_AddSetStatePacket(STATE_ICESHIELD, STATE_PRIORITY_USER, true); | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == SKILL_WINDPRESS) | |||
|  | 	{ | |||
|  | 		local isExcute = obj.isExcutableState(SKILL_CREATORWIND); | |||
|  | 		if (isExcute) | |||
|  | 		{ | |||
|  | 			local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex); | |||
|  | 			 | |||
|  | 			if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue)) | |||
|  | 			{ | |||
|  | 				obj.sq_IntVectClear(); | |||
|  | 				obj.sq_IntVectPush(SUB_STATE_WINDPRESS_0); // substate撮? | |||
|  | 				obj.sq_AddSetStatePacket(STATE_WINDPRESS, STATE_PRIORITY_IGNORE_FORCE, true); | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == SKILL_WINDSTORM)	 | |||
|  | 	{ | |||
|  | 		local consumeValue = getCreatorSkillConsumeValue(obj, usingSkillIndex); | |||
|  | 
 | |||
|  | 		if (yPos >= TILE_FLOOR_START_Y) | |||
|  | 		{ | |||
|  | 			if (useCreatorSkill(obj, usingSkillIndex, xPos, yPos, consumeValue)) | |||
|  | 			{ | |||
|  | 				onMouseButtonDown_WindStorm(obj); | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == SKILL_MGRAB) | |||
|  | 	{ | |||
|  | 		// 蟾晦? | |||
|  | 		setStateMouseGrab(obj); | |||
|  | 		grabThrowObject(obj); | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == -1) | |||
|  | 	{ | |||
|  | 		// 桧谖暧 唳办 渠?瞳戏煎 -1樯 唳办缣朝 | |||
|  | 		// 晦狱奢问戏煎 瞪??栖棻. | |||
|  | 
 | |||
|  | 		// http://jira.in.neople.co.kr/jira/browse/DNF-8531 | |||
|  | 		// [觼葬缣桧搅] 嬴桧蝶 褒萄蒂 蝗菜?虽 强擎 鼻鹧缣怃 ?溯歜 ?葬馨樯 饵辨 酝 螃艇薹 赝葛击 ? 唳办 等嘐虽陛 雪嬴虽朝 ?鼻 | |||
|  | 		local state = obj.getState(); | |||
|  | 		if (state == STATE_ICESHIELD || state == STATE_FIREHURRICANE) | |||
|  | 			return; | |||
|  | 
 | |||
|  | 		// ?颤奢问击 噩 热 毡朝 鼻?樯虽 羹觼?栖棻. | |||
|  | 		if (!obj.isEnableBasicAttack()) | |||
|  | 			return; | |||
|  | 
 | |||
|  | 
 | |||
|  | 		local hitInterval = 500; // 除问热纂 (ms) | |||
|  | 		if (IsInterval(obj, hitInterval)) | |||
|  | 		{ // 嫦饵?坚 桧? 嫦饵 除问桧 蹂羶? 热纂 桧?陛 肾横捡 晦狱嫦饵陛 陛栋?栖棻. (翱嫦寞虽) | |||
|  | 			local objectManager = obj.getObjectManager(); | |||
|  | 		 | |||
|  | 			if (!objectManager) | |||
|  | 				return; | |||
|  | 
 | |||
|  | 			 | |||
|  | 			local xPos = objectManager.getFieldXPos(IMouse.GetXPos(), ENUM_DRAWLAYER_NORMAL); | |||
|  | 			local yPos = objectManager.getFieldYPos(IMouse.GetYPos(), 0, ENUM_DRAWLAYER_NORMAL); | |||
|  | 			local zPos = 0; | |||
|  | 		 | |||
|  | 			local hoverEnemyObject = getOverClickableEnemyObject(obj, IMouse.GetXPos(), IMouse.GetYPos()); | |||
|  | 		 | |||
|  | 			if (hoverEnemyObject) | |||
|  | 			{ | |||
|  | 				yPos = hoverEnemyObject.getYPos();							 | |||
|  | 			 | |||
|  | 				if (hoverEnemyObject.getZPos() > 0) | |||
|  | 				{ | |||
|  | 					zPos = hoverEnemyObject.getZPos(); | |||
|  | 				} | |||
|  | 			 | |||
|  | 				zPos = objectManager.getFieldZPos(IMouse.GetYPos(), yPos, ENUM_DRAWLAYER_NORMAL); | |||
|  | 			} | |||
|  | 		 | |||
|  | 			sq_SetCurrentAttackInfo(obj, obj.sq_GetDefaultAttackInfo(0)); | |||
|  | 			obj.applyBasicAttackUp(sq_GetCurrentAttackInfo(obj),STATE_ATTACK); | |||
|  | 			sq_SetCurrentAttackInfo(obj, sq_GetCurrentAttackInfo(obj)); | |||
|  | 
 | |||
|  | 			obj.sq_StartWrite(); | |||
|  | 			sq_BinaryWriteWord(0);		// 涡嘐 | |||
|  | 			sq_SendCreatePassiveObjectPacketPos(obj, 24353, 0, xPos, yPos, zPos); | |||
|  | 		} | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | // 葆办蝶 帼?桧 机腑击阳 籀葬肾横捡 ?朝 蝶鉴?煎撮蝶 殓栖棻. | |||
|  | function onMouseButtonUp_ProcSkill(obj, usingSkillIndex) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	if (usingSkillIndex == SKILL_MGRAB) | |||
|  | 	{ | |||
|  | 		//onMouseButtonUp_Mgrab(obj); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | function onMouseLeftButtonDown_CreatorMage(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	// 避历击 隆 菟横谛摹 寰腌栖棻. | |||
|  | 	if (obj.isDead()) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	local objectManager = obj.getObjectManager(); | |||
|  | 	 | |||
|  | 	if (!objectManager) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	// 葆办蝶煎 螃帼胀 嬴桧蛊 | |||
|  | 	local overItem = obj.getOverItemObject(); | |||
|  | 	 | |||
|  | 	if (overItem) | |||
|  | 	{ | |||
|  | 		// 尔寰赅菊阳侥缣 濡卫 嬴桧蛊毡朝 谢?煎 鬲棻陛 给嬴褫栖棻. | |||
|  | 		local beforePosX = obj.getXPos(); | |||
|  | 		local beforePosY = obj.getYPos(); | |||
|  | 		local beforePosZ = obj.getZPos(); | |||
|  | 		 | |||
|  | 		local itemPosX = overItem.getXPos(); | |||
|  | 		local itemPosY = overItem.getYPos(); | |||
|  | 
 | |||
|  | 		sq_SetCurrentPos(obj, itemPosX, itemPosY, 0); | |||
|  | 		 | |||
|  | 		obj.procGetItem(); | |||
|  | 		 | |||
|  | 		sq_SetCurrentPos(obj, beforePosX, beforePosY, beforePosZ); | |||
|  | 		return; | |||
|  | 	} | |||
|  | 	 | |||
|  | 	local usingSkillIndex = getLButtonSkill(obj); | |||
|  | 	 | |||
|  | 	onMouseButtonDown_ProcSkill(obj, usingSkillIndex); | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function onMouseLeftButtonUp_CreatorMage(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	// 避历击 隆 菟横谛摹 寰腌栖棻. | |||
|  | 	if (obj.isDead()) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	local usingSkillIndex = getLButtonSkill(obj); | |||
|  | 	 | |||
|  | 	 | |||
|  | 	onMouseButtonUp_ProcSkill(obj, usingSkillIndex); | |||
|  | } | |||
|  | 
 | |||
|  | function onMouseRightButtonDown_CreatorMage(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return;	 | |||
|  | 
 | |||
|  | 	// 避历击 隆 菟横谛摹 寰腌栖棻. | |||
|  | 	if (obj.isDead()) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	local usingSkillIndex = getRButtonSkill(obj); | |||
|  | 	 | |||
|  | 	//歜卫 ?机 | |||
|  | 	//sq_OpenPopupWindow(379, 279, 499, 1000); | |||
|  | 	// | |||
|  | 
 | |||
|  | 	onMouseButtonDown_ProcSkill(obj, usingSkillIndex); | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function onMouseRightButtonUp_CreatorMage(obj) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	// 避历击 隆 菟横谛摹 寰腌栖棻. | |||
|  | 	if (obj.isDead()) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	local usingSkillIndex = getRButtonSkill(obj); | |||
|  | 	 | |||
|  | 	onMouseButtonUp_ProcSkill(obj, usingSkillIndex);	 | |||
|  | 		 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function onMouseMoveCharacter_CreatorMage(obj, x, y) | |||
|  | { | |||
|  | 	if (!obj) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	// 避历击 隆 菟横谛摹 寰腌栖棻. | |||
|  | 	if (obj.isDead()) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	if (!obj.isMyControlObject()) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	if (!IsInBattleCreator(obj)) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	if (!sq_IsClipCursor()) | |||
|  | 		return; | |||
|  | 
 | |||
|  | 	// 骁匙击 颤坚 毡戏贼 葆办蝶 奢问击 ? 热 桡蝗栖棻. | |||
|  | 	if (sq_IsRidingObject(obj)) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	local stage = sq_GetObjectManagerStage(obj); | |||
|  | 	 | |||
|  | 	if (!stage) | |||
|  | 		return; | |||
|  | 	 | |||
|  | 	x = IMouse.GetXPos(); | |||
|  | 	y = IMouse.GetYPos();	 | |||
|  | 	 | |||
|  | 	local control = stage.getMainControl();	 | |||
|  | 	 | |||
|  | 	local usingSkillIndex = -1; | |||
|  | 	 | |||
|  | 	if (control.IsLBDown()) | |||
|  | 	{ | |||
|  | 		usingSkillIndex = getLButtonSkill(obj); | |||
|  | 	} | |||
|  | 	else if(control.IsRBDown())	 | |||
|  | 	{ | |||
|  | 		usingSkillIndex = getRButtonSkill(obj); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	// ?营 噙坚毡朝 蝶鉴桧 毡朝虽 ?学?琐栖棻. | |||
|  | 	if (usingSkillIndex == SKILL_FIREWALL) | |||
|  | 	{ | |||
|  | 		onMouseMoveCharacter_Firewall(obj, x, y); | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == SKILL_WOODFENCE)	 | |||
|  | 	{ | |||
|  | 		onMouseMoveCharacter_WoodFence(obj, x, y); | |||
|  | 	} | |||
|  | 	else if (usingSkillIndex == SKILL_MGRAB) | |||
|  | 	{ | |||
|  | 	} | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | function drawAppend_CreatorMage(obj, isOver, x, y) | |||
|  | { | |||
|  | 	if (!obj.isMyControlObject()) | |||
|  | 		return 0; | |||
|  | 
 | |||
|  | 	 | |||
|  | 	return 0; | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  |  |