Sqr/character/atmage/elementalrain/po_elementalraincreator.nut

91 lines
2.9 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.

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);
}
}