mirror of
https://github.com/webluke/mod-grownup.git
synced 2026-01-13 01:08:39 +00:00
changed to linear growth from to a configured level, added an upper level to start growing by a configurable amount, added a max growth amount, updated read me with more info
This commit is contained in:
35
README.md
35
README.md
@@ -1,15 +1,38 @@
|
||||
#  AzerothCore
|
||||
# Grow Up
|
||||
## mod-grownup
|
||||
### This is a module for [AzerothCore](http://www.azerothcore.org)
|
||||
- Latest build status with azerothcore:
|
||||
|
||||
#### Features:
|
||||
- Changes player size on initial creation, then changes their size as they level up through the first 15 levels to full size. Created for Azerothcore
|
||||
This module adds a visual sense of growth and progression to characters, making low-level adventurers look like small “young” versions of their races who literally grow up into heroes over the course of their journey. At even higher levels, veteran heroes can loom larger than their peers (but within a safe cap).
|
||||
|
||||
### Features:
|
||||
First Login / Character Creation:
|
||||
|
||||
- New characters begin their adventure smaller than normal (configurable, default 50% size).
|
||||
|
||||
Starter Growth (Level 1 → StarterMaxLevel, default 15):
|
||||
|
||||
- As the character levels up, their size grows linearly from the configured minimum (e.g. 60%) up to 100% (normal size) by the chosen cap level.
|
||||
|
||||
Normal Zone (Between StarterMaxLevel and HighLevelStart):
|
||||
|
||||
- Once characters reach normal size, they remain steady at 100% scale until they reach the next milestone.
|
||||
|
||||
High-Level Growth (above HighLevelStart, default 65):
|
||||
|
||||
- Beyond this level, players begin to grow again at a small, configurable percentage increase per level (for example, +0.5% per level).
|
||||
|
||||
Maximum Cap:
|
||||
|
||||
- To prevent absurd scaling or model breaking, the growth is limited by a maximum scale value (configurable, default 120%).
|
||||
|
||||
Announcements:
|
||||
|
||||
- Optional system messages on login, module enabled confirmation, and per‑level “you grew” notices.
|
||||
|
||||
|
||||
# 
|
||||
|
||||
### This module currently requires:
|
||||
- AzerothCore vX.X.X+
|
||||
- AzerothCore
|
||||
|
||||
|
||||
### How to install
|
||||
|
||||
@@ -5,36 +5,74 @@
|
||||
########################################
|
||||
#
|
||||
# GrownUp.Enable
|
||||
# Description: Enable model that shrinks players on character creation and slowly increases them to normal size by level 15.
|
||||
# Description: Enable module that shrinks players on character creation
|
||||
# and slowly increases them to normal size by StarterMax level.
|
||||
# Default: 0 - Disabled
|
||||
# 1 - Enabled
|
||||
#
|
||||
|
||||
GrownUp.Enable = 1
|
||||
|
||||
#
|
||||
# GrownUp.Enable
|
||||
# Description: Check if player size is correct on login.
|
||||
# GrownUp.LoginCheck
|
||||
# Description: Ensure player size is correct on login based on level.
|
||||
# Default: 0 - Disabled
|
||||
# 1 - Enabled
|
||||
#
|
||||
|
||||
GrownUp.LoginCheck = 1
|
||||
|
||||
#
|
||||
# GrownUp.Announce
|
||||
# Description: Announce mod enabled on login.
|
||||
# Description: Announce module enabled on login.
|
||||
# Default: 0 - Disabled
|
||||
# 1 - Enabled
|
||||
#
|
||||
|
||||
GrownUp.Announce = 1
|
||||
|
||||
#
|
||||
# GrownUp.GrownAnnounce
|
||||
# Description: Announce each level.
|
||||
# Description: Announce size change each time a player levels up.
|
||||
# Default: 0 - Disabled
|
||||
# 1 - Enabled
|
||||
#
|
||||
GrownUp.GrownAnnounce = 0
|
||||
|
||||
GrownUp.GrownAnnounce = 0
|
||||
#
|
||||
# GrownUp.StarterMinScale
|
||||
# Description: The minimum scale players start with at level 1.
|
||||
# Example: 0.6 = 60% size
|
||||
# Default: 0.6
|
||||
#
|
||||
GrownUp.StarterMinScale = 0.6
|
||||
|
||||
#
|
||||
# GrownUp.StarterMaxLevel
|
||||
# Description: The level where players reach 100% scale.
|
||||
# Growth from StarterMinScale → 1.0f is linear across 1 → StarterMaxLevel.
|
||||
# Default: 15
|
||||
#
|
||||
GrownUp.StarterMaxLevel = 15
|
||||
|
||||
#
|
||||
# GrownUp.HighLevelStart
|
||||
# Description: The level where above-cap growth begins.
|
||||
# At this level grows again afterward by HighLevelScalePercent.
|
||||
# Default: 65
|
||||
#
|
||||
GrownUp.HighLevelStart = 65
|
||||
|
||||
#
|
||||
# GrownUp.HighLevelScalePercent
|
||||
# Description: Percentage increase applied per level above HighLevelStart.
|
||||
# Example: 0.5 = +05% per level.
|
||||
# Default: 0.5
|
||||
#
|
||||
GrownUp.HighLevelScalePercent = 1.0
|
||||
|
||||
#
|
||||
# GrownUp.MaxScale
|
||||
# Description: Maximum scale cap. Players cannot exceed this size no
|
||||
# matter their level or scaling calculation.
|
||||
# Example: 1.2 = 120%
|
||||
# Default: 1.2
|
||||
#
|
||||
GrownUp.MaxScale = 1.2
|
||||
@@ -22,55 +22,84 @@ public:
|
||||
void OnPlayerLogin(Player* player) override
|
||||
{
|
||||
if (sConfigMgr->GetOption<bool>("GrownUp.Announce", true))
|
||||
ChatHandler(player->GetSession()).SendSysMessage("This server is running the |cff4CFF00Grown Up |rmodule.");
|
||||
if (sConfigMgr->GetOption<bool>("GrownUp.LoginCheck", true))
|
||||
{
|
||||
uint8 level = player->GetLevel();
|
||||
float newScale = 1.0f;
|
||||
|
||||
if (level < 5)
|
||||
newScale = 0.5f;
|
||||
else if (level < 10)
|
||||
newScale = 0.65f;
|
||||
else if (level < 15)
|
||||
newScale = 0.85f;
|
||||
else
|
||||
newScale = 1.0f;
|
||||
|
||||
player->SetObjectScale(newScale);
|
||||
ChatHandler(player->GetSession())
|
||||
.SendSysMessage("This server is running the |cff4CFF00Grown Up|r module.");
|
||||
}
|
||||
|
||||
if (sConfigMgr->GetOption<bool>("GrownUp.LoginCheck", true))
|
||||
ApplyScale(player, false); // ensure consistency
|
||||
}
|
||||
|
||||
void OnPlayerFirstLogin(Player* player) override
|
||||
{
|
||||
player->SetObjectScale(0.5f);
|
||||
ChatHandler(player->GetSession()).SendSysMessage("Your adventure begins young one!");
|
||||
// On very first login, set to the configured StarterMinScale
|
||||
float starterMin =
|
||||
sConfigMgr->GetOption<float>("GrownUp.StarterMinScale", 0.5f);
|
||||
|
||||
player->SetObjectScale(starterMin);
|
||||
|
||||
ChatHandler(player->GetSession())
|
||||
.PSendSysMessage("Your adventure begins small!");
|
||||
}
|
||||
|
||||
void OnPlayerLevelChanged(Player* player, uint8 /*oldLevel*/) override
|
||||
{
|
||||
uint8 newLevel = player->GetLevel();
|
||||
float newScale = 1.0f; // default full size
|
||||
ApplyScale(player, true);
|
||||
}
|
||||
|
||||
if (newLevel < 5)
|
||||
newScale = 0.5f;
|
||||
else if (newLevel < 10)
|
||||
newScale = 0.65f;
|
||||
else if (newLevel < 15)
|
||||
newScale = 0.85f;
|
||||
private:
|
||||
void ApplyScale(Player* player, bool notify)
|
||||
{
|
||||
uint32 starterMax =
|
||||
sConfigMgr->GetOption<uint32>("GrownUp.StarterMaxLevel", 15);
|
||||
uint32 highStart =
|
||||
sConfigMgr->GetOption<uint32>("GrownUp.HighLevelStart", 65);
|
||||
float highPercent =
|
||||
sConfigMgr->GetOption<float>("GrownUp.HighLevelScalePercent", 0.5f);
|
||||
float maxScale =
|
||||
sConfigMgr->GetOption<float>("GrownUp.MaxScale", 1.2f);
|
||||
float starterMin =
|
||||
sConfigMgr->GetOption<float>("GrownUp.StarterMinScale", 0.6f);
|
||||
|
||||
uint32 level = player->GetLevel();
|
||||
float newScale = 1.0f;
|
||||
|
||||
if (level <= starterMax)
|
||||
{
|
||||
// Linear growth from StarterMin → 100%
|
||||
if (starterMax > 1)
|
||||
newScale = starterMin +
|
||||
((level - 1) / float(starterMax - 1)) *
|
||||
(1.0f - starterMin);
|
||||
else
|
||||
newScale = 1.0f;
|
||||
}
|
||||
else if (level >= highStart)
|
||||
{
|
||||
// Beyond highStart: +X% per level
|
||||
uint32 aboveLevels = level - highStart;
|
||||
newScale = 1.0f + (aboveLevels * (highPercent / 100.0f));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Between starterMax and highStart → stagnant at 100%
|
||||
newScale = 1.0f;
|
||||
}
|
||||
|
||||
// Cap scale
|
||||
newScale = std::min(newScale, maxScale);
|
||||
|
||||
player->SetObjectScale(newScale);
|
||||
if (sConfigMgr->GetOption<bool>("GrownUp.GrownAnnounce", true))
|
||||
|
||||
if (notify && sConfigMgr->GetOption<bool>("GrownUp.GrownAnnounce", true))
|
||||
{
|
||||
ChatHandler(player->GetSession())
|
||||
.PSendSysMessage("Your adventure has grown!"); // Message when leveling up may try and add the % back later.
|
||||
.PSendSysMessage("You have grown adventure.");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Add all scripts in one
|
||||
void AddGrowUpScripts()
|
||||
{
|
||||
new GrowUp();
|
||||
|
||||
Reference in New Issue
Block a user