Skip to content

Commit

Permalink
Implements all the old pickup scripts
Browse files Browse the repository at this point in the history
Testsed to make sure they work
Tested to make sure existing script works still
killing it immedialtely is live accurate, the timer was not accurate
  • Loading branch information
aronwk-aaron committed Apr 9, 2023
1 parent 33f9e9c commit 37fe935
Show file tree
Hide file tree
Showing 19 changed files with 263 additions and 39 deletions.
46 changes: 43 additions & 3 deletions dScripts/CppScripts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,6 @@
#include "AgSalutingNpcs.h"
#include "BossSpiderQueenEnemyServer.h"
#include "RockHydrantSmashable.h"
#include "SpecialImaginePowerupSpawner.h"

// Misc Scripts
#include "ExplodingAsset.h"
Expand Down Expand Up @@ -295,6 +294,21 @@
// WBL scripts
#include "WblGenericZone.h"

// pickups
#include "Special1BronzeCoinSpawner.h"
#include "Special1SilverCoinSpawner.h"
#include "Special10BronzeCoinSpawner.h"
#include "Special25BronzeCoinSpawner.h"
#include "Special10SilverCoinSpawner.h"
#include "Special25SilverCoinSpawner.h"
#include "Special1GoldCoinSpawner.h"
#include "Special10GoldCoinSpawner.h"
#include "Special25GoldCoinSpawner.h"
#include "SpecialImaginePowerupSpawner.h"
#include "SpecialImaginePowerupSpawner2pt.h"
#include "SpecialLifePowerupSpawner.h"
#include "SpecialArmorPowerupSpawner.h"

//Big bad global bc this is a namespace and not a class:
InvalidScript* invalidToReturn = new InvalidScript();
std::map<std::string, CppScripts::Script*> m_Scripts;
Expand Down Expand Up @@ -371,8 +385,6 @@ CppScripts::Script* CppScripts::GetScript(Entity* parent, const std::string& scr
script = new RemoveRentalGear();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_NPC_NJ_ASSISTANT_SERVER.lua")
script = new NpcNjAssistantServer();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_IMAGINE-POWERUP-SPAWNER.lua")
script = new SpecialImaginePowerupSpawner();
else if (scriptName == "scripts\\ai\\AG\\L_AG_SALUTING_NPCS.lua")
script = new AgSalutingNpcs();
else if (scriptName == "scripts\\ai\\AG\\L_AG_JET_EFFECT_SERVER.lua")
Expand Down Expand Up @@ -860,6 +872,34 @@ CppScripts::Script* CppScripts::GetScript(Entity* parent, const std::string& scr
else if (scriptName == "scripts\\zone\\LUPs\\WBL_generic_zone.lua")
script = new WblGenericZone();

// pickups
if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_1_BRONZE-COIN-SPAWNER.lua")
script = new Special1BronzeCoinSpawner();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_1_SILVER-COIN-SPAWNER.lua")
script = new Special1SilverCoinSpawner();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_10_BRONZE-COIN-SPAWNER.lua")
script = new Special10BronzeCoinSpawner();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_25_BRONZE-COIN-SPAWNER.lua")
script = new Special25BronzeCoinSpawner();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_10_SILVER-COIN-SPAWNER.lua")
script = new Special10SilverCoinSpawner();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_25_SILVER-COIN-SPAWNER.lua")
script = new Special25SilverCoinSpawner();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_1_GOLD-COIN-SPAWNER.lua")
script = new Special1GoldCoinSpawner();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_10_GOLD-COIN-SPAWNER.lua")
script = new Special10GoldCoinSpawner();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_25_GOLD-COIN-SPAWNER.lua")
script = new Special25GoldCoinSpawner();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_IMAGINE-POWERUP-SPAWNER.lua")
script = new SpecialImaginePowerupSpawner();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_IMAGINE-POWERUP-SPAWNER-2PT.lua")
script = new SpecialImaginePowerupSpawner2pt();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_LIFE-POWERUP-SPAWNER.lua")
script = new SpecialLifePowerupSpawner();
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_ARMOR-POWERUP-SPAWNER.lua")
script = new SpecialArmorPowerupSpawner();

// handle invalid script reporting if the path is greater than zero and it's not an ignored script
// information not really needed for sys admins but is for developers
else if (script == invalidToReturn) {
Expand Down
5 changes: 3 additions & 2 deletions dScripts/ai/SPEC/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
set(DSCRIPTS_SOURCES_AI_SPEC
"SpecialImaginePowerupSpawner.cpp"
set(DSCRIPTS_SOURCES_AI_SPEC
"SpecialCoinSpawner.cpp"
"SpecialPowerupSpawner.cpp"
PARENT_SCOPE)
13 changes: 13 additions & 0 deletions dScripts/ai/SPEC/Special10BronzeCoinSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __SPECIAL10BRONZECOINSPAWNER__H__
#define __SPECIAL10BRONZECOINSPAWNER__H__

#include "SpecialCoinSpawner.h"

class Special10BronzeCoinSpawner : public SpecialCoinSpawner {
public:
Special10BronzeCoinSpawner() : SpecialCoinSpawner(m_currencyDenomination) {};
private:
static const uint32_t m_currencyDenomination = 10;
};

#endif //!__SPECIAL10BRONZECOINSPAWNER__H__
13 changes: 13 additions & 0 deletions dScripts/ai/SPEC/Special10GoldCoinSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __SPECIAL10GOLDCOINSPAWNER__H__
#define __SPECIAL10GOLDCOINSPAWNER__H__

#include "SpecialCoinSpawner.h"

class Special10GoldCoinSpawner : public SpecialCoinSpawner {
public:
Special10GoldCoinSpawner() : SpecialCoinSpawner(m_currencyDenomination) {};
private:
static const uint32_t m_currencyDenomination = 100000;
};

#endif //!__SPECIAL10GOLDCOINSPAWNER__H__
13 changes: 13 additions & 0 deletions dScripts/ai/SPEC/Special10SilverCoinSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __SPECIAL10SILVERCOINSPAWNER__H__
#define __SPECIAL10SILVERCOINSPAWNER__H__

#include "SpecialCoinSpawner.h"

class Special10SilverCoinSpawner : public SpecialCoinSpawner {
public:
Special10SilverCoinSpawner() : SpecialCoinSpawner(m_currencyDenomination) {};
private:
static const uint32_t m_currencyDenomination = 1000;
};

#endif //!__SPECIAL10SILVERCOINSPAWNER__H__
15 changes: 15 additions & 0 deletions dScripts/ai/SPEC/Special1BronzeCoinSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#ifndef __SPECIAL1BRONZECOINSPAWNER__H__
#define __SPECIAL1BRONZECOINSPAWNER__H__

#include "SpecialCoinSpawner.h"

class Special1BronzeCoinSpawner : public SpecialCoinSpawner {
public:
Special1BronzeCoinSpawner() : SpecialCoinSpawner(m_currencyDenomination) {};
private:
static const uint32_t m_currencyDenomination = 1;
};

#endif //!__SPECIAL1BRONZECOINSPAWNER__H__


13 changes: 13 additions & 0 deletions dScripts/ai/SPEC/Special1GoldCoinSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __SPECIAL1GOLDCOINSPAWNER__H__
#define __SPECIAL1GOLDCOINSPAWNER__H__

#include "SpecialCoinSpawner.h"

class Special1GoldCoinSpawner : public SpecialCoinSpawner {
public:
Special1GoldCoinSpawner() : SpecialCoinSpawner(m_currencyDenomination) {};
private:
static const uint32_t m_currencyDenomination = 10000;
};

#endif //!__SPECIAL1GOLDCOINSPAWNER__H__
13 changes: 13 additions & 0 deletions dScripts/ai/SPEC/Special1SilverCoinSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __SPECIAL1SILVERCOINSPAWNER__H__
#define __SPECIAL1SILVERCOINSPAWNER__H__

#include "SpecialCoinSpawner.h"

class Special1SilverCoinSpawner : public SpecialCoinSpawner {
public:
Special1SilverCoinSpawner() : SpecialCoinSpawner(m_currencyDenomination) {};
private:
static const uint32_t m_currencyDenomination = 100;
};

#endif //!__SPECIAL1SILVERCOINSPAWNER__H__
13 changes: 13 additions & 0 deletions dScripts/ai/SPEC/Special25BronzeCoinSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __SPECIAL25BRONZECOINSPAWNER__H__
#define __SPECIAL25BRONZECOINSPAWNER__H__

#include "SpecialCoinSpawner.h"

class Special25BronzeCoinSpawner : public SpecialCoinSpawner {
public:
Special25BronzeCoinSpawner() : SpecialCoinSpawner(m_currencyDenomination) {};
private:
static const uint32_t m_currencyDenomination = 25;
};

#endif //!__SPECIAL25BRONZECOINSPAWNER__H__
13 changes: 13 additions & 0 deletions dScripts/ai/SPEC/Special25GoldCoinSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __SPECIAL25GOLDCOINSPAWNER__H__
#define __SPECIAL25GOLDCOINSPAWNER__H__

#include "SpecialCoinSpawner.h"

class Special25GoldCoinSpawner : public SpecialCoinSpawner {
public:
Special25GoldCoinSpawner() : SpecialCoinSpawner(m_currencyDenomination) {};
private:
static const uint32_t m_currencyDenomination = 250000;
};

#endif //!__SPECIAL25GOLDCOINSPAWNER__H__
13 changes: 13 additions & 0 deletions dScripts/ai/SPEC/Special25SilverCoinSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __SPECIAL25SILVERCOINSPAWNER__H__
#define __SPECIAL25SILVERCOINSPAWNER__H__

#include "SpecialCoinSpawner.h"

class Special25SilverCoinSpawner : public SpecialCoinSpawner {
public:
Special25SilverCoinSpawner() : SpecialCoinSpawner(m_currencyDenomination) {};
private:
static const uint32_t m_currencyDenomination = 2500;
};

#endif //!__SPECIAL25SILVERCOINSPAWNER__H__
14 changes: 14 additions & 0 deletions dScripts/ai/SPEC/SpecialArmorPowerupSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#ifndef __SPECIALARMORPOWERUPSPAWNER__H__
#define __SPECIALARMORPOWERUPSPAWNER__H__

#include "SpecialPowerupSpawner.h"

class SpecialArmorPowerupSpawner : public SpecialPowerupSpawner {
public:
SpecialArmorPowerupSpawner() : SpecialPowerupSpawner(m_SkillId) {};
private:
uint32_t m_SkillId = 80;
};


#endif //!__SPECIALARMORPOWERUPSPAWNER__H__
16 changes: 16 additions & 0 deletions dScripts/ai/SPEC/SpecialCoinSpawner.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#include "SpecialCoinSpawner.h"
#include "CharacterComponent.h"

void SpecialCoinSpawner::OnStartup(Entity* self) {
self->SetProximityRadius(1.5f, "powerupEnter");
}

void SpecialCoinSpawner::OnProximityUpdate(Entity* self, Entity* entering, const std::string name, const std::string status) {
if (name != "powerupEnter" && status != "ENTER") return;
if (!entering->IsPlayer()) return;
auto character = entering->GetCharacter();
if (!character) return;
GameMessages::SendPlayFXEffect(self, -1, u"pickup", "", LWOOBJID_EMPTY, 1, 1, true);
character->SetCoins(character->GetCoins() + this->m_currencyDenomination, eLootSourceType::LOOT_SOURCE_CURRENCY);
self->Smash(entering->GetObjectID(), eKillType::SILENT);
}
13 changes: 13 additions & 0 deletions dScripts/ai/SPEC/SpecialCoinSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#pragma once
#include "CppScripts.h"

class SpecialCoinSpawner : public CppScripts::Script {
public:
SpecialCoinSpawner(uint32_t CurrencyDenomination) {
m_currencyDenomination = CurrencyDenomination;
};
void OnStartup(Entity* self) override;
void OnProximityUpdate(Entity* self, Entity* entering, const std::string name, const std::string status) override;
private:
int32_t m_currencyDenomination = 0;
};
16 changes: 10 additions & 6 deletions dScripts/ai/SPEC/SpecialImaginePowerupSpawner.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
#pragma once
#include "CppScripts.h"
#ifndef __SPECIALIMAGINEPOWERUPSPAWNER__H__
#define __SPECIALIMAGINEPOWERUPSPAWNER__H__

class SpecialImaginePowerupSpawner final : public CppScripts::Script
{
#include "SpecialPowerupSpawner.h"

class SpecialImaginePowerupSpawner : public SpecialPowerupSpawner {
public:
void OnStartup(Entity* self) override;
void OnProximityUpdate(Entity* self, Entity* entering, std::string name, std::string status) override;
SpecialImaginePowerupSpawner() : SpecialPowerupSpawner(m_SkillId) {};
private:
uint32_t m_SkillId = 13;
};

#endif //!__SPECIALIMAGINEPOWERUPSPAWNER__H__
13 changes: 13 additions & 0 deletions dScripts/ai/SPEC/SpecialImaginePowerupSpawner2pt.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __SPECIALIMAGINEPOWERUPSPAWNER2PT__H__
#define __SPECIALIMAGINEPOWERUPSPAWNER2PT__H__

#include "SpecialPowerupSpawner.h"

class SpecialImaginePowerupSpawner2pt : public SpecialPowerupSpawner {
public:
SpecialImaginePowerupSpawner2pt() : SpecialPowerupSpawner(m_SkillId) {};
private:
uint32_t m_SkillId = 129;
};

#endif //!__SPECIALIMAGINEPOWERUPSPAWNER2PT__H__
13 changes: 13 additions & 0 deletions dScripts/ai/SPEC/SpecialLifePowerupSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __SPECIALLIFEPOWERUPSPAWNER__H__
#define __SPECIALLIFEPOWERUPSPAWNER__H__

#include "SpecialPowerupSpawner.h"

class SpecialLifePowerupSpawner : public SpecialPowerupSpawner {
public:
SpecialLifePowerupSpawner() : SpecialPowerupSpawner(m_SkillId) {};
private:
uint32_t m_SkillId = 5;
};

#endif //!__SPECIALLIFEPOWERUPSPAWNER__H__
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

#include "GameMessages.h"
#include "SkillComponent.h"
#include "DestroyableComponent.h"
#include "EntityManager.h"
#include "eReplicaComponentType.h"

Expand All @@ -12,37 +11,16 @@ void SpecialImaginePowerupSpawner::OnStartup(Entity* self) {
}

void SpecialImaginePowerupSpawner::OnProximityUpdate(Entity* self, Entity* entering, const std::string name, const std::string status) {
if (name != "powerupEnter" && status != "ENTER") {
return;
}

if (entering->GetLOT() != 1) {
return;
}

if (self->GetVar<bool>(u"bIsDead")) {
return;
}
if (name != "powerupEnter" && status != "ENTER") return;
if (!entering->IsPlayer()) return;
if (self->GetVar<bool>(u"bIsDead")) return;

GameMessages::SendPlayFXEffect(self, -1, u"pickup", "", LWOOBJID_EMPTY, 1, 1, true);

SkillComponent* skillComponent;
if (!self->TryGetComponent(eReplicaComponentType::SKILL, skillComponent)) {
return;
}

const auto source = entering->GetObjectID();

skillComponent->CalculateBehavior(13, 20, source);

DestroyableComponent* destroyableComponent;
if (!self->TryGetComponent(eReplicaComponentType::DESTROYABLE, destroyableComponent)) {
return;
}
if (!self->TryGetComponent(eReplicaComponentType::SKILL, skillComponent)) return;
skillComponent->CastSkill(13, entering->GetObjectID());

self->SetVar(u"bIsDead", true);

self->AddCallbackTimer(1.0f, [self]() {
EntityManager::Instance()->ScheduleForKill(self);
});
self->Smash(entering->GetObjectID(), eKillType::SILENT);
}
13 changes: 13 additions & 0 deletions dScripts/ai/SPEC/SpecialPowerupSpawner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#pragma once
#include "CppScripts.h"

class SpecialPowerupSpawner : public CppScripts::Script {
public:
SpecialPowerupSpawner(uint32_t skillId) {
m_SkillId = skillId;
};
void OnStartup(Entity* self) override;
void OnProximityUpdate(Entity* self, Entity* entering, std::string name, std::string status) override;
private:
uint32_t m_SkillId = 0;
};

0 comments on commit 37fe935

Please sign in to comment.