From 6cf3c9a9f5758b7ce4871df30788708074287096 Mon Sep 17 00:00:00 2001 From: Raoul Bourquin Date: Tue, 15 Oct 2024 01:06:17 +0200 Subject: [PATCH] Provide YinYang items to players via global setting Motivation: Have a similar effect as el:network="true" but allow coupling this for example on the easy mode with some code like wo["ProvideYinYang"] = not wo["IsDifficult"] --- src/WorldProxy.cc | 5 +++++ src/player.cc | 6 +++++- src/server.cc | 2 ++ src/server.hh | 1 + 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/WorldProxy.cc b/src/WorldProxy.cc index a1be3a018..e729d4573 100644 --- a/src/WorldProxy.cc +++ b/src/WorldProxy.cc @@ -78,6 +78,8 @@ namespace enigma { return server::LevelTime; // read only } else if (key == "ProvideExtralifes") { return server::ProvideExtralifes; + } else if (key == "ProvideYinYang") { + return server::ProvideYinYang; } else if (key == "InfiniteReincarnation") { return server::InfiniteReincarnation; } else if (key == "ShowMoves") { @@ -199,6 +201,9 @@ namespace enigma { ASSERT(server::ProvideExtralifes || !newFlag, XLevelRuntime, "Attribute 'ProvideExtralifes': toggling from false to true not allowed"); server::ProvideExtralifes = newFlag; + } else if (key == "ProvideYinYang") { + bool newFlag = val.to_bool(); + server::ProvideYinYang = newFlag; } else if (key == "InfiniteReincarnation") { server::InfiniteReincarnation = val.to_bool(); } else if (key == "ShowMoves") { diff --git a/src/player.cc b/src/player.cc index 90bcc226e..9318040b9 100644 --- a/src/player.cc +++ b/src/player.cc @@ -182,8 +182,12 @@ void player::AddYinYang() { } void player::LevelLoaded(bool isRestart) { - if (server::TwoPlayerGame && server::SingleComputerGame) + if (server::TwoPlayerGame && server::SingleComputerGame) { AddYinYang(); + } + if (server::ProvideYinYang) { + AddYinYang(); + } RedrawInventory(); } diff --git a/src/server.cc b/src/server.cc index eaceb9d0c..1d6549622 100644 --- a/src/server.cc +++ b/src/server.cc @@ -88,6 +88,7 @@ bool ConserveLevel; bool IsDifficult; // read only for Lua bool IsLevelRestart; // no Lua access bool ProvideExtralifes; +bool ProvideYinYang; bool InfiniteReincarnation; bool SurviveFinish; int AddSecondsToScore; @@ -253,6 +254,7 @@ void PrepareLevel() { LevelTime = 0.0; ConserveLevel = true; ProvideExtralifes = true; + ProvideYinYang = false; InfiniteReincarnation = false; SurviveFinish = true; AddSecondsToScore = 0; diff --git a/src/server.hh b/src/server.hh index 28c34cec4..3a0d21082 100644 --- a/src/server.hh +++ b/src/server.hh @@ -61,6 +61,7 @@ extern bool ConserveLevel; extern bool IsDifficult; extern bool IsLevelRestart; extern bool ProvideExtralifes; +extern bool ProvideYinYang; extern bool InfiniteReincarnation; // do not remove extralife on respawn extern bool SurviveFinish; extern int AddSecondsToScore;