Sqr/character/atmage/frozenland/po_atfrozenlandexp.nut

278 lines
7.3 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

S_PO_FROZENLAND_0 <- 10
S_PO_FROZENLAND_1 <- 11
S_PO_FROZENLAND_2 <- 12
function setCustomData_po_ATFrozenLandExp(obj, reciveData)
{
if(!obj) return;
local radiusSize = reciveData.readDword(); // 奁虽荤
local expAttackRate = reciveData.readDword(); // ?嫦奢问溘
local radius100Rate = reciveData.readDword(); // 怃赝 ?渠 绿徽
obj.getVar("state").clear_vector(); // state vector
obj.getVar("state").push_vector(0);
obj.getVar("flag").clear_vector();
obj.getVar("flag").push_vector(0);
obj.getVar("flag").push_vector(0);
obj.getVar("radius").clear_vector();
obj.getVar("radius").push_vector(radiusSize * 2);
obj.getVar("radius").push_vector(radius100Rate);
obj.getVar("attack").clear_vector();
obj.getVar("attack").push_vector(expAttackRate);
local pAttack = sq_GetCurrentAttackInfo(obj);
sq_SetCurrentAttackBonusRate(pAttack, expAttackRate);
if(obj.isMyControlObject()) {
local pIntVec = sq_GetGlobalIntVector();
sq_IntVectorClear(pIntVec);
sq_IntVectorPush(pIntVec, 0);
obj.addSetStatePacket(S_PO_FROZENLAND_0, pIntVec, STATE_PRIORITY_AUTO, false, "");
}
}
function create_water_pole(obj, index, dx, dy, dz)
{
local x = sq_GetXPos(obj) + dx;
local y = sq_GetYPos(obj) + dy;
local z = sq_GetZPos(obj) + dz;
local ani = 0;
if(index == 0)
{
ani = sq_CreateAnimation("", "PassiveObject/Character/Mage/Animation/ATFrozenLand/exp/waterpole/04_exp_spray_back_normal_50.ani");
}
else
{
ani = sq_CreateAnimation("", "PassiveObject/Character/Mage/Animation/ATFrozenLand/exp/waterpole_1/04_exp_spray_back_normal_50.ani");
}
local pole_obj = sq_CreatePooledObject(ani,true);
pole_obj.setCurrentPos(x,y,z);
obj.getVar("cl").push_obj_vector(pole_obj); // 罹晦怃
sq_AddObject(obj, pole_obj, OBJECTTYPE_DRAWONLY, false);
createShockWaveAnimation(obj, x, y, z);
}
function create_exp_circle(obj, index, dx, dy, dz)
{
local x = sq_GetXPos(obj) + dx;
local y = sq_GetYPos(obj) + dy;
local z = sq_GetZPos(obj) + dz;
local ani = 0;
if(index == 0)
{
ani = sq_CreateAnimation("", "PassiveObject/Character/Mage/Animation/ATFrozenLand/exp/01/01_waterwave_normal_1.ani");
}
else
{
ani = sq_CreateAnimation("", "PassiveObject/Character/Mage/Animation/ATFrozenLand/exp/01/01_waterwave_normal_2.ani");
}
local pole_obj = sq_CreatePooledObject(ani,true);
pole_obj.setCurrentPos(x,y,z);
obj.getVar("cl").push_obj_vector(pole_obj); // 罹晦怃
sq_AddObject(obj, pole_obj, OBJECTTYPE_DRAWONLY, false);
}
function setState_po_ATFrozenLandExp(obj, state, datas)
{
if(!obj) return;
local passiveState = state;
obj.getVar("state").set_vector(0, passiveState);
local x = sq_GetXPos(obj);
local y = sq_GetYPos(obj);
local z = sq_GetZPos(obj);
if(passiveState == S_PO_FROZENLAND_0) {
//local fScreen = sq_flashScreen(obj,0,100,0,140, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
local fScreen = sq_flashScreen(obj,0,160,0,140, sq_RGB(255,255,255), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
//create_exp_circle
local fullRadius = obj.getVar("radius").get_vector(0);
local x1 = fullRadius.tofloat() * 0.48;
local x2 = fullRadius.tofloat() * -0.42;
//local x1 = fullRadius.tofloat() * 0.38; // 锰狱
//local x2 = fullRadius.tofloat() * -0.32; // 锰狱
create_exp_circle(obj, 0, x1.tointeger(), -10, 0);
create_exp_circle(obj, 0, x2.tointeger(), 35, 0);
local x3 = fullRadius.tofloat() * -0.207;
local x4 = fullRadius.tofloat() * 0.368;
//local x3 = fullRadius.tofloat() * -0.107; // 锰狱
//local x4 = fullRadius.tofloat() * 0.268; // 锰狱
create_exp_circle(obj, 1, x3.tointeger(), -50, 0);
create_exp_circle(obj, 1, x4.tointeger(), 40, 0);
}
else if(passiveState == S_PO_FROZENLAND_1) {
sq_SetMyShake(obj,4,400);
local fScreen = sq_flashScreen(obj,0,800,200,140, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
//local fScreen = sq_flashScreen(obj,0,600,200,140, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM);
local ani = obj.getCustomAnimation(0);
obj.setCurrentAnimation(ani);
local radius100Rate = obj.getVar("radius").get_vector(1);
local radiusRate = (radius100Rate.tofloat() / 100.0);
local currentAni = sq_GetCurrentAnimation(obj);
sq_SetAttackBoundingBoxSizeRate(currentAni, radiusRate, 1.0, 1.0);
local atk = sq_GetCurrentAttackInfo(obj);
if(atk)
{
sq_SetChangeStatusIntoAttackInfo(atk, 0, ACTIVESTATUS_FREEZE, 100, 0, 1000);
}
//currentAni.setAttackBoundingBoxSizeRate(radiusRate, true);
// 186 * 2 = 372 len / x = 140; 0.37;
local fullRadius = obj.getVar("radius").get_vector(0);
local x1 = fullRadius.tofloat() * 0.38;
local x2 = fullRadius.tofloat() * -0.32;
//create_water_pole(obj, 0, x1.tointeger(), -20, 0);
//create_water_pole(obj, 0, x2.tointeger(), 25, 0);
//
create_water_pole(obj, 0, x1.tointeger(), -10, 0);
create_water_pole(obj, 0, x2.tointeger(), 35, 0);
local x3 = fullRadius.tofloat() * -0.107;
local x4 = fullRadius.tofloat() * 0.268;
//create_water_pole(obj, 1, x3.tointeger(), -60, 0);
//create_water_pole(obj, 1, x4.tointeger(), 30, 0);
create_water_pole(obj, 1, x3.tointeger(), -50, 0);
create_water_pole(obj, 1, x4.tointeger(), 40, 0);
}
}
function procAppend_po_ATFrozenLandExp(obj)
{
if(!obj) return;
local pChr = obj.getTopCharacter();
if(!pChr) {
if(obj.isMyControlObject())
sq_SendDestroyPacketPassiveObject(obj);
return;
}
local state = obj.getVar("state").get_vector(0);
local passiveState = state;
local pAni = sq_GetCurrentAnimation(obj);
local frmIndex = sq_GetAnimationFrameIndex(pAni);
local currentT = sq_GetCurrentTime(pAni);
if(passiveState == S_PO_FROZENLAND_0) {
}
else if(passiveState == S_PO_FROZENLAND_1) {
if(frmIndex > 0) {
if(obj.getVar("flag").get_vector(VECTOR_FLAG_0) == 0) {
obj.getVar("flag").set_vector(VECTOR_FLAG_0, 1);
}
}
}
else if(passiveState == S_PO_FROZENLAND_1) {
}
}
function onDestroyObject_po_ATFrozenLandExp(obj, object)
{
if(!obj) return;
}
function onKeyFrameFlag_po_ATFrozenLandExp(obj, flagIndex)
{
}
function onEndCurrentAni_po_ATFrozenLandExp(obj)
{
if(!obj) return;
if(!obj.isMyControlObject()) return;
local state = obj.getVar("state").get_vector(0);
local passiveState = state;
if(passiveState == S_PO_FROZENLAND_0) {
local pIntVec = sq_GetGlobalIntVector();
sq_IntVectorClear(pIntVec);
sq_IntVectorPush(pIntVec, 0);
obj.addSetStatePacket(S_PO_FROZENLAND_1, pIntVec, STATE_PRIORITY_AUTO, false, "");
}
else if(passiveState == S_PO_FROZENLAND_1) {
if(obj.isMyControlObject()) {
sq_SendDestroyPacketPassiveObject(obj);
}
}
else if(passiveState == S_PO_FROZENLAND_2) {
}
}
function onAttack_po_ATFrozenLandExp(obj, damager, boundingBox, isStuck)
{
if(!obj)
return 0;
local pChr = obj.getTopCharacter();
if(!pChr)
return 0;
if(obj.isMyControlObject())
{
print("sq_ReleaseActiveStatus:");
//sq_ReleaseActiveStatus(damager, ACTIVESTATUS_FREEZE); //晦?鼻戏煎 葆虽虞 颤问缣 彩念桧 ?薯肾虽 强朝啪 蜃棻坚?栖棻.
}
return 0;
}