91 lines
2.9 KiB
Plaintext
91 lines
2.9 KiB
Plaintext
|
|
SUBSTATE_PO_ELEMENTAL_CREATOR_STAY <- 2; // 渠晦 鼻鹧 // ?卫粽暧 怃粽 蝶才桧?朝 2 睡搅 卫蒙?棻.
|
|||
|
|
SUBSTATE_PO_ELEMENTAL_CREATOR_FIRE <- 3; // 嫦饵
|
|||
|
|
|
|||
|
|
VAR_PO_ELEMENTAL_CREATOR_TYPE <- 0; // 锰模 颤殓
|
|||
|
|
VAR_PO_POS_MIN <- 1; // 菅菅 集毡朝 嫔纂 譆模高
|
|||
|
|
VAR_PO_POS_MAX <- 2; // 菅菅 集毡朝 嫔纂 譆渠高
|
|||
|
|
|
|||
|
|
function setCustomData_po_ATElementalCreator(obj, receiveData)
|
|||
|
|
{
|
|||
|
|
if (!obj) return;
|
|||
|
|
//elemental type 扑姜. 桧 颤殓戏煎 釭酝缣 葆彻掘 当撩
|
|||
|
|
local elementalType = receiveData.readWord();
|
|||
|
|
|
|||
|
|
local var = obj.getVar();
|
|||
|
|
var.setInt(VAR_PO_ELEMENTAL_CREATOR_TYPE, elementalType);
|
|||
|
|
|
|||
|
|
|
|||
|
|
local rand = sq_getRandom(0, 1);
|
|||
|
|
local upHeight = 8;
|
|||
|
|
if (rand == 0)
|
|||
|
|
upHeight = -8;
|
|||
|
|
|
|||
|
|
var.setInt(VAR_PO_POS_MIN, obj.getZPos());
|
|||
|
|
var.setInt(VAR_PO_POS_MAX, obj.getZPos() + upHeight);
|
|||
|
|
|
|||
|
|
if (elementalType != ENUM_ELEMENT_NONE)
|
|||
|
|
setCurrentAnimationFromCutomIndex(obj, elementalType);
|
|||
|
|
obj.sendStateOnlyPacket(SUBSTATE_PO_ELEMENTAL_CREATOR_STAY);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function onAttack_po_ATElementalCreator(obj, damager, boundingBox, isStuck)
|
|||
|
|
{
|
|||
|
|
if (!obj) return 0;
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function procAppend_po_ATElementalCreator(obj)
|
|||
|
|
{
|
|||
|
|
if (!obj) return;
|
|||
|
|
|
|||
|
|
local var = obj.getVar();
|
|||
|
|
local min = var.getInt(VAR_PO_POS_MIN);
|
|||
|
|
local max = var.getInt(VAR_PO_POS_MAX);
|
|||
|
|
|
|||
|
|
local zPos = sq_GetShuttleValue(min, max, sq_GetObjectTime(obj), 400);
|
|||
|
|
sq_SetCurrentPos(obj, obj.getXPos(), obj.getYPos(), zPos);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function setState_po_ATElementalCreator(obj, state, datas)
|
|||
|
|
{
|
|||
|
|
if (!obj) return;
|
|||
|
|
|
|||
|
|
if (state == SUBSTATE_PO_ELEMENTAL_CREATOR_FIRE)
|
|||
|
|
{
|
|||
|
|
local var = obj.getVar();
|
|||
|
|
local elementalType = var.getInt(VAR_PO_ELEMENTAL_CREATOR_TYPE);
|
|||
|
|
playSoundForAtmageAttack(obj, elementalType, 0);
|
|||
|
|
|
|||
|
|
if (!obj.isMyControlObject()) // 顶陛 妇葬?朝 拥陛 嬴栖贼 饵遴萄虏 营当
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
local direction = sq_GetDirection(obj);
|
|||
|
|
local parentObj = obj.getTopCharacter();
|
|||
|
|
|
|||
|
|
// 擒除暧 嵘紫晦栋桧 毡挤.
|
|||
|
|
local activeObject = sq_FindShootingTarget(parentObj, 0, 0, 0, 0, 0, 4, 4, -1, 300, 100, 50, 100);
|
|||
|
|
local horizonAngle = 0.0;
|
|||
|
|
local verticalAngle = 0.0;
|
|||
|
|
|
|||
|
|
if (activeObject != NULL)
|
|||
|
|
{
|
|||
|
|
local maxDistance = abs(activeObject.getXPos());
|
|||
|
|
horizonAngle = sq_GetShootingHorizonAngle(activeObject, 0, 0, 5, maxDistance);
|
|||
|
|
verticalAngle = sq_GetShootingVerticalAngle(activeObject, 0, 0, 5, maxDistance, 300);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
sq_BinaryStartWrite()
|
|||
|
|
sq_BinaryWriteFloat(horizonAngle); // ?嫦暧 觼晦
|
|||
|
|
sq_BinaryWriteFloat(verticalAngle);
|
|||
|
|
sq_BinaryWriteDword(0);
|
|||
|
|
sq_BinaryWriteDword(1); // 县溯诠骁 溯樯暧 ?卫粽 螃粽薛? 樯陛?
|
|||
|
|
|
|||
|
|
// ?卫粽 螃粽薛? 樯策蝶 扑姜
|
|||
|
|
local passiveObjectIndex = (elementalType == ENUM_ELEMENT_NONE ? 24207 : 24208 + elementalType);
|
|||
|
|
sq_SendCreatePassiveObjectPacket(obj, passiveObjectIndex, 0, 0, 0, 0, obj.getDirection());
|
|||
|
|
sq_SendDestroyPacketPassiveObject(obj);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|