mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-01-22 04:37:02 +00:00
Address issue with Inventor Beehive and Buccaneer Monkey ability on valiant weapon (#604)
* Add Script Add the FireFirstSkillonStartup script to allow for scripts that use this to function. * Add comments
This commit is contained in:
parent
94e161df55
commit
670a2de95b
@ -165,6 +165,7 @@
|
|||||||
#include "PropertyPlatform.h"
|
#include "PropertyPlatform.h"
|
||||||
#include "MailBoxServer.h"
|
#include "MailBoxServer.h"
|
||||||
#include "ActMine.h"
|
#include "ActMine.h"
|
||||||
|
#include "FireFirstSkillonStartup.h"
|
||||||
|
|
||||||
// Racing Scripts
|
// Racing Scripts
|
||||||
#include "RaceImagineCrateServer.h"
|
#include "RaceImagineCrateServer.h"
|
||||||
@ -804,7 +805,8 @@ CppScripts::Script* CppScripts::GetScript(Entity* parent, const std::string& scr
|
|||||||
script = new LegoDieRoll();
|
script = new LegoDieRoll();
|
||||||
else if (scriptName == "scripts\\EquipmentScripts\\BuccaneerValiantShip.lua")
|
else if (scriptName == "scripts\\EquipmentScripts\\BuccaneerValiantShip.lua")
|
||||||
script = new BuccaneerValiantShip();
|
script = new BuccaneerValiantShip();
|
||||||
|
else if (scriptName == "scripts\\EquipmentScripts\\FireFirstSkillonStartup.lua")
|
||||||
|
script = new FireFirstSkillonStartup();
|
||||||
// FB
|
// FB
|
||||||
else if (scriptName == "scripts\\ai\\NS\\WH\\L_ROCKHYDRANT_BROKEN.lua")
|
else if (scriptName == "scripts\\ai\\NS\\WH\\L_ROCKHYDRANT_BROKEN.lua")
|
||||||
script = new RockHydrantBroken();
|
script = new RockHydrantBroken();
|
||||||
|
24
dScripts/FireFirstSkillonStartup.cpp
Normal file
24
dScripts/FireFirstSkillonStartup.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "FireFirstSkillonStartup.h"
|
||||||
|
#include "Entity.h"
|
||||||
|
#include "SkillComponent.h"
|
||||||
|
#include "CDClientDatabase.h"
|
||||||
|
#include "CDObjectSkillsTable.h"
|
||||||
|
|
||||||
|
void FireFirstSkillonStartup::OnStartup(Entity* self) {
|
||||||
|
auto skillComponent = self->GetComponent<SkillComponent>();
|
||||||
|
if (!skillComponent) return;
|
||||||
|
|
||||||
|
// Get the skill IDs of this object.
|
||||||
|
CDObjectSkillsTable* skillsTable = CDClientManager::Instance()->GetTable<CDObjectSkillsTable>("ObjectSkills");
|
||||||
|
std::vector<CDObjectSkills> skills = skillsTable->Query([=](CDObjectSkills entry) {return (entry.objectTemplate == self->GetLOT()); });
|
||||||
|
|
||||||
|
// For each skill, cast it with the associated behavior ID.
|
||||||
|
for (auto skill : skills) {
|
||||||
|
CDSkillBehaviorTable* skillBehaviorTable = CDClientManager::Instance()->GetTable<CDSkillBehaviorTable>("SkillBehavior");
|
||||||
|
CDSkillBehavior behaviorData = skillBehaviorTable->GetSkillByID(skill.skillID);
|
||||||
|
|
||||||
|
// Should parent entity be null, make the originator self.
|
||||||
|
const auto target = self->GetParentEntity() ? self->GetParentEntity()->GetObjectID() : self->GetObjectID();
|
||||||
|
skillComponent->CalculateBehavior(skill.skillID, behaviorData.behaviorID, LWOOBJID_EMPTY, false, false, target);
|
||||||
|
}
|
||||||
|
}
|
12
dScripts/FireFirstSkillonStartup.h
Normal file
12
dScripts/FireFirstSkillonStartup.h
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
#ifndef __FIREFIRSTSKILLONSTARTUP__H__
|
||||||
|
#define __FIREFIRSTSKILLONSTARTUP__H__
|
||||||
|
|
||||||
|
#include "CppScripts.h"
|
||||||
|
|
||||||
|
class FireFirstSkillonStartup : public CppScripts::Script {
|
||||||
|
public:
|
||||||
|
void OnStartup(Entity* self) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif //!__FIREFIRSTSKILLONSTARTUP__H__
|
Loading…
Reference in New Issue
Block a user