# Spellbook

# 说明

Spellbook类是管理和操作英雄技能的核心类,通过它可以获取当前施法状态、技能位置信息以及施法者和目标等信息。

# 如何使用

AIBaseClient* hero = ObjectManager::Player();
if (hero) {
    Spellbook* book = hero->SpellBook();
    if (book && book->IsCastingSpell()) {
        // 英雄正在施放技能
    }
}

# Slot

eSpellSlot Slot()

获取当前正在施放的技能栏位。

Spellbook* book = hero->SpellBook();
if (book) {
    eSpellSlot currentSlot = book->Slot();
    // 根据技能栏位判断正在施放什么技能
}

# Slot2

eSpellSlot Slot2()

获取当前施放技能的次要栏位。

Spellbook* book = hero->SpellBook();
if (book) {
    eSpellSlot secondarySlot = book->Slot2();
    // 使用次要栏位信息
}

# CastTime

float CastTime()

获取当前技能开始施放的时间点。

Spellbook* book = hero->SpellBook();
if (book) {
    float castTime = book->CastTime();
    // 使用施法开始时间
}

# CastEndTime

float CastEndTime()

获取当前技能施放结束的时间点。

Spellbook* book = hero->SpellBook();
if (book) {
    float endTime = book->CastEndTime();
    // 计算技能还需要多久才能施放完成
    float remainingCastTime = endTime - Game::Time();
}

# EndTime

float EndTime()

获取技能施放的结束时间点。

Spellbook* book = hero->SpellBook();
if (book) {
    float endTime = book->EndTime();
    // 使用技能结束时间
}

# Delay

float Delay()

获取当前技能的延迟。

Spellbook* book = hero->SpellBook();
if (book) {
    float delay = book->Delay();
    // 使用技能延迟信息
}

# CastDelay

float CastDelay()

获取当前技能的施法延迟。

Spellbook* book = hero->SpellBook();
if (book) {
    float castDelay = book->CastDelay();
    // 使用施法延迟进行计算
}

# MissileRadius

float MissileRadius()

获取当前技能弹道的半径。

Spellbook* book = hero->SpellBook();
if (book) {
    float radius = book->MissileRadius();
    // 使用弹道半径信息
}

# MissileNetworkId

int MissileNetworkId()

获取当前技能弹道的网络ID。

Spellbook* book = hero->SpellBook();
if (book) {
    int missileId = book->MissileNetworkId();
    // 使用弹道网络ID
}

# Start

Vector const& Start()

获取当前技能的起始位置。

Spellbook* book = hero->SpellBook();
if (book) {
    Vector startPos = book->Start();
    // 使用技能起始位置
}

# End

Vector const& End()

获取当前技能的目标位置。

Spellbook* book = hero->SpellBook();
if (book) {
    Vector endPos = book->End();
    // 使用技能目标位置
}

# End2

Vector const& End2()

获取当前技能的次要目标位置。

Spellbook* book = hero->SpellBook();
if (book) {
    Vector secondaryEndPos = book->End2();
    // 使用技能次要目标位置
}

# Direction

Vector const& Direction()

获取当前技能的方向向量。

Spellbook* book = hero->SpellBook();
if (book) {
    Vector dir = book->Direction();
    // 使用技能方向向量
}

# IsAutoAttacking

bool IsAutoAttacking()

判断是否正在进行普通攻击。

Spellbook* book = hero->SpellBook();
if (book && book->IsAutoAttacking()) {
    // 英雄正在进行普通攻击
}

# IsCastingSpell

bool IsCastingSpell()

判断是否正在施放技能。

Spellbook* book = hero->SpellBook();
if (book && book->IsCastingSpell()) {
    // 英雄正在施放技能
}

# Sender

AIBaseClient* Sender()

获取当前技能的施放者。

Spellbook* book = hero->SpellBook();
if (book) {
    AIBaseClient* caster = book->Sender();
    if (caster) {
        // 使用施放者信息
    }
}

# Target

AIBaseClient* Target()

获取当前技能的目标。

Spellbook* book = hero->SpellBook();
if (book) {
    AIBaseClient* target = book->Target();
    if (target) {
        // 使用技能目标信息
    }
}

# SData

SpellData* SData()

获取当前技能的技能数据。

Spellbook* book = hero->SpellBook();
if (book) {
    SpellData* spellData = book->SData();
    if (spellData) {
        // 使用技能数据
    }
}