Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 128 additions & 0 deletions 2001/ze_obff_npst_v24/defence.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
//⠀⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠃⠀⠀⠀⠀⢀⢠⡀⠐⠂⠀⠀⠒⠒⠒⠠⠀⠠⠤⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⣠⠐⠌⠋⠑⣂⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⡄⠀⠀⠀⣰⡆⠀⠀⠀⠀⣠⠕⠏⠀⠀⠀⠀⠀⠀⠈⠉⠙⠲⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠐⠀⡀⠀⠀⠀⠀⠀⠀
//⠅⠀⠀⠐⠀⠇⠀⠀⢀⠞⠁⡠⠄⢀⠄⣀⣠⣤⣶⣶⣶⣾⣿⣿⣷⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢄⠀⠀⠀⠀
//⠸⠀⠀⠀⠀⡀⠀⠐⠁⢠⠞⡁⣠⣶⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⣿⠿⠷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀
// ⣆⢀⠀⢀⠀⠂⠀⢰⣯⣴⣿⣿⣿⣿⠿⠛⣉⠁⠀⢂⠀⠀⠀⠈⠃⠀⠈⢧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠃⡀⠀
// ⠊⠳⣢⠁⠀⢠⣿⣿⣿⣿⠟⠉⠂⠀⠀⠠⠂⠀⠀⢂⠀⠀⠀⠀⠈⠂⠀⠱⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣀⠀⠀
// ⠀⣰⠃⠀⠀⣾⣿⡿⢋⢿⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⢢⠀⠀⠀⠀⠀⠐⠀⠘⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠐⣂⠀
// ⢤⠍⠀⠀⢰⣿⡟⠀⠸⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣆⠀⠀⠀⠀⠀⠈⢀⠈⠄⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⢂
//⠀⠁⡾⠢⠀⠀⣼⢇⠁⠀⠀⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠋⡀⠀⠀⠀⠀⠀⠂⠘⡀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀
//⢀⣸⡓⠀⠀⢀⡧⠈⠀⠀⠀⡄⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠈⠁⠀⢀⣀⣀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⠀
//⣵⣟⠄⠀⠀⢸⡁⠂⠀⠀⠀⢀⠠⠀⠁⠀⠀⠀⠀⠀⠐⠀⠀⠐⠃⠉⠀⠀⢄⠀⠀⠀⠀⠉⣥⠀⠀⠀⢀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀
//⡧⣃⠈⠀⠰⢸⠁⠀⠀⠀⠘⠀⠂⠂⠠⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠊⡄⠀⠀⠈⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀
//⡼⠙⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠌⠄⠀⠀⠀⠀⠀⠀⢰⠀⠀⢰⠀⠀⠀⠀⠀⠀⠀⠀⣐⠄⢱⠀⠀⠀⠀⠀⠀⠀⠈⠄⠀⠀⠀⠀⠀
//⣏⠄⡇⠀⠀⠀⠀⠀⠀⢀⠔⠎⠀⡈⡌⠄⠀⠀⠀⠀⠆⢸⡄⡅⠸⠠⠔⡀⢅⣰⣤⣤⣾⣿⣷⣾⣤⢤⠀⠀⠀⠀⠀⢸⡀⠀⠀⠀⠀⠀
//⠃⢀⠇⠀⠰⢠⡀⠀⠔⠁⠈⢠⠀⠠⠀⢊⠀⠀⠀⠀⠀⢸⠀⢀⠀⠐⡨⣶⢿⢿⣿⣿⣿⣿⣿⢻⡇⠀⠂⠄⠠⡀⣀⣸⡙⡀⠀⠀⠀⠀
//⠉⡯⠀⠀⠀⠸⠁⠂⠀⠀⠀⡘⠤⠀⢆⠀⠱⡠⡀⠀⡀⠘⢠⠸⠄⠈⠊⠉⠀⠸⣽⣿⣿⣿⡿⠈⠇⠀⢈⠀⠀⠀⠀⠘⢇⠀⠀⠀⠀⠀
//⠀⠀⠄⠀⠀⠀⡒⠠⠀⠀⠀⢀⠏⣀⠘⡂⠀⠈⠈⠦⠳⠸⠸⡤⠀⠀⠀⠀⠀⠀⠛⠛⠉⠉⠁⠀⠀⠀⠄⠀⠀⠀⠈⡜⠜⠀⠀⠀⠀⠀
// ⢱⠡⠀⠀⠐⠐⠀⠄⠀⠀⠀⣠⣲⣦⡶⣶⡒⠀⢀⠬⠃⠈⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠑⠀⠈⠀⡄⠀⠀⠀⡀⢆⠀⢀⠀⠀⠀⠀⠀
// ⢿⠐⠆⠀⡈⣁⠐⡐⠀⠀⣴⡾⠿⣷⣿⣿⣷⠇⠁⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠠⢁⣒⠁⠀⠀⢀⠠⠈⢀⡌⠀⠀⠀⠀⠀
//⠀⠼⡆⠓⠄⠐⡀⠀⠐⡨⢟⣟⠖⡃⠘⢿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢑⠗⡂⠀⠀⠀⠌⠆⠑⢹⠐⠀⡄⠀⠀⠰
//⠀⠀⡲⠈⢉⢀⠀⢍⡆⠘⢔⣿⢮⡁⠂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠜⠡⠀⠀⠀⡀⠼⡈⠀⢸⠀⠀⡇⠀⠀⠀
// ⠀⠆⠆⠀⠦⡀⠀⠈⢑⣦⠲⡉⡳⡀⠀⠄⠀⠀⠀⠀⠀⠰⠿⠗⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠂⠀⠀⠄⡬⢲⠦⠀⡌⢰⡄⢇⠀⠀⠆
// ⢱⣄⣀⠨⠐⠀⢀⣀⠙⣂⠉⢰⢖⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡂⡊⠀⡠⠂⠊⠑⠈⠐⠢⠱⡪⢂⠸⠀⠀⢠
// ⣆⢤⡮⠋⠔⠁⠀⠈⠤⠀⢊⠈⠢⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⠀⣐⡙⠠⢪⠃⠀⠊⠀⠀⠀⠀⠀⢰⣕⡀⠀⠀⢠
// ⡭⠋⠴⢁⠈⠘⠀⡀⠈⢖⠀⢢⠀⠀⢫⠀⠒⠀⢠⠄⠀⢀⢠⣴⢞⣡⣴⣶⣓⠀⢀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⡜⡍⠄⢠⢸
//⠰⣄⢇⢟⠑⠃⢀⠀⠈⠐⠀⠀⠀⢀⠋⡼⠀⠨⢹⠂⠀⠠⠁⠄⠀⠀⢪⣿⣿⣿⣿⡑⠁⠀⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⡘⢊⢸⡞
//⠀⣻⡂⡀⠄⠀⠀⠈⠀⠀⠀⠠⠀⠀⠈⠣⠾⢣⡀⠉⠄⠀⠀⠁⡄⠀⠀⠸⡟⣫⠂⢀⢔⣾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠽⠺⣇
//⡄⢱⣧⠰⠌⣠⠀⠀⠠⠀⠃⠀⠀⢀⠀⠑⠀⠤⡃⡲⡒⠒⢀⣶⠞⠉⢁⡀⠱⣱⣞⠑⣻⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠳⣿
//⠘⡼⣵⡄⠾⠟⠊⠁⠀⠀⠀⠀⠀⠀⠀⠁⢡⢡⠷⢞⣳⢀⣿⠛⠤⠀⡀⡠⠎⠝⠉⣼⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠊⣇
//⠈⠱⡀⠒⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠄⠀⠙⠡⠘⠻⠀⠀⠀⠉⠀⠈⠀⠀⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢙
//⠀⠡⢱⣀⢡⡀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠶⠀⠀⠀⠀⠀⠸⡧⠇⠀⠀⠀⠀⠀⠀⢠⣿⣃⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⢿⢣⠠⢐⠀⠀⠀⠀⠈⡀⠀⠀⠐⠀⠀⠀⠀⠀⠀⢻⡶⢅⠄⠀⠀⠀⠀⠀⠘⡃⠀⠀⠀⠀⠀⠁⠂⠄⡀⠀⠀⠀⠀⠀⡀⠀⠀⠀
//⠀⠀⢸⢌⠁⢇⠀⡀⠄⠐⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⢠⠡⢁⡀⡘⠀⠀⡀⠀⢀⠵⠪⠁⠀⠀⠉⠀⠀⠀⠐⠈⠐⠄⠀⠀⡐⠀⠀⠀⠀
//⠀⢀⣾⢄⠀⠀⠑⠌⠀⠀⠀⠐⠁⠀⠀⠀⠀⠀⠀⠀⡄⡩⢈⠊⢢⡀⠐⠁⠠⠁⠠⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠈⠘⢅⠀⠀⠀⠀
//⠀⢨⠏⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠣⡁⡀⢀⠀⢄⡖⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠄⠀⠀⠢⠀⠀
//⠀⢸⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⡇⠈⠃⠡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⢀⠀⠁⠐⢀⠀⠁
//⠀⠀⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠆⡄⠠⡀⠀⠀⠁⠠⠀⢀⠀⠠⠀⠀⠐⠁⠀⠁⠀⠀⠀⠀⠀⠀⠀⠂
//⠀⠀⠀⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠅⠀⠀⠀⢈⢀⠄⠔⠠⠀⠐⠀⠈⠀⠀⠈⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠐
//⠀⠀⠀⠘⡼⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡂⠀⠀⠰⠻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠀⠀⠀⠀⠀⠀⠀⠀⠀⡚⠀⠀⠀
//⠀⠀⠀⠀⢠⠹⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠁⢨⠂⠅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⡇⠄⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⡀⠀⠈⠀⠀⠛⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⢀⠁⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⣿⠴⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠌⠀⠀⢠⡄⠀⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠄⠀⠀⠀⠀⢀
//⠀⠀⠀⠐⢀⠉⠗⡃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠁⠀⠀⠀⠌⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠐⠀⠀⠀⠀⠔⠁
//⠀⠀⠀⠀⠆⡀⢀⢚⡄⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠂⠢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠁⠀⠀⠀⠌⠁⠘
//⠀⠀⠀⢠⣸⠃⡸⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⢠⠀⠡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠐⡀⢀⠖⠀⠀⠀
//⠀⠀⠀⠈⠹⠀⠀⠀⠀⢃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠁⠀⠀⣠⣇⠠⠀⠂⠉
//⠀⠀⠀⠀⡀⠀⡅⡆⠀⠀⢂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⡀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠁⠀⢀⠔⠁⠀⠀⠀⠀⠀
//⠀⠀⠀⢰⠁⠀⢣⠃⠀⠀⠀⢂⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⡀⠀⠀⠀⠈⡀⠀⠀⠀⠀⠀⢀⠂⠀⠀⡰⠁⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠠⠀⠀⠓⠔⡀⠀⠀⠀⢂⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⡀⠀⠀⠀⡐⠂⠀⣠⠞⠦⠀⢀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⡰⠐⢱⡀⠄⢀⠀⠀⢂⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠐⠀⠀⠀⢀⠞⠁⠀⠀⠀⠀⠀⠁⠀⠂⠀⠄
//⠀⠀⠀⠀⠀⡧⠄⠡⢖⠐⡀⠀⡀⠀⠄⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠈⢀⠔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠃⠃⠢⠀⠩⢆⠀⠄⠚⢤⣈⡄⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⣠⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

import { Instance } from "cs_script/point_script";

const Distance = 921;

Instance.SetThink(EliminateFlyingEntity);

Instance.OnScriptInput("Defence",() => {
const Time = Instance.GetGameTime();
Instance.SetNextThink(Time);
});

Instance.OnBeforePlayerDamage(({ player, damage }) => {

if (!player || !player.IsValid()) return;

const playerPos = player.GetAbsOrigin();
const TG = Instance.FindEntityByName("ItemEX_Scholar_Shield_Particle");
const TGPos = TG.GetAbsOrigin();
const Dis = VectorDistance(playerPos, TGPos);

if (Dis < Distance && player.GetTeamNumber() == 3) {
return { damage: damage / 2 };
}
else return { damage: damage };
});

function EliminateFlyingEntity() {
const TG = Instance.FindEntityByName("Item_Scholar_Shield_Particle");
if (!TG) return;
const C_O_D = Instance.FindEntityByName("ZM_C_O_D_Magic_Movelinear");
const Storm = Instance.FindEntityByName("ZM_Storm_Movelinear");
const Push = Instance.FindEntityByName("Storm_Push_System");
const TGPos = TG.GetAbsOrigin();
if (C_O_D) {
const Pos1 = C_O_D.GetAbsOrigin();
const DisCOD = VectorDistance(TGPos, Pos1);
if (DisCOD < Distance) EliminateCOD();
}
if (Storm) {
const Pos2 = Storm.GetAbsOrigin();
const DisStorm = VectorDistance(TGPos, Pos2);
if (DisStorm < Distance) EliminateStorm();
}
if (Push) {
const Pos3 = Push.GetAbsOrigin();
const DisPush = VectorDistance(TGPos, Pos3);
if (DisPush < Distance) EliminatePush();
}
const Time = Instance.GetGameTime();
Instance.SetNextThink(Time);
}

function EliminateCOD(){
Instance.EntFireAtName({name: "ZM_C_O_D_Magic_Movelinear", input: "KillHierarchy"});
Instance.EntFireAtName({ name: "ZM_C_O_D_Magic_Maker", input: "Kill"});
return;
}

function EliminateStorm(){
Instance.EntFireAtName({name: "ZM_Storm_Movelinear", input: "KillHierarchy"});
return;
}

function EliminatePush(){
Instance.EntFireAtName({name: "Storm_Push_System", input: "FireUser4"});
return;
}

function VectorDistance(vec1, vec2) {
const dx = vec1.x - vec2.x;
const dy = vec1.y - vec2.y;
const dz = vec1.z - vec2.z;
return Math.sqrt(dx * dx + dy * dy + dz * dz);
}