237 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			237 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| HOLONG_LIGHT_VAR_IS_LEFT		<- 0;
 | ||
| HOLONG_LIGHT_VAR_APPENDAGE		<- 1;
 | ||
| HOLONG_LIGHT_VAR_HORIZON_ANGLE  <- 2;
 | ||
| HOLONG_LIGHT_VAR_VERTICAL_ANGLE <- 3;
 | ||
| HOLONG_LIGHT_VAR_LIFE_TIME		<- 4;
 | ||
| HOLONG_LIGHT_VAR_DEFENCE_UP		<- 5;
 | ||
| HOLONG_LIGHT_VAR_ATTACK_POWER	<- 6;
 | ||
| HOLONG_LIGHT_VAR_SHOOT_TIME		<- 7;
 | ||
| HOLONG_LIGHT_VAR_COOL_TIME		<- 8;
 | ||
| 
 | ||
| 
 | ||
| HOLONG_LIGHT_STATE_BUFF     <- 2; // 渠晦 鼻鹧 : 议葛搅缣 帼?蒂 勘横遽棻. : ?卫粽 蝶才桧?朝 2睡搅 卫蒙?棻.
 | ||
| HOLONG_LIGHT_STATE_ATTACK   <- 3; // 奢问 : 饵轿肾横 颤啃击 奢问?虽虏 帼?朝 饵塭霞棻.
 | ||
| HOLONG_LIGHT_STATE_DESTROY  <- 4; // 薯濠葬怃 饵塭霞棻.
 | ||
| HOLONG_LIGHT_STATE_EXPLOSION <- 5; // ?嫦
 | ||
| 
 | ||
| 
 | ||
| HOLONG_LIGHT_CUSTOM_ANI_MOVE	<- 0; // 桧翕卫 拥栖
 | ||
| HOLONG_LIGHT_CUSTOM_ANI_DESTROY <- 1; // ?惚卫 拥栖
 | ||
| HOLONG_LIGHT_CUSTOM_ANI_SHOOT	<- 2; // 嫦饵卫 陈嬴陛朝 拥栖
 | ||
| HOLONG_LIGHT_CUSTOM_ANI_EXPLOSION <- 3; //?嫦 拥栖
 | ||
| 
 | ||
| 
 | ||
| function setCustomData_po_ATHolongLight(obj, receiveData)
 | ||
| {
 | ||
| 	if(!obj) return;
 | ||
| 	
 | ||
| 	local isLeft		= receiveData.readBool();
 | ||
| 	local horizonAngle  = receiveData.readFloat();
 | ||
| 	local verticalAngle = receiveData.readFloat();
 | ||
| 	local lifeTime		= receiveData.readDword();
 | ||
| 	local defenceUp		= receiveData.readDword();
 | ||
| 	local attackPower	= receiveData.readDword();
 | ||
| 	local shootTime		= receiveData.readDword();
 | ||
| 	local coolTime		= receiveData.readDword();
 | ||
| 	
 | ||
| 	local var = obj.getVar();	
 | ||
| 	
 | ||
| 	var.setBool(HOLONG_LIGHT_VAR_IS_LEFT,isLeft);		
 | ||
| 	obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_BUFF);
 | ||
| 	
 | ||
| 	
 | ||
| 	var.setFloat(HOLONG_LIGHT_VAR_HORIZON_ANGLE, horizonAngle);
 | ||
| 	var.setFloat(HOLONG_LIGHT_VAR_VERTICAL_ANGLE, verticalAngle);	
 | ||
| 	var.setInt(HOLONG_LIGHT_VAR_LIFE_TIME, lifeTime);	
 | ||
| 	var.setInt(HOLONG_LIGHT_VAR_DEFENCE_UP, defenceUp);
 | ||
| 	var.setInt(HOLONG_LIGHT_VAR_SHOOT_TIME, shootTime);
 | ||
| 	var.setInt(HOLONG_LIGHT_VAR_COOL_TIME, coolTime);
 | ||
| 
 | ||
| 	sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), attackPower);
 | ||
| }
 | ||
| 
 | ||
| function onTimeEvent_po_ATHolongLight(obj, timeEventIndex, timeEventCount)
 | ||
| {	
 | ||
| 	if(!obj)
 | ||
| 		return false;
 | ||
| 
 | ||
| 	if(obj.isMyControlObject() && timeEventIndex == 0)
 | ||
| 	{	
 | ||
| 		if(obj.getState() == HOLONG_LIGHT_STATE_BUFF) {
 | ||
| 			obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_DESTROY);
 | ||
| 			
 | ||
| 			local mage = sq_ObjectToSQRCharacter(obj.getTopCharacter());	
 | ||
| 			if (mage)
 | ||
| 				mage.sq_RemoveSkillLoad(SKILL_HOLONG_LIGHT);	
 | ||
| 		}
 | ||
| 		return true; // true贼 属寥 酝钦
 | ||
| 	}
 | ||
| 	else if( timeEventIndex == 1 )
 | ||
| 	{
 | ||
| 		obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_EXPLOSION);
 | ||
| 	}
 | ||
| 	
 | ||
| 	return false;	
 | ||
| } 
 | ||
| 
 | ||
| 
 | ||
| function onDestroyObject_po_ATHolongLight(obj, destroyObj)
 | ||
| {
 | ||
| 	
 | ||
| 	local parentObj = obj.getParent();
 | ||
| 	parentObj = sq_ObjectToSQRCharacter(parentObj);
 | ||
| 		
 | ||
| 	
 | ||
| 	if(!parentObj || isSameObject(parentObj,destroyObj)) { //睡赅 偌羹陛 ?惚肾贼 饵塭飓 	
 | ||
| 		obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_DESTROY);
 | ||
| 	}	
 | ||
| 	
 | ||
| 
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| function onAttack_po_ATHolongLight(obj, damager, boundingBox, isStuck)
 | ||
| {	
 | ||
| 	if(!obj)
 | ||
| 		return 0;
 | ||
| 
 | ||
| 	obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_EXPLOSION);	
 | ||
| 	return 0;
 | ||
| }
 | ||
| 
 | ||
| function setState_po_ATHolongLight(obj, state, datas)
 | ||
| {
 | ||
| 	if(!obj) return;	
 | ||
| 	
 | ||
| 	local var = obj.getVar();
 | ||
| 	
 | ||
| 	// 帼? 赅萄
 | ||
| 	if (state ==  HOLONG_LIGHT_STATE_BUFF) {	
 | ||
| 	
 | ||
| 		local lifeTime    = var.getInt(HOLONG_LIGHT_VAR_LIFE_TIME);
 | ||
| 		local defenceUp   = var.getInt(HOLONG_LIGHT_VAR_DEFENCE_UP);
 | ||
| 						
 | ||
| 		var.push_ct_vector(); // 颤桧该 跷陛
 | ||
| 		local timer = var.get_ct_vector(0);
 | ||
| 		timer.Reset();
 | ||
| 		timer.Start(500,0);
 | ||
| 		obj.setTimeEvent(0,lifeTime,1,false); // 0廓 樯策蝶暧 颤桧该, 5蟾钦嫔 桧渐? 嫦当, 1廓虏, 籀挤缚 褒?寰?.
 | ||
| 		
 | ||
| 		local parentObj = obj.getParent();	
 | ||
| 		printc("lifeTime " +lifeTime);
 | ||
| 		printc("defenceUp " +defenceUp);
 | ||
| 		
 | ||
| 		local appendage = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_DEFENSE, false, defenceUp.tofloat() , lifeTime);
 | ||
| 		if(appendage && parentObj) {
 | ||
| 			appendage.sq_AddChangeStatus(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_DEFENSE, false, defenceUp.tofloat());
 | ||
| 			appendage.sq_Append(parentObj,parentObj);
 | ||
| 			
 | ||
| 			local var2 = obj.getVar("holong");
 | ||
| 			
 | ||
| 			printc("var2 " +var2);
 | ||
| 			var2.setAppendage(HOLONG_LIGHT_VAR_APPENDAGE, appendage);
 | ||
| 		}	
 | ||
| 	}
 | ||
| 	else if (state ==  HOLONG_LIGHT_STATE_ATTACK) {
 | ||
| 		local var2 = obj.getVar("holong");
 | ||
| 		local append = var2.getAppendage(HOLONG_LIGHT_VAR_APPENDAGE);
 | ||
| 				
 | ||
| 		if(append)
 | ||
| 			append.setValid(false);
 | ||
| 		
 | ||
| 		local horizonAngle = var.getFloat(HOLONG_LIGHT_VAR_HORIZON_ANGLE);
 | ||
| 		local verticalAngle = var.getFloat(HOLONG_LIGHT_VAR_VERTICAL_ANGLE);
 | ||
| 			
 | ||
| 		local shootAni = obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_SHOOT);		
 | ||
| 		obj.setCurrentAnimation(shootAni);		
 | ||
| 		sq_SetfRotateAngle(shootAni, sq_ToRadian(-horizonAngle));
 | ||
| 			
 | ||
| 		local shootTime = var.getInt(HOLONG_LIGHT_VAR_SHOOT_TIME);
 | ||
| 		obj.setTimeEvent(1,shootTime,1,false);		
 | ||
| 		
 | ||
| 		obj.sq_SetMoveParticle("Particle/ATHolongLight.ptl", horizonAngle, verticalAngle);
 | ||
| 							
 | ||
| 		sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATHolongLight/shot_effect_dodge.ani", 0, 0, 0);
 | ||
| 		
 | ||
| 		obj.sq_PlaySound("LAMPLIGHT_ATK");
 | ||
| 	}
 | ||
| 	else if (state ==  HOLONG_LIGHT_STATE_DESTROY) {
 | ||
| 		local destroyAni = obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_DESTROY);		
 | ||
| 		obj.setCurrentAnimation(destroyAni);		
 | ||
| 	}
 | ||
| 	else if (state == HOLONG_LIGHT_STATE_EXPLOSION) {
 | ||
| 		
 | ||
| 		local shootAni = obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_EXPLOSION);				
 | ||
| 		obj.setCurrentAnimation(shootAni);		
 | ||
| 		obj.sq_RemoveMoveParticle();
 | ||
| 	} 
 | ||
| 	
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| function procAppend_po_ATHolongLight(obj)
 | ||
| {
 | ||
| 	if(!obj)
 | ||
| 		return;
 | ||
| 
 | ||
| 	local var = obj.getVar();	
 | ||
| 	local xDistance = -26;
 | ||
| 	local timer = var.get_ct_vector(0);				
 | ||
| 	if(!timer)
 | ||
| 		return;
 | ||
| 		
 | ||
| 	local currentTime = timer.Get();			
 | ||
| 	local zDistance = sq_GetAccel(0, 35, currentTime, 300, true);;	
 | ||
| 	
 | ||
| 	
 | ||
| 	local isLeft = var.getBool(HOLONG_LIGHT_VAR_IS_LEFT);	
 | ||
| 	if(isLeft)		
 | ||
| 		xDistance = -26 + sq_GetAccel(0, 52, currentTime, 300, true);	
 | ||
| 	
 | ||
| 		
 | ||
| 	local parentObj = obj.getParent();		
 | ||
| 	if(obj.sq_GetParentState() == STATE_DIE) // 避戏贼 饵塭飓	
 | ||
| 		obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_DESTROY);
 | ||
| 		
 | ||
| 		
 | ||
| 	if(obj.getState() == HOLONG_LIGHT_STATE_BUFF) { // 桧翕?阳 拥栖 渗唳
 | ||
| 
 | ||
| 		local isDash = false;
 | ||
| 		if(obj.sq_GetParentState() == STATE_DASH){
 | ||
| 			if(!obj.isCurrentAnimationIndex(HOLONG_LIGHT_CUSTOM_ANI_MOVE))
 | ||
| 				obj.setCurrentAnimation(obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_MOVE));					
 | ||
| 			isDash = true;	
 | ||
| 		}
 | ||
| 		else {
 | ||
| 			local defaultAni = obj.getDefaultAnimation();
 | ||
| 			local currentAni = obj.getCurrentAnimation();
 | ||
| 			if(!sq_IsSameAni(defaultAni,currentAni))
 | ||
| 				obj.setCurrentAnimation(defaultAni);		
 | ||
| 		}
 | ||
| 		
 | ||
| 		if(parentObj) {
 | ||
| 			local x = sq_GetDistancePos(parentObj.getXPos(),parentObj.getDirection(),xDistance);
 | ||
| 			local y = parentObj.getYPos() - 1;
 | ||
| 			local z = parentObj.getZPos() + sq_GetShuttleValue(90, 113,sq_GetObjectTime(obj),500) - zDistance;
 | ||
| 			obj.setDirection(parentObj.getDirection());
 | ||
| 			sq_SetCurrentPos(obj, x, y, z);
 | ||
| 		}
 | ||
| 	}	
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| function onEndCurrentAni_po_ATHolongLight(obj)
 | ||
| {
 | ||
| 	if(!obj) return;	
 | ||
| 	
 | ||
| 	if(obj.getState() == HOLONG_LIGHT_STATE_DESTROY) {
 | ||
| 		if(obj.isMyControlObject())
 | ||
| 			sq_SendDestroyPacketPassiveObject(obj);
 | ||
| 	}
 | ||
| 	else if(obj.getState() == HOLONG_LIGHT_STATE_EXPLOSION) {
 | ||
| 		if(obj.isMyControlObject())
 | ||
| 			sq_SendDestroyPacketPassiveObject(obj);
 | ||
| 	}
 | ||
| 	
 | ||
| }
 | ||
|  |