kimi gone wild
This commit is contained in:
@@ -225,4 +225,161 @@ defmodule Odinsea.Constants.Game do
|
||||
_ -> "Unknown"
|
||||
end
|
||||
end
|
||||
|
||||
# =============================================================================
|
||||
# Skill & Attack Constants (for Anti-Cheat)
|
||||
# =============================================================================
|
||||
|
||||
@doc """
|
||||
Returns the attack delay for a skill (in ticks).
|
||||
Used for speed hack detection.
|
||||
"""
|
||||
def get_attack_delay(skill_id) do
|
||||
if skill_id == 0 do
|
||||
# Normal attack delay
|
||||
300
|
||||
else
|
||||
# Get from skill data or use default
|
||||
get_skill_delay(skill_id) || 300
|
||||
end
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns the skill damage percentage.
|
||||
"""
|
||||
def get_skill_damage(skill_id) do
|
||||
# Default skill damage, would be loaded from WZ in production
|
||||
case skill_id do
|
||||
0 -> 100
|
||||
# Common skills
|
||||
1000 -> 40
|
||||
1009 -> 3000
|
||||
1020 -> 1
|
||||
# Warrior
|
||||
1001004 -> 150
|
||||
1001005 -> 200
|
||||
1101006 -> 180
|
||||
# Mage
|
||||
2001008 -> 120
|
||||
2101004 -> 130
|
||||
2201004 -> 130
|
||||
# Bowman
|
||||
3101005 -> 150
|
||||
3201005 -> 150
|
||||
# Thief
|
||||
4001334 -> 130
|
||||
4101005 -> 140
|
||||
4201005 -> 140
|
||||
# Pirate
|
||||
5001002 -> 160
|
||||
5101004 -> 150
|
||||
5201004 -> 150
|
||||
# Aran
|
||||
21000002 -> 180
|
||||
21100001 -> 190
|
||||
_ -> 100
|
||||
end
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns the attack range for a skill.
|
||||
"""
|
||||
def get_attack_range(skill_id) do
|
||||
case skill_id do
|
||||
0 -> 100
|
||||
# Ranged skills
|
||||
3101005 -> 500
|
||||
3201005 -> 500
|
||||
4001334 -> 250
|
||||
4101005 -> 250
|
||||
4121007 -> 300
|
||||
4201005 -> 150
|
||||
4221007 -> 600
|
||||
# Melee skills
|
||||
_ -> 150
|
||||
end
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns true if skill is a Mu Lung Dojo skill.
|
||||
"""
|
||||
def is_mulung_skill?(skill_id) do
|
||||
skill_id >= 10001000 && skill_id < 10002000
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns true if skill is a Pyramid skill.
|
||||
"""
|
||||
def is_pyramid_skill?(skill_id) do
|
||||
skill_id >= 1020 && skill_id <= 1022
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns true if skill has no delay.
|
||||
"""
|
||||
def is_no_delay_skill?(skill_id) do
|
||||
# Skills that bypass attack delay checks
|
||||
skill_id in [3101005, 1009, 1020]
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns true if skill is a magic charge skill.
|
||||
"""
|
||||
def is_magic_charge_skill?(skill_id) do
|
||||
skill_id in [2121001, 2221001, 2321001]
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns true if skill is an event skill.
|
||||
"""
|
||||
def is_event_skill?(skill_id) do
|
||||
# Skills only usable in specific event maps
|
||||
skill_id >= 90001000 && skill_id < 90002000
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns the linked Aran skill (for skill linking).
|
||||
"""
|
||||
def get_linked_aran_skill(skill_id) do
|
||||
# Handle Aran skill linking
|
||||
if div(skill_id, 10000) == 21 do
|
||||
# Convert Aran skills to regular warrior equivalents for linking
|
||||
base = rem(skill_id, 10000)
|
||||
cond do
|
||||
base == 1005 -> 1101005
|
||||
base == 1004 -> 1101006
|
||||
true -> skill_id
|
||||
end
|
||||
else
|
||||
skill_id
|
||||
end
|
||||
end
|
||||
|
||||
# =============================================================================
|
||||
# Private Helpers
|
||||
# =============================================================================
|
||||
|
||||
defp get_skill_delay(skill_id) do
|
||||
case skill_id do
|
||||
0 -> 300
|
||||
1000 -> 600
|
||||
1004 -> 600
|
||||
1005 -> 900
|
||||
1001004 -> 960
|
||||
1001005 -> 1260
|
||||
1101006 -> 1050
|
||||
2001008 -> 810
|
||||
2101004 -> 810
|
||||
2201004 -> 810
|
||||
3101005 -> 840
|
||||
3201005 -> 840
|
||||
4001334 -> 600
|
||||
4101005 -> 720
|
||||
4201005 -> 720
|
||||
5001002 -> 600
|
||||
5101004 -> 660
|
||||
5201004 -> 660
|
||||
_ -> nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user