mirror of
				https://github.com/DarkflameUniverse/DarkflameServer.git
				synced 2025-10-30 20:22:04 +00:00 
			
		
		
		
	resolves #556
This commit is contained in:
		
							
								
								
									
										53
									
								
								dScripts/ActMine.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								dScripts/ActMine.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | ||||
| #include "ActMine.h" | ||||
| #include "SkillComponent.h" | ||||
| #include "DestroyableComponent.h" | ||||
| #include "RebuildComponent.h" | ||||
|  | ||||
| void ActMine::OnStartup(Entity* self) { | ||||
| 	self->SetVar(u"RebuildComplete", false); | ||||
| 	self->SetProximityRadius(MINE_RADIUS, "mineRadius"); | ||||
| } | ||||
|  | ||||
| void ActMine::OnRebuildNotifyState(Entity* self, eRebuildState state) | ||||
| { | ||||
| 	if (state == eRebuildState::REBUILD_COMPLETED) { | ||||
| 		auto* rebuild = self->GetComponent<RebuildComponent>(); | ||||
| 		if (rebuild) { | ||||
| 			auto* builder = rebuild->GetBuilder(); | ||||
| 			self->SetVar(u"Builder", builder->GetObjectID()); | ||||
| 		} | ||||
|  | ||||
| 		self->SetVar(u"RebuildComplete", true); | ||||
| 		self->SetVar(u"NumWarnings", 0); | ||||
| 		self->AddToGroup("reset"); | ||||
| 	} | ||||
|  | ||||
| } | ||||
|  | ||||
| void ActMine::OnProximityUpdate(Entity* self, Entity* entering, std::string name, std::string status) { | ||||
| 	auto* detroyable = self->GetComponent<DestroyableComponent>(); | ||||
| 	if (!detroyable) return; | ||||
| 	if (status == "ENTER" && self->GetVar<bool>(u"RebuildComplete") == true && detroyable->IsEnemy(entering)) { | ||||
| 		GameMessages::SendPlayFXEffect(self->GetObjectID(), 242, u"orange", "sirenlight_B"); | ||||
| 		self->AddTimer("Tick", TICK_TIME); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void ActMine::OnTimerDone(Entity* self, std::string timerName) { | ||||
| 	if (timerName == "Tick") { | ||||
| 		if (self->GetVar<int>(u"NumWarnings") >= MAX_WARNINGS){ | ||||
| 			auto* skill = self->GetComponent<SkillComponent>(); | ||||
| 			if (!skill) return; | ||||
| 			skill->CalculateBehavior(SKILL_ID, BEHAVIOR_ID, LWOOBJID_EMPTY); | ||||
| 			self->AddTimer("BlowedUp", BLOWED_UP_TIME); | ||||
| 		} else { | ||||
| 			GameMessages::SendPlayFXEffect(self->GetObjectID(), 242, u"orange", "sirenlight_B"); | ||||
| 			self->AddTimer("Tick", TICK_TIME); | ||||
| 			self->SetVar(u"NumWarnings", self->GetVar<int>(u"NumWarnings") + 1); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if (timerName == "BlowedUp") { | ||||
| 		self->Kill(self); | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										18
									
								
								dScripts/ActMine.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								dScripts/ActMine.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| #pragma once | ||||
| #include "CppScripts.h" | ||||
|  | ||||
| class ActMine : public CppScripts::Script { | ||||
| 	public: | ||||
| 		void OnStartup(Entity* self); | ||||
| 		void OnRebuildNotifyState(Entity* self, eRebuildState state) override; | ||||
| 		void OnProximityUpdate(Entity* self, Entity* entering, std::string name, std::string status); | ||||
| 		void OnTimerDone(Entity* self, std::string timerName); | ||||
| 	private: | ||||
| 		int MAX_WARNINGS = 3; | ||||
| 		float MINE_RADIUS = 10.0; | ||||
| 		float TICK_TIME = 0.25; | ||||
| 		float BLOWED_UP_TIME = 0.1; | ||||
| 		uint32_t SKILL_ID = 317; | ||||
| 		uint32_t BEHAVIOR_ID = 3719; | ||||
| }; | ||||
|  | ||||
| @@ -164,6 +164,7 @@ | ||||
| #include "BaseFootRaceManager.h" | ||||
| #include "PropertyPlatform.h" | ||||
| #include "MailBoxServer.h" | ||||
| #include "ActMine.h" | ||||
|  | ||||
| // Racing Scripts | ||||
| #include "RaceImagineCrateServer.h" | ||||
| @@ -591,6 +592,8 @@ CppScripts::Script* CppScripts::GetScript(Entity* parent, const std::string& scr | ||||
|         return new VeBricksampleServer(); | ||||
| 	else if (scriptName == "scripts\\02_server\\Map\\General\\L_MAIL_BOX_SERVER.lua") | ||||
| 		script = new MailBoxServer(); | ||||
| 	else if (scriptName == "scripts\\ai\\ACT\\L_ACT_MINE.lua") | ||||
| 		script = new ActMine(); | ||||
|  | ||||
| 	//Racing: | ||||
| 	else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\RACE_IMAGINE_CRATE_SERVER.lua") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Aaron Kimbre
					Aaron Kimbre