200 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			200 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | ///////////////////////////////////////////////////////// | |||
|  | // | |||
|  | // ?卫粽 蝶鉴籀葬 | |||
|  | // ?渡 蝶鉴暧 ?卫粽 蝶鉴暧 Appendage蛔烟/?薯 蛔蛔 | |||
|  | // | |||
|  | ///////////////////////////////////////////////////////// | |||
|  | function ProcPassiveSkillAvenger(obj, skill_index, skill_level) | |||
|  | { | |||
|  | 	if (skill_index == SKILL_SCYTHE_MASTERY) | |||
|  | 	{ | |||
|  | 		if (obj.getWeaponSubType() == WEAPON_SUBTYPE_SCYTHE && skill_level > 0) | |||
|  | 		{ | |||
|  | 			local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, skill_index, false, "Appendage/Character/scythe_mastery.nut", true); | |||
|  | 			 | |||
|  | 			local attack_speed = sq_GetLevelData(obj, skill_index, 0, skill_level); | |||
|  | 			local dark_element = sq_GetLevelData(obj, skill_index, 1, skill_level); | |||
|  | 			local light_element = sq_GetLevelData(obj, skill_index, 2, skill_level) * -1; | |||
|  | 			local weaponMagicAttack = sq_GetLevelData(obj, skill_index, 3, skill_level); | |||
|  | 
 | |||
|  | 			local change_appendage = appendage.sq_getChangeStatus("scythe"); | |||
|  | 			if(!change_appendage) { | |||
|  | 				change_appendage = appendage.sq_AddChangeStatus("scythe",obj, obj, 0, CHANGE_STATUS_TYPE_ATTACK_SPEED, true, attack_speed ); | |||
|  | 			} | |||
|  | 		 | |||
|  | 			// 奢楼隶陛, 檩楼撩 荡?隶陛, 赀楼撩 荡?马模 | |||
|  | 			if(change_appendage) { | |||
|  | 				change_appendage.clearParameter(); | |||
|  | 				change_appendage.addParameter(CHANGE_STATUS_TYPE_ATTACK_SPEED, true, attack_speed.tofloat()); | |||
|  | 				change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_TOLERANCE_DARK, false, dark_element.tofloat()); | |||
|  | 				change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_TOLERANCE_LIGHT, false, light_element.tofloat()); | |||
|  | 				 | |||
|  | 				change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_ATTACK, true, weaponMagicAttack.tofloat());				 | |||
|  | 			} | |||
|  | 		} | |||
|  | 		else | |||
|  | 		{ | |||
|  | 			//CNSquirrelAppendage.sq_RemoveAppendage(obj, "Appendage/Character/scythe_mastery.nut");			 | |||
|  | 			if(skill_level > 0) { | |||
|  | 				local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, skill_index, false, "Appendage/Character/scythe_mastery.nut", true); | |||
|  | 			 | |||
|  | 				if(appendage) {					 | |||
|  | 					local change_appendage = appendage.sq_getChangeStatus("scythe");					 | |||
|  | 					if(change_appendage) { | |||
|  | 						change_appendage.clearParameter(); | |||
|  | 					} | |||
|  | 				} | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 	else if(skill_index == SKILL_HEARTHINGS) | |||
|  | 	{ | |||
|  | 		if (skill_level > 0) | |||
|  | 			obj.sq_addPassiveSkillAttackBonusRate(SKILL_HEARTHINGS,1); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	if(skill_index == SKILL_DEVILSTRIKE) { // 等网蝶?塭桧醴  | |||
|  | 		if (skill_level > 0) { | |||
|  | 			local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, skill_index, false, "Appendage/Character/ap_avenger_devilstrike.nut", true); | |||
|  | 			local maxValue = sq_GetIntData(obj, SKILL_DEVILSTRIKE, SI_DS_MAX_DEVIL_GAUGE); // 譆渠 学葆啪桧虽 热纂 | |||
|  | 			if(appendage.sq_var.size_vector() != 5) { // 虽陪 啪桧虽陛 虽表虽朝 帼斜热姜 | |||
|  | 				appendage.sq_var.clear_vector();		 | |||
|  | 				appendage.sq_var.push_vector(maxValue); // 譆渠 学葆啪桧虽 热纂 | |||
|  | 				appendage.sq_var.push_vector(0); // ?营 学葆啪桧虽 热纂 | |||
|  | 				appendage.sq_var.push_vector(0); // 虽陪 热纂 | |||
|  | 				appendage.sq_var.push_vector(0); //  | |||
|  | 				appendage.sq_var.push_vector(0); | |||
|  | 			} | |||
|  | 			else { | |||
|  | 			 // 虏橾 裟蝶啪桧虽陛 棻脑棻贼 侦褐?丑捡?栖棻.. | |||
|  | 				local max_gauge = appendage.sq_var.get_vector(DS_APEND_MAX_GAUGE); | |||
|  | 				 | |||
|  | 				if(max_gauge != maxValue) { | |||
|  | 					appendage.sq_var.set_vector(DS_APEND_MAX_GAUGE, maxValue); | |||
|  | 				} | |||
|  | 			} | |||
|  | 			 | |||
|  | 			obj.getVar("devilStrike").clear_vector(); | |||
|  | 			obj.getVar("devilStrike").push_vector(0); // character "devilstrike" sqrvar 0廓樯策蝶 晦奖击 当 樯策蝶 | |||
|  | 			obj.getVar("devilStrike").push_vector(0); | |||
|  | 			obj.getVar("devilStrike").push_vector(0); | |||
|  | 			obj.getVar("devilStrike").push_vector(0); | |||
|  | 			 | |||
|  | 			obj.getVar("devilStrike").clear_ct_vector(); // 颤桧该 赝葬横 | |||
|  | 			obj.getVar("devilStrike").push_ct_vector(); | |||
|  | 			obj.getVar("devilStrike").push_ct_vector(); | |||
|  | 			obj.getVar("devilStrike").push_ct_vector(); | |||
|  | 			 | |||
|  | 			obj.getVar("devilStrike").get_ct_vector(0).Reset(); | |||
|  | 			obj.getVar("devilStrike").get_ct_vector(0).Start(0,0); | |||
|  | 			 | |||
|  | 			 | |||
|  | 			appendage.sq_var.clear_timer_vector(); // 颤桧该 赝葬横 | |||
|  | 			appendage.sq_var.push_timer_vector(); // 颤桧该 ?卫 | |||
|  | 			appendage.sq_var.push_timer_vector(); | |||
|  | 		} | |||
|  | 		else { | |||
|  | 			CNSquirrelAppendage.sq_RemoveAppendage(obj, "Appendage/Character/ap_avenger_devilstrike.nut"); | |||
|  | 		} | |||
|  | 	} | |||
|  | 	 | |||
|  | 	if(skill_index == SKILL_NIGHTMARE) { // 陕撩 ?卫粽学跦(48溯涟) | |||
|  | 		// 陕撩?卫粽 : 学跦(48溯涟) | |||
|  | 		// 1. 陕撩 渗褐 翕寰 陕撩晦 奢问溘桧 隶陛? | |||
|  | 		// 2. 等网 蝶?塭桧醴暧 学葆 啪桧虽 离朝榆 隶陛. | |||
|  | 		// 陕撩?卫粽 学跦击 乾坚 毡朝虽 羹觼?坚 乾坚 毡棻贼 学葆 啪桧虽 离朝榆击 隶陛卫面怃 葬欐?栖棻..	 | |||
|  | 		if (skill_level > 0) { | |||
|  | 			obj.sq_addPassiveSkillAttackBonusRate(SKILL_NIGHTMARE,1); // 1.奢问溘 隶陛榆(%) | |||
|  | 		} | |||
|  | 		//if (skill_level > 0) { | |||
|  | 			//local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, skill_index, false, "Appendage/Character/ap_avenger_nightmare.nut", true); | |||
|  | 			//obj.sq_addPassiveSkillAttackBonusRate(SKILL_NIGHTMARE,1); | |||
|  | 		//} | |||
|  | 		//else { | |||
|  | 			//CNSquirrelAppendage.sq_RemoveAppendage(obj, "Appendage/Character/ap_avenger_nightmare.nut"); | |||
|  | 		//} | |||
|  | 	} | |||
|  | 	 | |||
|  | 	 | |||
|  | 	return true; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function onUseSkillAvengerPassiveSkill(obj,skillIndex, skillLevel) | |||
|  | { | |||
|  | 	if(!obj) | |||
|  | 		return; | |||
|  | 		 | |||
|  | 	local hearthingsLevel = obj.sq_getSkillLevel(SKILL_HEARTHINGS); | |||
|  | 	local activeRate	  = obj.sq_getIntData(SKILL_HEARTHINGS,1); //嫦翕 ?睦 | |||
|  | 		 | |||
|  | 	if(activeRate >= sq_getRandom(0,100) && hearthingsLevel > 0 && obj.isSkillClassType(skillIndex,3)) {		 | |||
|  | 			 | |||
|  | 		local time				= obj.sq_getLevelData(SKILL_HEARTHINGS,0,hearthingsLevel); | |||
|  | 		local changeMoveSpeed	= obj.sq_getLevelData(SKILL_HEARTHINGS,2,hearthingsLevel); | |||
|  | 		local changeHp			= obj.sq_getLevelData(SKILL_HEARTHINGS,3,hearthingsLevel) * -1; | |||
|  | 		local changeMp			= obj.sq_getLevelData(SKILL_HEARTHINGS,4,hearthingsLevel) * -1; | |||
|  | 		local currentCount		= 1; | |||
|  | 		local maxCount			= obj.sq_getIntData(SKILL_HEARTHINGS,0); | |||
|  | 				 | |||
|  | 		local oldAppendage = obj.GetSquirrelAppendage("Appendage/Character/hearthings.nut"); | |||
|  | 		if(oldAppendage) { | |||
|  | 			currentCount = currentCount + oldAppendage.sq_var.getInt(0); | |||
|  | 			if(currentCount > maxCount) // 酝绘 譆渠纂  | |||
|  | 				return; | |||
|  | 		}		 | |||
|  | 	 | |||
|  | 		local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, skillIndex, true, "Appendage/Character/hearthings.nut", true);		 | |||
|  | 		local change_appendage = appendage.sq_getChangeStatus("hearthings"); | |||
|  | 		 | |||
|  | 		if(!change_appendage) { | |||
|  | 			change_appendage = appendage.sq_AddChangeStatus("hearthings",obj, obj, 0, CHANGE_STATUS_TYPE_MOVE_SPEED, true, currentCount.tointeger() * changeMoveSpeed.tointeger() ); | |||
|  | 		} | |||
|  | 		 | |||
|  | 		if(change_appendage) { | |||
|  | 			change_appendage.clearParameter(); | |||
|  | 			change_appendage.addParameter(CHANGE_STATUS_TYPE_MOVE_SPEED, true, currentCount.tofloat() * changeMoveSpeed.tofloat()); | |||
|  | 			change_appendage.addParameter(CHANGE_STATUS_TYPE_HP_MAX, true, currentCount.tofloat() * changeHp.tofloat()); | |||
|  | 			change_appendage.addParameter(CHANGE_STATUS_TYPE_MP_MAX, true, currentCount.tofloat() * changeMp.tofloat());			 | |||
|  | 		} | |||
|  | 		 | |||
|  | 		appendage.getAppendageInfo().setValidTime(time); // 嵘?卫除	 | |||
|  | 				 | |||
|  | 		appendage.sq_var.setInt(0,currentCount.tointeger()); | |||
|  | 	} | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | function OnBeforeAttackAvengerPassiveSkill(obj, damager, bounding_box, is_stuck) | |||
|  | { | |||
|  | 	// 饵桧萄 葆蝶搅葬蒂 乾坚 毡棻贼, 陷缣 暧? 颤问 僭葬 奢问击 -> 葆彻 奢问戏煎 夥脯遽棻. | |||
|  | 	if(!obj) return false; | |||
|  | 	 | |||
|  | 	if (is_stuck == false) | |||
|  | 	{ | |||
|  | 		local result = CNSquirrelAppendage.sq_IsAppendAppendage(obj, "Appendage/Character/scythe_mastery.nut"); | |||
|  | 		 | |||
|  | 
 | |||
|  | 		if (result == true) | |||
|  | 		{ | |||
|  | 			if(obj.getWeaponSubType() == WEAPON_SUBTYPE_SCYTHE) { // 陷 橾阳虏 | |||
|  | 				// state 陛 ?颤橾阳谛 僭葬颤橾阳虏 瞳辨腌栖棻.. | |||
|  | 				local state = obj.sq_GetSTATE(); | |||
|  | 				if(sqr_IsNormalAttack(state) == true) { | |||
|  | 					local attack_info = sq_GetCurrentAttackInfo(obj);			 | |||
|  | 					local eType = sq_GetAttackType(attack_info); | |||
|  | 					if(eType == ATTACKTYPE_PHYSICAL) { | |||
|  | 						sq_ChangeAttackTypeToOpposite(attack_info); | |||
|  | 					} | |||
|  | 				} | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return true; | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  |  |