Adds script hook to change choice speed when determining turn order
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
c078d91b0d
commit
5fce541ffb
|
@ -22,12 +22,8 @@ public:
|
||||||
if (aPriority != bPriority)
|
if (aPriority != bPriority)
|
||||||
return aPriority > bPriority;
|
return aPriority > bPriority;
|
||||||
}
|
}
|
||||||
auto aUser = a->GetUser();
|
if (a->__GetSpeed() != b->__GetSpeed())
|
||||||
auto bUser = b->GetUser();
|
return a->__GetSpeed() > b->__GetSpeed();
|
||||||
auto aSpeed = aUser->GetBoostedStat(Library::Statistic::Speed);
|
|
||||||
auto bSpeed = bUser->GetBoostedStat(Library::Statistic::Speed);
|
|
||||||
if (aSpeed != bSpeed)
|
|
||||||
return aSpeed > bSpeed;
|
|
||||||
|
|
||||||
return a->__GetRandomValue() > b->__GetRandomValue();
|
return a->__GetRandomValue() > b->__GetRandomValue();
|
||||||
}
|
}
|
||||||
|
@ -43,6 +39,10 @@ void TurnOrdering::OrderChoices(std::vector<std::shared_ptr<BaseTurnChoice>>& ve
|
||||||
HOOK(ChangePriority, attackChoice, attackChoice.get(), &priority);
|
HOOK(ChangePriority, attackChoice, attackChoice.get(), &priority);
|
||||||
attackChoice->SetPriority(priority);
|
attackChoice->SetPriority(priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto speed = item->GetUser()->GetBoostedStat(Library::Statistic::Speed);
|
||||||
|
HOOK(ChangeSpeed, item, item.get(), &speed);
|
||||||
|
item->__SetSpeed(speed);
|
||||||
}
|
}
|
||||||
std::sort(vec.begin(), vec.end(), ChoiceCompare());
|
std::sort(vec.begin(), vec.end(), ChoiceCompare());
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,7 @@ namespace CreatureLib::Battling {
|
||||||
_par_ const ArbUt::List<CreatureLib::Library::EffectParameter*>& parameters){};
|
_par_ const ArbUt::List<CreatureLib::Library::EffectParameter*>& parameters){};
|
||||||
virtual void OnBeforeTurn(_par_ const BaseTurnChoice* choice){};
|
virtual void OnBeforeTurn(_par_ const BaseTurnChoice* choice){};
|
||||||
|
|
||||||
|
virtual void ChangeSpeed(_par_ BaseTurnChoice* choice, _par_ uint32_t* speed){};
|
||||||
virtual void ChangePriority(_par_ AttackTurnChoice* choice, _par_ int8_t* priority){};
|
virtual void ChangePriority(_par_ AttackTurnChoice* choice, _par_ int8_t* priority){};
|
||||||
virtual void ChangeAttack(_par_ AttackTurnChoice* choice, _par_ ArbUt::StringView* outAttack){};
|
virtual void ChangeAttack(_par_ AttackTurnChoice* choice, _par_ ArbUt::StringView* outAttack){};
|
||||||
virtual void ModifyNumberOfHits(_par_ AttackTurnChoice* choice, _par_ u8* numberOfHits){};
|
virtual void ModifyNumberOfHits(_par_ AttackTurnChoice* choice, _par_ u8* numberOfHits){};
|
||||||
|
|
|
@ -9,6 +9,7 @@ namespace CreatureLib::Battling {
|
||||||
|
|
||||||
class BaseTurnChoice : public ScriptSource {
|
class BaseTurnChoice : public ScriptSource {
|
||||||
int32_t _randomValue;
|
int32_t _randomValue;
|
||||||
|
uint32_t _speed;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ArbUt::BorrowedPtr<Creature> _user;
|
ArbUt::BorrowedPtr<Creature> _user;
|
||||||
|
@ -21,6 +22,9 @@ namespace CreatureLib::Battling {
|
||||||
|
|
||||||
inline void __SetRandomValue(int32_t val) noexcept { _randomValue = val; }
|
inline void __SetRandomValue(int32_t val) noexcept { _randomValue = val; }
|
||||||
inline int32_t __GetRandomValue() const noexcept { return _randomValue; }
|
inline int32_t __GetRandomValue() const noexcept { return _randomValue; }
|
||||||
|
|
||||||
|
inline void __SetSpeed(uint32_t val) noexcept { _speed = val; }
|
||||||
|
inline uint32_t __GetSpeed() const noexcept { return _speed; }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue