Sqr/character/atmage/elementalrain/po_elementalraincreator.nut

91 lines
2.9 KiB
Plaintext
Raw Permalink Normal View History

2024-03-18 21:37:40 +08:00
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);
}
}