/**
* @description 通用武技:四方剑气。
* 当技能触发时,会以玩家为中心,向上下左右四个基本方向同时发射一道飞龙弹幕。
*
* @skill_trigger [主动, CD]
* 这个脚本预设在 tshock/Economics/Skill.json 文件中与一个技能绑定,
* 并且该技能的 "触发模式" 被设置为 ["主动", "CD"]。
*
* @author
* @version 1.0
*
* ---------------------------------------------------------------------------------------------
* Main 函数参数说明:
* @param {object} skill - (技能对象) 触发此脚本的技能在 Skill.json 中的完整配置信息。
* @param {object} ply - (玩家对象) 触发此技能的玩家实例 (TSPlayer)。
* @param {object} pos - (向量对象) 技能释放的起始位置 (Vector2)。
* @param {object} vel - (向量对象) 技能释放的方向向量 (Vector2),此脚本中未使用,因为方向是固定的。
* @param {number} identify - (数字) 如果此技能是由另一个弹幕触发的,这里是那个弹幕的ID,否则为 -1。
* ---------------------------------------------------------------------------------------------
*/
function main(skill, ply, pos, vel, identify) {
// 导入脚本所需的XNA框架命名空间,以便我们使用向量(Vector2)对象。
var Xna = importNamespace("Microsoft.Xna.Framework");
// --- 1. 定义技能的核心参数 ---
const projectileId = 684; // 弹幕ID: 684 是“畅快猛斩”(来源于武器“飞龙”)
const damage = 120; // 伤害值
const knockback = 6.0; // 击退力度
const speed = 10; // 弹幕飞行速度
// --- 2. 定义发射方向的数组 ---
// 我们需要向四个方向发射,所以预先定义好这四个方向的单位向量。
// 在泰拉瑞亚的坐标系中:Y轴向下为正,向上为负;X轴向右为正,向左为负。
const directions = [
new Xna.Vector2(0, -1), // 向上
new Xna.Vector2(0, 1), // 向下
new Xna.Vector2(-1, 0), // 向左
new Xna.Vector2(1, 0) // 向右
];
// --- 3. 循环发射弹幕 ---
// 将弹幕的生成位置固定在玩家的身体中心。
var spawnPosition = ply.TPlayer.Center;
// 使用 forEach 循环遍历我们定义好的四个方向向量。
// 对于数组中的每一个 direction,都会执行一次循环内的代码。
directions.forEach(direction => {
// 计算出最终的速度向量:将方向向量的长度设置为我们预定义的 speed。
var velocity = direction.ToLenOf(speed);
// 在每个方向上都调用 SpawnProjtile 函数生成一个弹幕。
var projIndex = SpawnProjtile(ply, spawnPosition, velocity, projectileId, damage, knockback, ply.Index);
// 将新生成的弹幕同步给所有客户端。
SendProjectilePacket(projIndex);
});
// (可选) 在TShock控制台输出日志,用于调试。
// log(ply.Name + " 使用了四方剑气!");
}