General
442 ideas
-
1 vote
Suggestions and plugins
If a suggestion is used to create a plugin, could the creator of that suggestion receive a plugin discount considering how expensive they are?
So far I've had 2 ideas partially or almost fully integrated/converted into a plugin.
That would be a nice gesture to the users who contribute ideas here.
cheers.
-
2 votes
DevilSquare_Classic.xml MaxPlayerPerRoom
If it's possible, can you increase MaxPlayerPerRoom="10" to for example 20?
In my server it's frequently asked question why only 10 and why we can't increase it as those who want to go there don't manage to make it in time because it's full
-
4 votes
Request for a client-side LuaUI API to read the actual game viewport size
Hello IGC team,
We are developing a custom menu using LuaUI. The UI is designed on the 640×480 canvas, but its background images and icons become horizontally stretched when the game runs in different aspect ratios, such as 4:3, 16:10, and 16:9. We need to preserve their proportions while keeping the visual positions and mouse hitboxes aligned.
UI.ScreenWidth() and UI.ScreenHeight() return the LuaUI canvas size (640×480), not the actual game viewport size. In our tests, UI.Scale() also returned 0.50 at all three aspect ratios. Client-side Lua cannot use io.open to read the launcher’s LauncherOption.if file.
Could you provide a read-only client-side API such as UI.GetViewportSize(), returning the width and height of the actual game rendering area? An API returning the viewport aspect ratio would also work. The name is only a suggestion.
The returned dimensions should exclude the Windows title bar and window borders. If DPI scaling affects the values, it is fine to return logical dimensions, provided the width and height use the same units and their ratio is correct. Please document the units and when the API becomes available to LuaUI.
For example, the API should let Lua distinguish 1024×768 (4:3), 1280×800 (16:10), and 1280×720 (16:9). We can then adjust the background, icons, button positions, and mouse hitboxes together in Lua.
Our launcher sets the window size before the game starts, and the window cannot be resized while running. Therefore, being able to read the viewport size once after LuaUI initializes is sufficient for us. A resolution-change callback would be useful, but is not required for this request.
Does the current client already have an equivalent API? If not, would you consider adding one and providing a short Lua usage example? We only need to read the viewport dimensions; we are not requesting file-system access.
Thank you!
-
2 votes
item price plugin, purchase confirmation
Hello, im getting plenty of reports from players who accidentally double click and purchase items twice and then ask for refund.
Please add a confirmation window like Are you sure you want to buy this item? Yes/No to avoid spending time on refunding players.
-
2 votesRefused
4th tree debuff circles permanent removal with config
Please add in config.ini a setting that will permanent remove those miserable debuff circles that are decreasing the game performance in spot and boss hunts.
Many players do not want to use shift+2 but hate those effects due to huge performance loss in spots and boss hunts..
These debuffs spawn with 10k debuff resistance monster settings so you literally cannot avoid them without shift+2, there should be alternative.
Also they spawn in bosses with 10k debuff resistance even though they may not have effect, they spawning which is not normal and ive reported it 2 times in the past.. Imagine 10 players attacking a boss and spawning many debuff circle effects, its a nightmare.
@Wizzy
-
0 votesCompleted
Lua API callback (onShopBuyItem) / RUUD
Hello.
While working on a new service, I've found that the callback "onShopBuyItem" doesn't work with the RUUD shop.
I thought this callback could work with any shop. 😭
Please add an opportunity for onShopBuyItem to work with the RUUD shop as well.
Thank you!
-
2 votesCompleted
Regarding reconnection
After reconnection, the HP was very low. It's very easy to be killed by the monster.
Often, characters remain in the safe zone for a long time.
If after reconnection you can only stay within the safe zone, then reconnection doesn't make much sense.
Because this game is very old, most people don't stay in front of the computer. Instead, they use game assistants to obtain resources and upgrade their characters.
Can the characters regain 100% HP after reconnection? Only in this way can the significance of the reconnection be fully demonstrated.
-
3 votes
IP / HWID limits
;---------------------------------------------------------------------------------------------------- IPConnectionLimit_General_Group = 10000 HWIDConnectionLimit_General_Group = 3 ;---------------------------------------------------------------------------------------------------- IPConnectionLimit_OffPlayer_Group = 10000 HWIDConnectionLimit_OffPlayer_Group = 3 My suggestion: Add a total limit
IPConnectionTotalLimit_Group = 10000 HWIDConnectionTotalLimit_Group = 3 Example. I wanna make a limit of 3 playable accounts per person. With the current system, players are able to run 3 windows + 3 off-level windows at the same time.
With the "TotalLimit_Group" it will be possible to have a maximum of 3 online/off-level characters from the same hwid at the same time.
-
0 votes
Season 6 - Client-side support for ItemSellPriceDivisor
Hello,
I would like to suggest adding full client-side support for ItemSellPriceDivisor in Season 6.
Currently, this setting can be configured in:
Data/PriceSettings.ini
For example:
ItemSellPriceDivisor = 10
The GameServer already applies this setting correctly. When a player sells an item to an NPC, the amount of Zen received is correctly calculated according to the configured ItemSellPriceDivisor.
The only issue is that the Season 6 client does not reflect this setting visually. The player still sees the original selling price in the item tooltip, even though the actual amount of Zen received is different.
It would be great if changing ItemSellPriceDivisor automatically affected both the server-side calculation and the selling price displayed by the client.
This way, when the administrator changes this single parameter, the GameServer would continue calculating the correct amount as it does now, while the client would also display the correct selling price when the player sells an item to an NPC.
This would keep the client display fully consistent with the actual server-side selling price.
Thank you.
-
0 votes
Box of Luck and Box of Heaven drop rates
Server Season: Season 6
i dont see these drop rates configurations would it be hard to make these? also disabling/enabling option would be nice too since now i cant make a custom drops since boxes are hardcoded in exe
-
0 votes
allow Summon to be excluded from the crown-time reset as a configurable rule
The recent change makes Dark Lord Summon reset the accumulated crown registration time when `ResetAccumulatedTimeAfterMove="1"` is enabled.
To be clear about what we are asking: we are not disputing the report, and we are not claiming the old behavior was correct. It was inconsistent with the rest of the option and the fix was the right call. What we would like to request is that the resulting rule — Summon not counting as a relocation for crown registration — be offered deliberately, as an option a server owner can switch on, rather than being unavailable entirely.
**Proposed configuration**
A separate flag under `CastleSiegeEvent`, evaluated only when `ResetAccumulatedTimeAfterMove="1"`:
```
ResetAccumulatedTimeAfterSummon = "1"
// 1 = Dark Lord Summon resets the accumulated crown registration time (current behavior, default)
// 0 = Summon is excluded from the reset; accumulated time is preserved
```
With the default set to `"1"`, no existing server is affected by the update in any way. Anyone who does not touch the configuration keeps exactly the behavior shipped in the fix. Only servers that deliberately set it to `"0"` opt into the alternative rule, with full awareness of what it does.
Since the reset now has a defined call site, we assume this amounts to a single configuration check at that point rather than any rework of the siege logic.
**Why we are asking**
Since the update went live we have received repeated requests from our players to make this possible again. Regardless of how the behavior originated, our community had built siege strategy around it and treats it as part of what a Dark Lord contributes to the event.
The practical impact is a balance one. A guild with fewer members cannot hold the Throne Room continuously against a guild with two or three times the roster — they lose the room, lose the accumulated time, and the siege is settled by headcount rather than by play. Being able to relocate their own Guild Master with Summon, keep the progress already earned, and return for the remainder gave outnumbered guilds a reason to contest the siege at all.
We understand completely that on other servers the same interaction is judged to be abuse, and the reset should apply there. That is precisely why we are asking for a switch rather than a change of default — one configuration line would let both communities run the ruleset they actually want, and neither has to lose anything.
We are happy to test the option on our server and report back before it goes into a general release.
Thank you for considering this.
-
0 votesRefused
Lua API (structs) new ItemAttr field
Add the ability to read from Legendary items, what "Stage" item they currently have.
-
0 votesRefused
BuffEffectManager.xml
BuffEffectManager.xml: Is it hardcoded what <Buff Index="xxx" can be the highest? Because for example, custom <Buff Index="500" works, <Buff Index="505" does not work. Is 500 the limit?
If yes, please increase this limit. With Lua, many buffs can be added now, and to make sure that they won't intersect in the future with new buffs, will be nice to make this limit really big. Maybe like 4096
-
1 vote
Launcher - ServerInfo
Hello. We have the file ServerInfo.xml, where we can write our "connection IP"
<ServerInfo Password="WErt$4t3"> <Connection IP="127.0.0.1" Port="44405" Version="1.00.00" Serial="PoweredByIGCN800" /> Suggestion: add the ability to add an additional "Connection IP" list. Like:
<Connection IP="127.0.0.1" Port="44405" Version="1.00.00" Serial="PoweredByIGCN800" /> <!-- <Connection2 IP="127.0.0.1" Port="44405" Version="1.00.00" Serial="PoweredByIGCN800" /> --> <!-- <Connection3 IP="127.0.0.1" Port="44405" Version="1.00.00" Serial="PoweredByIGCN800" /> --> <!-- <Connection4 IP="127.0.0.1" Port="44405" Version="1.00.00" Serial="PoweredByIGCN800" /> --> <!-- <Connection5 IP="127.0.0.1" Port="44405" Version="1.00.00" Serial="PoweredByIGCN800" /> --> And add in the launcher the possibility to change which "connection IP" will be used. By default, the first one will be used. Others can be commented out if not in use.
The reason: in case of DDOS or any other network issues, players will be able to switch between connection ip. For administrators - less of a headache when we have extra protection in case of problems.
-
0 votesCompleted
Lua API (x-shop)
I would like to suggest adding a callback function for the x-shop.
-- Called when player buys item from x-shop shop (Sync - can prevent purchase)
function onXShopBuyItem(oPlayer, oItem)
if (oPlayer ~= nil) then
if (oItem ~= nil) then
end
end
end
-
8 votes
Lua API (party)
I would like to suggest add 3 extra function.
1) Function Party.DelMember - Gives the ability to delete a member from the party.
2) Function Party.ChangePartyLeader - Gives the ability to change party leader
3) Function Party.AddMember - Gives the ability to add players to the party.
-
1 voteCompleted
Custom Shield explosion effect behavior
Hey, since the explosion effect is one of the nicest things in game and we barely have it triggered, please consider implementing the SD break effect directly on the server instead of relying on the client to detect when SD reaches 0 from the damage packet.
The behavior should be based on detecting the exact transition:
Old SD > 0 → New SD = 0
The important part is to detect this before subtracting the SD damage.
Suggested logic:
int oldSD = victim->SD;
int sdDamage = CalculateSDDamage(...);
bool shieldBroken =
oldSD > 0 &&
sdDamage >= oldSD;
if (sdDamage > oldSD) { sdDamage = oldSD; }
if (shieldBroken && !IsChaosCastle(victim))
{
SendEffect(victim, 17);
}
victim->SD -= sdDamage;
Then continue sending the normal damage packet with the resulting HP/SD values.
So the client receives two separate things:
Effect 17 = SD has just been broken SD = 0 = normal updated shield state
Important requirements:
Check oldSD > 0 && sdDamage >= oldSD before modifying SD.
Use >= / <= logic so an exact 100 SD - 100 damage = 0 also triggers.
Explicitly send MU effect 17 when the shield breaks.
Do not keep a permanent shieldBroken flag.
Once SD regenerates above 0, the effect automatically becomes eligible to trigger again on the next break.
Prefer sending the effect to both the victim and players in its viewport, matching the normal MU effect packet behavior.
Exclude Chaos Castle from effect 17.
Expected behavior:
500 → 300 SD no effect 300 → 120 SD no effect 120 → 0 SD Effect 17 0 → 0 SD no effect SD regenerates to 100 100 → 40 SD no effect 40 → 0 SD Effect 17 again
The main goal is to make SD breaking an explicit server event, instead of expecting the client to infer the animation/effect only because the damage packet reports SD = 0.
-
4 votes
Reload Skills/Scripts for damage test
Currently to adjust damage from Scripts gs needs to be restarted, this makes skill damage testing PVE PVP very lengthy and time consuming as needs to:
restart GS // run main login with all the characters to test PVE PVP // add buffs in-game etc
So reload for this would same a lot time, as new episode seasons comes with new combat power and other changes, which means needs to readjust damage game again almost every season
-
5 votesCompleted
IGC_MonsterKillCountData update
After the latest change to the new monster kill count table IGC_MonsterKillCountData, I noticed that kill count data is saved to DB only about every 9 minutes.
Previously, with the old monster kill count table/logic, the killed monster count was updated almost instantly in the database.
Is it possible to add a config option for the save/update interval of IGC_MonsterKillCountData? For example, something like MonsterKillCountSaveInterval, so server owners can choose how often this data is flushed to DB.
Current behavior makes external systems that read kill count data from DB delayed by several minutes. It would be very useful if this could be configured, or if the data could be saved more frequently like before.
-
10 votes
Lua API (Guild)
I would like to suggest adding a few extra functions.
1) Function Guild.AddMember - Gives the ability to add a member to the guild.
2) Function Guild.DelMember - Gives the ability to remove a member from the guild.
3) Function Guild.AlianceCreation - Create an alliance between 2 guilds
4) Function Guild.AlianceDestroy - Destroy an alliance between 2 guilds
Any other function that can be useful in terms of guild? 🙂
-
5 votesCompleted
Lua API (onItemGetInventory) new callback
Same as "function onItemGet" (Called when: Player picks up item from ground)
function onItemGetInventory (Called when: Player receives an item directly to the inventory (from boxes, moss, e.t.c) (inventory, event inventory, muun inventory)
Or just add this functionality to the onItemGet callback
Thanks!
-
3 votes
Callbacks for events
I am writing to request the addition of new event-related callbacks. Currently, we only have callbacks for BC, CC, and DS events; the idea is to make callbacks available for all events, especially PvP events.
-
1 voteRefused
Request for new callbacks
Request for new callbacks
Hello developers, I am writing to request the addition of new callbacks.
The idea is to have a wider range of callbacks available for the plugins we purchase.
Examples:
Callbacks for raffles, ItemOptionStatisticOption, Ice Throne, among others.
In addition to these, I would like to request a callback that allows us to implement the Golden Archer (NPC). In the past, this NPC was used to redeem rewards via special codes; having a callback that enables this functionality would be very useful.
-
2 votesRefused
Suggestion - a Lua helper to grant stackable items into the player's bundle
It would be great to have a clean LuaAPI way to give a stackable item and have it merge into the player's existing stack instead of creating separate items.
Right now, when granting jewels (which are Overlap="50" in ItemList.xml), Inventory.Insert delivers each one as its own 1-count item rather than stacking them into a bundle, and the OVERLAPITEM_INVENTORY_INSERT create path doesn't seem to insert from Lua. So there's no straightforward way to add, say, 5 Jewels of Soul as one bundle of 5.
Idea: a helper like Inventory.AddItem(playerIdx, itemType, level, count) that respects the item's Overlap value — merging into an existing stack and spilling into a new one at the max. This would make jewel/currency rewards from custom Lua systems behave exactly like normal drops.
-
2 votesRefused
Money increases
Suggest adding WCoin GoblinPoint callbacks, I think most people would like to have these two types of callbacks
