892 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			892 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createBlackCrackPaticle(obj, x, y, z)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!obj)
							 | 
						||
| 
								 | 
							
										return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									local particleCreater = obj.getVar().GetparticleCreaterMap("CrackBlackPtl", "PassiveObject/Character/Mage/Particle/ATDarknessMantleCrack.ptl", obj);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
									particleCreater.Restart(0);
							 | 
						||
| 
								 | 
							
									particleCreater.SetPos(x, y, z);
							 | 
						||
| 
								 | 
							
									sq_AddParticleObject(obj, particleCreater);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createCrackPiece(obj, index, x, y, z)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!obj)
							 | 
						||
| 
								 | 
							
										return null;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
									local pooledObj = null;
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local cx = 0;
							 | 
						||
| 
								 | 
							
									local cy = 0;
							 | 
						||
| 
								 | 
							
									local cz = 0;
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									//obj.getVar("crackpos").push_vector(0);
							 | 
						||
| 
								 | 
							
									//obj.getVar("crackpos").push_vector(0);
							 | 
						||
| 
								 | 
							
									//obj.getVar("crackpos").push_vector(0);
							 | 
						||
| 
								 | 
							
									//obj.getVar("crackpos").push_vector(0);	
							 | 
						||
| 
								 | 
							
									//obj.getVar("crackpos").push_vector(0);	
							 | 
						||
| 
								 | 
							
									//obj.getVar("crackpos").push_vector(0);	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(index == 0)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										//pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/12_crack_darkball_dodge.ani", false, x, y, z);
							 | 
						||
| 
								 | 
							
										cx = x - 30;
							 | 
						||
| 
								 | 
							
										cy = y + 2;
							 | 
						||
| 
								 | 
							
										cz = z + 174;
							 | 
						||
| 
								 | 
							
										pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/08_crack_back_normal_50.ani", false, cx, cy, cz);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if(index == 1)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										//pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/12_crack_darkball_dodge_1.ani", false, x, y, z);
							 | 
						||
| 
								 | 
							
										cx = x + 45;
							 | 
						||
| 
								 | 
							
										cy = y + 1;
							 | 
						||
| 
								 | 
							
										cz = z + 118;
							 | 
						||
| 
								 | 
							
										pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/08_crack_back_normal_50.ani", false, cx, cy, cz);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if(index == 2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										//pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/12_crack_darkball_dodge_2.ani", false, x, y, z);
							 | 
						||
| 
								 | 
							
										cx = x + 8;
							 | 
						||
| 
								 | 
							
										cy = y + 1;
							 | 
						||
| 
								 | 
							
										cz = z + 50;
							 | 
						||
| 
								 | 
							
										pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/08_crack_back_normal_50.ani", false, cx, cy, cz);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local vectorIndex = index * 2;
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").set_vector(vectorIndex + 0, cx);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").set_vector(vectorIndex + 1, cz);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return pooledObj;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createDarkBall(obj, x, y, z)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local pooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/darkball/09_darkball_0.ani", false, x, y, z);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return pooledObj;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createFrontFirstDarknessArea(obj, x, y, z, widthRate, heightRate)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/01/05_aura_front_normal_1.ani", false, widthRate, heightRate, x, y, z);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return pooledObj;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createBackFirstDarknessArea(obj, x, y, z, widthRate, heightRate)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/01/01_aura_back_normal_1.ani", false, widthRate, heightRate, x, y, z);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return pooledObj;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createFrontFirstSDarknessArea(obj, x, y, z, widthRate, heightRate)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/01/05_aura_front_normal_2.ani", false, widthRate, heightRate, x, y, z);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return pooledObj;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createBackFirstSDarknessArea(obj, x, y, z, widthRate, heightRate)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/01/01_aura_back_normal_2.ani", false, widthRate, heightRate, x, y, z);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return pooledObj;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createFrontLoopDarknessArea(obj, x, y, z, widthRate, heightRate)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Loop/05_aura_front_normal_1.ani", false, widthRate, heightRate, x, y, z);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return pooledObj;	
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createBackLoopDarknessArea(obj, x, y, z, widthRate, heightRate)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Loop/01_aura_back_normal_1.ani", false, widthRate, heightRate, x, y, z);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return pooledObj;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createFrontLoopSDarknessArea(obj, x, y, z, widthRate, heightRate)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Loop/05_aura_front_normal_2.ani", false, widthRate, heightRate, x, y, z);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return pooledObj;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createBackLoopSDarknessArea(obj, x, y, z, widthRate, heightRate)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local pooledObj = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Loop/01_aura_back_normal_2.ani", false, widthRate, heightRate, x, y, z);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return pooledObj;	
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function destroyCrackObject(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!obj)
							 | 
						||
| 
								 | 
							
										return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									local objListSize = obj.getVar("crack").get_obj_vector_size();
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									print(" crack objListSize:" + objListSize);
							 | 
						||
| 
								 | 
							
									for(local i =0;i<objListSize;++i)
							 | 
						||
| 
								 | 
							
									{				
							 | 
						||
| 
								 | 
							
										local crackObj = obj.getVar("crack").get_obj_vector(i);
							 | 
						||
| 
								 | 
							
										if(crackObj == null)
							 | 
						||
| 
								 | 
							
											continue;
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
										crackObj.setValid(false);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.getVar("crack").clear_obj_vector();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function setPosXCrackObject(obj, cx)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local objListSize = obj.getVar("crack").get_obj_vector_size();
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									for(local i =0;i<objListSize;++i)
							 | 
						||
| 
								 | 
							
									{				
							 | 
						||
| 
								 | 
							
										local vObj = obj.getVar("crack").get_obj_vector(i);
							 | 
						||
| 
								 | 
							
										if(vObj == null)
							 | 
						||
| 
								 | 
							
											continue;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										sq_setCurrentAxisPos(vObj, 0, cx);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function procCrackDarknessCircle(obj) // 敕翮桧 陬击 阳 掘羹陛 ?菟葬朝 籀葬
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!obj)
							 | 
						||
| 
								 | 
							
										return;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
									local circle_obj = obj.getVar().get_obj_vector(0); // 掘
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(!circle_obj)
							 | 
						||
| 
								 | 
							
										return;
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local x = sq_GetXPos(circle_obj);
							 | 
						||
| 
								 | 
							
									local y = sq_GetYPos(circle_obj);
							 | 
						||
| 
								 | 
							
									local z = sq_GetZPos(circle_obj);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local vib = false;
							 | 
						||
| 
								 | 
							
									local objListSize = obj.getVar().get_obj_vector_size();	
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									for(local i =1;i<objListSize;++i)
							 | 
						||
| 
								 | 
							
									{				
							 | 
						||
| 
								 | 
							
										local crackObj = obj.getVar().get_obj_vector(i);
							 | 
						||
| 
								 | 
							
										if(crackObj == null)
							 | 
						||
| 
								 | 
							
											continue;
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
										local ani = sq_GetCurrentAnimation(crackObj);
							 | 
						||
| 
								 | 
							
										local frmIndex = sq_GetAnimationFrameIndex(ani);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
										print( " exp i:" + i + " frmIndex:" + frmIndex);
							 | 
						||
| 
								 | 
							
										if(frmIndex >= 1)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											local expVectorIndex = i - 1;
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if(!obj.getVar("crackexp").get_vector(expVectorIndex))
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												sq_SetMyShake(obj, 2, 100);
							 | 
						||
| 
								 | 
							
															
							 | 
						||
| 
								 | 
							
												local ox = sq_GetXPos(obj);
							 | 
						||
| 
								 | 
							
												local oy = y + 1;
							 | 
						||
| 
								 | 
							
												local oz = sq_GetZPos(obj);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
												local crackPooledObj = null;
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												if(expVectorIndex == 0)
							 | 
						||
| 
								 | 
							
													crackPooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/12_crack_darkball_dodge.ani", false, ox, oy, oz);
							 | 
						||
| 
								 | 
							
												else if(expVectorIndex == 1)
							 | 
						||
| 
								 | 
							
													crackPooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/12_crack_darkball_dodge_1.ani", false, ox, oy, oz);
							 | 
						||
| 
								 | 
							
												else if(expVectorIndex == 2)
							 | 
						||
| 
								 | 
							
													crackPooledObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Crack/12_crack_darkball_dodge_2.ani", false, ox, oy, oz);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												obj.getVar("crack").push_obj_vector(crackPooledObj);
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												local vectorIndex = (expVectorIndex) * 2;
							 | 
						||
| 
								 | 
							
												//
							 | 
						||
| 
								 | 
							
												local cx = obj.getVar("crackpos").get_vector(vectorIndex + 0);
							 | 
						||
| 
								 | 
							
												local cz = obj.getVar("crackpos").get_vector(vectorIndex + 1);
							 | 
						||
| 
								 | 
							
												//
							 | 
						||
| 
								 | 
							
												local particleCreater = obj.getVar().GetparticleCreaterMap("ATDarknessMantlePtl", "PassiveObject/Character/Mage/Particle/Appear.ptl", obj);
							 | 
						||
| 
								 | 
							
													//
							 | 
						||
| 
								 | 
							
												particleCreater.Restart(0);
							 | 
						||
| 
								 | 
							
												particleCreater.SetPos(cx, y + 5, cz);	
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												sq_AddParticleObject(obj, particleCreater);
							 | 
						||
| 
								 | 
							
												//	
							 | 
						||
| 
								 | 
							
												createBlackCrackPaticle(obj, cx, y + 4, cz);
							 | 
						||
| 
								 | 
							
												//
							 | 
						||
| 
								 | 
							
												obj.getVar("crackexp").set_vector(expVectorIndex, 1);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										if(frmIndex >= 1 && frmIndex < 4)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											vib = true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local cx = obj.getVar("darkcircle").get_vector(0);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(vib)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if(x <= cx)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											sq_setCurrentAxisPos(circle_obj, 0, cx + 2);
							 | 
						||
| 
								 | 
							
											setPosXCrackObject(obj, cx + 2);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											sq_setCurrentAxisPos(circle_obj, 0, cx - 2);
							 | 
						||
| 
								 | 
							
											setPosXCrackObject(obj, cx - 2);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if(x != cx)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											sq_setCurrentAxisPos(circle_obj, 0, cx);
							 | 
						||
| 
								 | 
							
											setPosXCrackObject(obj, cx);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function setCustomData_po_ATDarknessMantle(obj, reciveData)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if(!obj) return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									local suckVel = reciveData.readDword(); // 0. 庄横渡晦朝 ?
							 | 
						||
| 
								 | 
							
									// 0.匐擎晦遴 彰嫔 (<-100%->) 1.裔?奢问溘(%) 2.菩?溯涟 3.菩?虽楼溯涟
							 | 
						||
| 
								 | 
							
									local darkCircleRate = reciveData.readDword(); // 横菸怃赝 彰嫔 (100%)
							 | 
						||
| 
								 | 
							
									local expAtkRate = reciveData.readDword(); // 1.裔?奢问溘(%)
							 | 
						||
| 
								 | 
							
									local slowLevel = reciveData.readDword(); // 菩? 溯涟
							 | 
						||
| 
								 | 
							
									local slowTime = reciveData.readDword(); // 菩? 虽楼卫除
							 | 
						||
| 
								 | 
							
									local sizeRate = reciveData.readDword(); // 觼煎栖赝嬴桧蛊 跷陛 晦栋 横菸怃赝 ?渠徽 (100%)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// 觼煎栖赝嬴桧蛊 跷陛 晦栋 横菸怃赝 ?渠徽 (100%)
							 | 
						||
| 
								 | 
							
									obj.getVar("sizerate").clear_vector();
							 | 
						||
| 
								 | 
							
									obj.getVar("sizerate").push_vector(sizeRate);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.getVar("attack").clear_vector();
							 | 
						||
| 
								 | 
							
									obj.getVar("attack").push_vector(suckVel);
							 | 
						||
| 
								 | 
							
									obj.getVar("attack").push_vector(darkCircleRate);
							 | 
						||
| 
								 | 
							
									obj.getVar("attack").push_vector(expAtkRate);
							 | 
						||
| 
								 | 
							
									obj.getVar("attack").push_vector(slowLevel);
							 | 
						||
| 
								 | 
							
									obj.getVar("attack").push_vector(slowTime);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.getVar("flag").clear_vector();
							 | 
						||
| 
								 | 
							
									obj.getVar("flag").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("flag").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("flag").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("flag").push_vector(0);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.getVar("state").clear_vector(); // state vector
							 | 
						||
| 
								 | 
							
									obj.getVar("state").push_vector(PASSIVEOBJ_SUB_STATE_0);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									obj.getVar("state").clear_ct_vector();
							 | 
						||
| 
								 | 
							
									obj.getVar("state").push_ct_vector();	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").clear_vector();
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").push_vector(0);	
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").push_vector(0);	
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").push_vector(0);	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").clear_vector();
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").push_vector(0);	
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").push_vector(0);	
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").push_vector(0);	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.getVar("crack").clear_obj_vector();
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.getVar("create").clear_vector();
							 | 
						||
| 
								 | 
							
									obj.getVar("create").push_vector(1);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local pIntVec = sq_GetGlobalIntVector();
							 | 
						||
| 
								 | 
							
									sq_IntVectorClear(pIntVec);
							 | 
						||
| 
								 | 
							
									sq_IntVectorPush(pIntVec, 0);	
							 | 
						||
| 
								 | 
							
									obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_0, pIntVec, STATE_PRIORITY_AUTO, false, "");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function setState_po_ATDarknessMantle(obj, state, datas)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!obj) return;
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local passiveState = state;
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.getVar("flag").clear_vector();
							 | 
						||
| 
								 | 
							
									obj.getVar("flag").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("flag").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("flag").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("flag").push_vector(0);	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").clear_vector();
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").push_vector(0);	
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").push_vector(0);	
							 | 
						||
| 
								 | 
							
									obj.getVar("crackexp").push_vector(0);	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").clear_vector();
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").push_vector(0);
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").push_vector(0);	
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").push_vector(0);	
							 | 
						||
| 
								 | 
							
									obj.getVar("crackpos").push_vector(0);	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									obj.getVar("state").set_vector(0, passiveState);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									local x = sq_GetXPos(obj);
							 | 
						||
| 
								 | 
							
									local y = sq_GetYPos(obj);
							 | 
						||
| 
								 | 
							
									local z = sq_GetZPos(obj);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local t = obj.getVar("state").get_ct_vector(0);
							 | 
						||
| 
								 | 
							
									t.Reset();
							 | 
						||
| 
								 | 
							
									t.Start(10000,0);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									//obj.getVar("attack").push_vector(suckVel);
							 | 
						||
| 
								 | 
							
									//obj.getVar("attack").push_vector(darkCircleRate);
							 | 
						||
| 
								 | 
							
									//obj.getVar("attack").push_vector(expAtkRate);
							 | 
						||
| 
								 | 
							
									//obj.getVar("attack").push_vector(slowLevel);
							 | 
						||
| 
								 | 
							
									//obj.getVar("attack").push_vector(slowTime);
							 | 
						||
| 
								 | 
							
								//.tointeger()
							 | 
						||
| 
								 | 
							
								//.tofloat()	
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									local area100Rate = obj.getVar("attack").get_vector(VECTOR_FLAG_1);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local areaRate = area100Rate.tofloat() / 100.0;
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(passiveState == PASSIVEOBJ_SUB_STATE_0)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										local po1 = createBackFirstDarknessArea(obj, x, y - 25, 0, areaRate, areaRate);
							 | 
						||
| 
								 | 
							
										local po2 = createFrontFirstDarknessArea(obj, x, y + 50, 0, areaRate, areaRate);		
							 | 
						||
| 
								 | 
							
										local po3 = createBackFirstSDarknessArea(obj, x, y - 22, 0, areaRate, areaRate);
							 | 
						||
| 
								 | 
							
										local po4 = createFrontFirstSDarknessArea(obj, x, y + 20, 0, areaRate, areaRate);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										destroyObject(obj);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										obj.getVar().push_obj_vector(po1);
							 | 
						||
| 
								 | 
							
										obj.getVar().push_obj_vector(po2);
							 | 
						||
| 
								 | 
							
										obj.getVar().push_obj_vector(po3);
							 | 
						||
| 
								 | 
							
										obj.getVar().push_obj_vector(po4);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local currentAni = sq_GetCurrentAnimation(obj);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										if(currentAni)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											//currentAni.setImageRateFromOriginal(areaRate, areaRate);
							 | 
						||
| 
								 | 
							
											currentAni.applyBoundingBoxRate(areaRate,0,0); //
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										initGetVarTimer(obj, 1, 30, -1);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if(passiveState == PASSIVEOBJ_SUB_STATE_1)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										//local po1 = createBackLoopDarknessArea(obj, x, y - 25, 0, areaRate, areaRate);
							 | 
						||
| 
								 | 
							
										//local po2 = createFrontLoopDarknessArea(obj, x, y + 50, 0, areaRate, areaRate);
							 | 
						||
| 
								 | 
							
										//local po3 = createBackLoopSDarknessArea(obj, x, y - 22, 0, areaRate, areaRate);
							 | 
						||
| 
								 | 
							
										//local po4 = createFrontLoopSDarknessArea(obj, x, y + 20, 0, areaRate, areaRate);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local ani = obj.getCustomAnimation(0);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										if(ani)
							 | 
						||
| 
								 | 
							
											obj.setCurrentAnimation(ani);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
										//destroyObject(obj);
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
										//local loopAni = po2.getCurrentAnimation();
							 | 
						||
| 
								 | 
							
										//local size = sq_GetAniRealImageSize(loopAni, ENUM_DIRECTION_RIGHT);
							 | 
						||
| 
								 | 
							
										//
							 | 
						||
| 
								 | 
							
										//obj.getVar("attack").push_vector(size);
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
										//obj.getVar().push_obj_vector(po1);
							 | 
						||
| 
								 | 
							
										//obj.getVar().push_obj_vector(po2);
							 | 
						||
| 
								 | 
							
										//obj.getVar().push_obj_vector(po3);
							 | 
						||
| 
								 | 
							
										//obj.getVar().push_obj_vector(po4);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local currentAni = sq_GetCurrentAnimation(obj);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										if(currentAni)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											currentAni.applyBoundingBoxRate(areaRate,0,0); //
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}	
							 | 
						||
| 
								 | 
							
									else if(passiveState == PASSIVEOBJ_SUB_STATE_2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										local po1 = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Release/01_aura_back_normal_1.ani", true, areaRate, areaRate, x, y - 25, 0);
							 | 
						||
| 
								 | 
							
										local po2 = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Release/05_aura_front_normal_1.ani", true, areaRate, areaRate, x, y + 50, 0);
							 | 
						||
| 
								 | 
							
										local po3 = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Release/01_aura_back_normal_2.ani", true, areaRate, areaRate, x, y - 22, 0);
							 | 
						||
| 
								 | 
							
										local po4 = createAnimationImageRatePooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Release/05_aura_front_normal_2.ani", true, areaRate, areaRate, x, y + 20, 0);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										destroyObject(obj);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local ani = obj.getCustomAnimation(1);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										if(ani)
							 | 
						||
| 
								 | 
							
											obj.setCurrentAnimation(ani);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
										local p5 = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/Suck/07_absorb_normal_50r.ani", false, x + 3, y + 10, 110);
							 | 
						||
| 
								 | 
							
										obj.getVar().push_obj_vector(p5);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local parentObj = obj.getParent();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// 庄横菟桧朝 横?蛤虽 陛翕		
							 | 
						||
| 
								 | 
							
										local appendage = CNSquirrelAppendage.sq_AppendAppendage(parentObj, obj, SKILL_DARKNESSMANTLE, false, "Character/ATMage/DarknessMantle/ap_ATDarknessMantle_suck.nut", false);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local suckVel = obj.getVar("attack").get_vector(VECTOR_FLAG_0);
							 | 
						||
| 
								 | 
							
										local range = obj.getVar("attack").get_vector(VECTOR_FLAG_5);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										if(appendage)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											//appendage.sq_SetValidTime(3000);
							 | 
						||
| 
								 | 
							
											// 罹晦怃 append 蒙机		
							 | 
						||
| 
								 | 
							
											CNSquirrelAppendage.sq_Append(appendage, parentObj, obj);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											local auraAppendage = appendage.sq_getAuraMaster("auraMaster");
							 | 
						||
| 
								 | 
							
											//
							 | 
						||
| 
								 | 
							
											if(!auraAppendage)
							 | 
						||
| 
								 | 
							
												auraAppendage = appendage.sq_AddAuraMaster("auraMaster", parentObj, obj, 1200, 18, 5, 0);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if(auraAppendage)
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												auraAppendage.setAttractionInfo(suckVel, suckVel, range, 100);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											//
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if(passiveState == PASSIVEOBJ_SUB_STATE_3)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										local cx = x + 3;
							 | 
						||
| 
								 | 
							
										local cy = y + 10;
							 | 
						||
| 
								 | 
							
										local cz = 110;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local poBall = createDarkBall(obj, cx, cy, cz);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										destroyObject(obj);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									//4183
							 | 
						||
| 
								 | 
							
									//6515
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										obj.getVar().push_obj_vector(poBall); // 0
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										obj.getVar("darkcircle").clear_vector();
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										obj.getVar("darkcircle").push_vector(cx);
							 | 
						||
| 
								 | 
							
										obj.getVar("darkcircle").push_vector(cy);
							 | 
						||
| 
								 | 
							
										obj.getVar("darkcircle").push_vector(cz);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if(passiveState == PASSIVEOBJ_SUB_STATE_4)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										local cx = x;
							 | 
						||
| 
								 | 
							
										local cy = y + 12;
							 | 
						||
| 
								 | 
							
										local cz = 0;		
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local expStartObj = createAnimationPooledObject(obj, "PassiveObject/Character/Mage/Animation/ATDarknessMantle/16_exp_start.ani", false, cx, cy, cz);
							 | 
						||
| 
								 | 
							
										obj.getVar().push_obj_vector(expStartObj); // 4
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local atk = sq_GetCurrentAttackInfo(obj);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(atk)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										local slowLevel = obj.getVar("attack").get_vector(VECTOR_FLAG_3);
							 | 
						||
| 
								 | 
							
										local slowTime = obj.getVar("attack").get_vector(VECTOR_FLAG_4);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										sq_SetChangeStatusIntoAttackInfo(atk, 0, ACTIVESTATUS_SLOW, 100, slowLevel, slowTime);
							 | 
						||
| 
								 | 
							
									}		
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function allDestroy(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!obj)
							 | 
						||
| 
								 | 
							
										return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									destroyObject(obj);
							 | 
						||
| 
								 | 
							
									destroyCrackObject(obj);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local parentObj = obj.getParent();
							 | 
						||
| 
								 | 
							
									CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "Character/ATMage/DarknessMantle/ap_ATDarknessMantle_suck.nut");	
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if(obj.isMyControlObject())
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										sq_SendDestroyPacketPassiveObject(obj);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function destroy_po_ATDarknessMantle(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									destroyObject(obj);
							 | 
						||
| 
								 | 
							
									destroyCrackObject(obj);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local parentObj = obj.getParent();
							 | 
						||
| 
								 | 
							
									CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "Character/ATMage/DarknessMantle/ap_ATDarknessMantle_suck.nut");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function reset_po_ATDarknessMantle(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function procAppend_po_ATDarknessMantle(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!obj) return;	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local x = sq_GetXPos(obj);
							 | 
						||
| 
								 | 
							
									local y = sq_GetYPos(obj);
							 | 
						||
| 
								 | 
							
									local z = sq_GetZPos(obj);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local passiveState = obj.getVar("state").get_vector(0);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local objListSize = obj.getVar().get_obj_vector_size();	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local pAni = sq_GetCurrentAnimation(obj);
							 | 
						||
| 
								 | 
							
									local frmIndex = sq_GetAnimationFrameIndex(pAni);
							 | 
						||
| 
								 | 
							
									//local currentT = sq_GetCurrentTime(pAni);
							 | 
						||
| 
								 | 
							
									//local currentT = obj.getStateTimer().Get();
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local t = obj.getVar("state").get_ct_vector(0);
							 | 
						||
| 
								 | 
							
									local currentT = 0;
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(t)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										currentT = t.Get();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(passiveState == PASSIVEOBJ_SUB_STATE_0)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if(frmIndex > 1)
							 | 
						||
| 
								 | 
							
											procParticleCreaterMap(obj, currentT, "PassiveObject/Character/Mage/Particle/mmagic_dark.ptl", x, y, z); 
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if(passiveState == PASSIVEOBJ_SUB_STATE_1)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if(objListSize > 0)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											local p1 = obj.getVar().get_obj_vector(0);	
							 | 
						||
| 
								 | 
							
											local p2 = obj.getVar().get_obj_vector(1);
							 | 
						||
| 
								 | 
							
											local p3 = obj.getVar().get_obj_vector(2);
							 | 
						||
| 
								 | 
							
											local p4 = obj.getVar().get_obj_vector(3);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										if(currentT > 1000)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(obj.isMyControlObject())
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												local pIntVec = sq_GetGlobalIntVector();
							 | 
						||
| 
								 | 
							
												sq_IntVectorClear(pIntVec);
							 | 
						||
| 
								 | 
							
												sq_IntVectorPush(pIntVec, 0);	
							 | 
						||
| 
								 | 
							
												obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_2, pIntVec, STATE_PRIORITY_AUTO, false, "");
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											procParticleCreaterMap(obj, currentT, "PassiveObject/Character/Mage/Particle/mmagic_dark.ptl", x, y, z); 
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if(passiveState == PASSIVEOBJ_SUB_STATE_2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										local darkCircleObj = obj.getVar().get_obj_vector(0); // 2
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local ani = sq_GetCurrentAnimation(darkCircleObj);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										if(sq_IsEnd(ani))
							 | 
						||
| 
								 | 
							
										{		
							 | 
						||
| 
								 | 
							
											if(obj.isMyControlObject())
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												local pIntVec = sq_GetGlobalIntVector();
							 | 
						||
| 
								 | 
							
												sq_IntVectorClear(pIntVec);
							 | 
						||
| 
								 | 
							
												sq_IntVectorPush(pIntVec, 0);	
							 | 
						||
| 
								 | 
							
												obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_3, pIntVec, STATE_PRIORITY_AUTO, false, "");
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if(passiveState == PASSIVEOBJ_SUB_STATE_3)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if(currentT > 20)
							 | 
						||
| 
								 | 
							
										{	
							 | 
						||
| 
								 | 
							
											local crack0 = obj.getVar().get_obj_vector(1);
							 | 
						||
| 
								 | 
							
											local crack1 = obj.getVar().get_obj_vector(2);
							 | 
						||
| 
								 | 
							
											local crack2 = obj.getVar().get_obj_vector(3);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											local cy = y + 11;
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if(!obj.getVar("flag").get_vector(0))
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												local p6 = createCrackPiece(obj, 0, x, cy, 0);
							 | 
						||
| 
								 | 
							
												obj.getVar().push_obj_vector(p6); // 1
							 | 
						||
| 
								 | 
							
												obj.getVar("flag").set_vector(0, 1);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if(obj.getVar("flag").get_vector(0) == 1)
							 | 
						||
| 
								 | 
							
											{		
							 | 
						||
| 
								 | 
							
												if(!obj.getVar("flag").get_vector(1))
							 | 
						||
| 
								 | 
							
												{				
							 | 
						||
| 
								 | 
							
													local ani = sq_GetCurrentAnimation(crack0);
							 | 
						||
| 
								 | 
							
													local frmIndex = sq_GetAnimationFrameIndex(ani);
							 | 
						||
| 
								 | 
							
													
							 | 
						||
| 
								 | 
							
													if(frmIndex >= 3)
							 | 
						||
| 
								 | 
							
													{
							 | 
						||
| 
								 | 
							
														local p6 = createCrackPiece(obj, 1, x, cy, 0);
							 | 
						||
| 
								 | 
							
														obj.getVar().push_obj_vector(p6); // 2
							 | 
						||
| 
								 | 
							
														obj.getVar("flag").set_vector(1, 1);
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if(obj.getVar("flag").get_vector(1) == 1)
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												if(!obj.getVar("flag").get_vector(2))
							 | 
						||
| 
								 | 
							
												{
							 | 
						||
| 
								 | 
							
													local ani = sq_GetCurrentAnimation(crack1);
							 | 
						||
| 
								 | 
							
													local frmIndex = sq_GetAnimationFrameIndex(ani);
							 | 
						||
| 
								 | 
							
													
							 | 
						||
| 
								 | 
							
													if(frmIndex >= 3)
							 | 
						||
| 
								 | 
							
													{			
							 | 
						||
| 
								 | 
							
														local p6 = createCrackPiece(obj, 2, x, cy, 0);
							 | 
						||
| 
								 | 
							
														obj.getVar().push_obj_vector(p6); //3
							 | 
						||
| 
								 | 
							
														obj.getVar("flag").set_vector(2, 1);
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if(!obj.getVar("flag").get_vector(3))
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												local ani = sq_GetCurrentAnimation(crack2);
							 | 
						||
| 
								 | 
							
												local frmIndex = sq_GetAnimationFrameIndex(ani);
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												if(frmIndex >= 3)
							 | 
						||
| 
								 | 
							
												{
							 | 
						||
| 
								 | 
							
													obj.getVar("flag").set_vector(3, 1);
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											procCrackDarknessCircle(obj);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											local objListSize = obj.getVar().get_obj_vector_size();	
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if(objListSize >= 4)
							 | 
						||
| 
								 | 
							
											{		
							 | 
						||
| 
								 | 
							
												local isEndAnimation = true; // 敕翮 拥栖诡桧暮桧 部陬朝虽 羹觼
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												for(local i =1;i<objListSize;++i)
							 | 
						||
| 
								 | 
							
												{				
							 | 
						||
| 
								 | 
							
													local obj = obj.getVar().get_obj_vector(i);
							 | 
						||
| 
								 | 
							
													if(obj == null)
							 | 
						||
| 
								 | 
							
														continue;
							 | 
						||
| 
								 | 
							
														
							 | 
						||
| 
								 | 
							
													local ani = sq_GetCurrentAnimation(obj);
							 | 
						||
| 
								 | 
							
													
							 | 
						||
| 
								 | 
							
													local isEnd = sq_IsEnd(ani);
							 | 
						||
| 
								 | 
							
													
							 | 
						||
| 
								 | 
							
													if(!isEnd)
							 | 
						||
| 
								 | 
							
														isEndAnimation = false;
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												if(isEndAnimation)
							 | 
						||
| 
								 | 
							
												{
							 | 
						||
| 
								 | 
							
													if(obj.isMyControlObject())
							 | 
						||
| 
								 | 
							
													{
							 | 
						||
| 
								 | 
							
														local pIntVec = sq_GetGlobalIntVector();
							 | 
						||
| 
								 | 
							
														sq_IntVectorClear(pIntVec);
							 | 
						||
| 
								 | 
							
														sq_IntVectorPush(pIntVec, 0);	
							 | 
						||
| 
								 | 
							
														obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_4, pIntVec, STATE_PRIORITY_AUTO, false, "");
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
										// PASSIVEOBJ_SUB_STATE_3
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if(passiveState == PASSIVEOBJ_SUB_STATE_4)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										local expStartObj = obj.getVar().get_obj_vector(4); // exp
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										if(expStartObj)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											local ani = sq_GetCurrentAnimation(expStartObj);
							 | 
						||
| 
								 | 
							
											local isEnd = sq_IsEnd(ani);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if(!obj.getVar("flag").get_vector(1))
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												local expFrmIndex = sq_GetAnimationFrameIndex(ani);
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												if(expFrmIndex >= 2)
							 | 
						||
| 
								 | 
							
												{
							 | 
						||
| 
								 | 
							
													local fScreen = sq_flashScreen(obj,0,100,0,200, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
							 | 
						||
| 
								 | 
							
													obj.getVar("flag").set_vector(1, 1);
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if(isEnd)
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												print(" exp:" + obj.getVar("flag").get_vector(0));
							 | 
						||
| 
								 | 
							
												if(!obj.getVar("flag").get_vector(0))
							 | 
						||
| 
								 | 
							
												{
							 | 
						||
| 
								 | 
							
													destroyCrackObject(obj);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
													if(obj.isMyControlObject())
							 | 
						||
| 
								 | 
							
													{
							 | 
						||
| 
								 | 
							
														local expAtkRate = obj.getVar("attack").get_vector(VECTOR_FLAG_2);
							 | 
						||
| 
								 | 
							
														sq_BinaryStartWrite();
							 | 
						||
| 
								 | 
							
														sq_BinaryWriteDword(expAtkRate); //
							 | 
						||
| 
								 | 
							
														// 觼煎栖赝 嬴桧蛊 跷陛蒙机
							 | 
						||
| 
								 | 
							
														// 觼煎栖赝嬴桧蛊 跷陛 晦栋 横菸怃赝 ?渠徽 (100%)
							 | 
						||
| 
								 | 
							
														local size100Rate = 100;
							 | 
						||
| 
								 | 
							
														
							 | 
						||
| 
								 | 
							
														if(obj.getVar("sizerate").get_vector(0) > 0)
							 | 
						||
| 
								 | 
							
														{
							 | 
						||
| 
								 | 
							
															size100Rate = obj.getVar("sizerate").get_vector(0);
							 | 
						||
| 
								 | 
							
														}
							 | 
						||
| 
								 | 
							
														
							 | 
						||
| 
								 | 
							
														sq_BinaryWriteDword(size100Rate); //
							 | 
						||
| 
								 | 
							
														///////////////////////////////////
							 | 
						||
| 
								 | 
							
														
							 | 
						||
| 
								 | 
							
														
							 | 
						||
| 
								 | 
							
														sq_SendCreatePassiveObjectPacket(obj, 24253, 0, 0, 1, 0, obj.getDirection());
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
													obj.getVar("flag").set_vector(0, 1);
							 | 
						||
| 
								 | 
							
													allDestroy(obj);
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											allDestroy(obj);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function onChangeSkillEffect_po_ATDarknessMantle(obj, skillIndex, reciveData)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if(!obj) return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function onDestroyObject_po_ATDarknessMantle(obj, object)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!obj) return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function onKeyFrameFlag_po_ATDarknessMantle(obj, flagIndex)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function onEndCurrentAni_po_ATDarknessMantle(obj)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!obj) return;
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local passiveState = obj.getVar("state").get_vector(0);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(passiveState == PASSIVEOBJ_SUB_STATE_0)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										local x = sq_GetXPos(obj);
							 | 
						||
| 
								 | 
							
										local y = sq_GetYPos(obj);
							 | 
						||
| 
								 | 
							
										local z = sq_GetZPos(obj);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local area100Rate = obj.getVar("attack").get_vector(VECTOR_FLAG_1);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local areaRate = area100Rate.tofloat() / 100.0;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local po1 = createBackLoopDarknessArea(obj, x, y - 25, 0, areaRate, areaRate);
							 | 
						||
| 
								 | 
							
										local po2 = createFrontLoopDarknessArea(obj, x, y + 50, 0, areaRate, areaRate);
							 | 
						||
| 
								 | 
							
										local po3 = createBackLoopSDarknessArea(obj, x, y - 22, 0, areaRate, areaRate);
							 | 
						||
| 
								 | 
							
										local po4 = createFrontLoopSDarknessArea(obj, x, y + 20, 0, areaRate, areaRate);
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
										destroyObject(obj);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										local loopAni = po2.getCurrentAnimation();
							 | 
						||
| 
								 | 
							
										local size = sq_GetAniRealImageSize(loopAni, ENUM_DIRECTION_RIGHT);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										obj.getVar("attack").push_vector(size);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										obj.getVar().push_obj_vector(po1);
							 | 
						||
| 
								 | 
							
										obj.getVar().push_obj_vector(po2);
							 | 
						||
| 
								 | 
							
										obj.getVar().push_obj_vector(po3);
							 | 
						||
| 
								 | 
							
										obj.getVar().push_obj_vector(po4);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
										if(obj.isMyControlObject())
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											local pIntVec = sq_GetGlobalIntVector();
							 | 
						||
| 
								 | 
							
											sq_IntVectorClear(pIntVec);
							 | 
						||
| 
								 | 
							
											sq_IntVectorPush(pIntVec, 0);	
							 | 
						||
| 
								 | 
							
											obj.addSetStatePacket(PASSIVEOBJ_SUB_STATE_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									else if(passiveState == PASSIVEOBJ_SUB_STATE_2)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function onAttack_po_ATDarknessMantle(obj, damager, boundingBox, isStuck)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!obj) return 0;
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local pChr = obj.getTopCharacter();
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(!pChr) return 0;
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local active_damager = sq_GetCNRDObjectToActiveObject(damager);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(!active_damager)
							 | 
						||
| 
								 | 
							
										return 0;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
									CNSquirrelAppendage.sq_AppendAppendage(damager, damager, SKILL_DARKNESSMANTLE, 
							 | 
						||
| 
								 | 
							
									false, "Character/ATMage/DarknessMantle/ap_ATDarknessMantle_effect.nut", true);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return 0;
							 | 
						||
| 
								 | 
							
								}
							 |