
[QUESTS]
Protection of the Insects: New quest available on Map 1 (Ullathorpe) starting at level 15. Rewards include the "Emerald Cloak" skin.
[NPCs]
Green Mantis: Respawn time upon death removed.
Kingion: Respawn time upon death increased (from 25s to 90s).
[OBJS]
Rings of Magic Resistance: Bards can now correctly cast their spells when using them without a lute.
Blodium Pickaxe: Fixed property issue that prevented level 25/26 workers from using it.
[DUNGEONS]
Verill Dungeon: Fixed teleportation issues within the dungeon.
[MAPS]
Mantis Forest: Added 1 Green Mantis to the map.
Spore Forest: 1 SCORVEX and 1 Ignarok were removed from Map 288.
SERVER
PR # 1752: Bard and Druid: Unified instrument/ring checks on CanCast. Status fix for casting spells requiring a magic instrument: Bards can now successfully cast spells while equipped with a magic resistance ring.
Notes from 08/14/26:
📜 RESOURCES
🗺️ MAPS
To separate level 31+ characters from level 20 characters, the entrance to Dragon Dungeon +31 was moved to Dragon Island (map 134), between Banderbill and Arkhein.
The quest NPC Bertram is now on map 151 (Arghal).
Teleports were added to Veriil Dungeon to diversify movement and prevent camping.
New entrances and corridors in Catacombs II and Marabel Dungeon to prevent camping.
The NPC Frondelia (Spore Island) has been moved to map 289.
NPC blocks have been implemented at the entrances and exits of Tortuga Dungeon to prevent picketing.
🌳 FORGAT
Extensive work has been done to make the mainland, the user's first point of contact upon entering the game, more organized and improve the gameplay experience. Therefore, experience quests have been reworked, and those that allow players to upgrade starting spells have also been moved to this map.
The new NPC Hollister has been added with spell quests: Living Force of the Forest, Echo of the Unholy Forest, Green Lesson, and The Roar That Clears the Path. This aims to make these quests more accessible to low-level characters, as they previously had to travel to Banderbill and Arghal to complete them. In this regard, the NPCs that offered these quests were removed.
A new chain of 6 quests was created for levels 1–13, given by the NPC Makrom (map 507).
🧙♂️NPC Changes:
Rotten Zombie: HP 600 → 700 // Exp 300 → 400 // Gold 15
Zombie: HP 300 → 400 // Exp 150 → 200 // Gold 12 → 10
Zombie Dog: HP 400 → 250 // Exp 200 → 150
Scramer → Undead Scramer: HP 900 → 1000 // Exp 450 → 600 // Gold 28 → 25
Rogue Scramer → Acolyte Scramer: HP 400 → 500 // Exp 150 → 300 // Gold 24 → 15
Hooded Scramer → Shadow Scramer: HP 450 → 800 // Exp 225 → 400 // Gold 26 → 20
Elder Scramer → Necromancer Scramer: HP 600 → 900 // Exp 300 → 500 // Gold 22 → 20
Aggressor Skeleton: Evasion 40 → 35
Assassin: Evasion 55 → 40
Boar: Damage 10/35 → 10/20
Boar: Damage 15/45 → 10/25
Alpha Boar: Damage 20/65 → 20/40
🗺️Map Changes:
Map 64: -3 Bats, +2 Bandits, +2 Gray Wolf.
Map 497: -4 Bats, +1 Acolyte Scramer, +1 Necromancer Scramer.
Map 498: +2 Rotting Zombies, +1 Turtle, +1 Zombie.
Map 501: -2 Bats, -NPCs Tairon and Adha.
Map 500: -4 Scorpions, -1 Bear, +2 Alpha Boar, +3 Boar, +3 Wild Boar.
Map 106: -2 Zombies, -3 Scorpions, -6 Bats, +2 Zombie Dogs, +2 Warrior Zombie.
Map 515: -8 Albino Snakes, -3 Collet Snakes, -NPC Astrid. +3 Zulrik, +2 Grunak, +3 Rikkar, +3 Goblin. Renamed Goblin Island.
Map 506: -3 Hotten, -4 Elapidae, -2 Collet Snake, +4 Panthers.
📦Drops:
Golden/Red/Black Dragon: 0.01% chance to drop Dragon Armor (skin), usable by any class.
Scarlet Witch: 5% chance to drop 15–50 blue potions and/or 10–35 red potions.
🧩 Quests:
New quest in Catacombs II: The Four Nests.
New quest on Usurped Island (NPC Heral, Kamal Village).
New quest in Abandoned Lair (NPC Kaelen, map 461).
New quest on Coral Reef.
Now, quest NPCs have a description in their name indicating the quest they contain: for example, Kaelen <Abandoned Lair Quest>
⚔️ Elemental Weapons: The level requirement for the Worker class to complete the Blodium Picket Forge and Learn the Fire, Wind, Earth, and Water Recipe quests has been lowered from 28 to 25.
New Blodium deposits have been added to maps 556 and 434.
The entry requirement for Turtle Dungeon has been reduced from 27 to 25.
🎁 Items:
New "Elemental Weapon Chests" (Tier 1): Each elemental chest has a chance to drop a Tier 1 staff/weapon/instrument of its respective element.
👾 NPCs:
Elemental Spiders: 0.1% chance to drop an Elemental Chest (Tier 1).
Skeleton Archer: Damage 18/35 → 10/20.
Red Dragon (Dungeon Dragon +31) no longer casts spells on users.
Dungeon Veriil: Two Scarlet Witches have been added to Fort Veriil.One and one in Deadly Room, plus a Stone Golem on map 143. Additionally, the witch respawn time has been removed.
NPCs have been added to map 307 of Frozen Cavern.
⚖️ Balance:
The new item "Trap" has been added to the sale of the miner NPC "DURGAN." It is only available against NPCs and stops the opponent for 60 seconds for the WORKER, HUNTER, and WARRIOR classes.
📜 Spells:
Lightning Bolt: Druid/Bard classes now require their magic instrument (T2) to cast it.
Elemental Lightning: Druid classes now require their magic instrument (T2) to cast it.
Apocalypse: Druid/Bard classes now require their magic instrument (T2) to cast it.
To avoid confusion for new users when purchasing certain spells, the text (PvP) has been added to spells that can only be used against other players: Magic Arrow, Magic Missile, Fleeting Ember, Electric Arrow, Slow, and Disabling Stab.
Heal Minor Wounds: now heals between 5 and 20 hit points.
Heal Major Wounds: reduced cost to 30,000 gold.
🌐Server:
PR # 1641 (Temis-gt)
Fixed status effects resulting from expelling a Faction Leader. When expelling a member of the Royal Council or the Shadow Council, the character was left with an incorrect status effect instead of returning to the Army or Chaos faction.
The online case is corrected by removing redundant conditional branches, always assigning Criminal or Citizen when using /nocaos or /noreal, and retaining Army or Chaos when using /kickconse.
For the offline case, the existing functions EcharArmadaDatabase and EcharLegionDatabase are reused (instead of adding new functions).
Council members kicked via /kickconse retain their faction points since they only lose their leadership rank, without being expelled from the faction.
PR # 1730 (Temis-gt):
Add Magic Instrument Power Validation for Druid and Bard Classes. Adds power scale validation (1-3) for Druid and Bard magic instruments (otMagicalInstrument), mirroring the existing stave system.
The Power field in t_ObjData (shared with staves) is reused instead of creating a new field, avoiding semantic duplication between the two systems. Each class maintains its own family of instruments in the same accessory slot: Druid uses Flute (Common/Magic/Elven), Bard uses Lute (Common/Magic/Elven).
The StaffPower key in Obj.dat has been renamed to MagicPower, applied to both staves and magic instruments.
In CanCast, the Boolean check of RequiredInstrument <> 1 is replaced by the scale comparison ObjData(...).Power < Spells(SpellIndex).RequiresInstrument, identical in structure to the staff check (NeedStaff/Power).
A new message is added for cases where the user has an equipped instrument but insufficient power.
PR # 1678 (Temis-gt):
Fix paralysis duration for traps.
The paralysis duration against NPCs (TrapParaliceDuration) was being passed directly from the configuration to Counters.Paralysis, but this counter was calculated in internal tick units (~6.5 ticks = 1 real second), not in seconds. As a result, with TrapParaliceDuration=15 (intended as 15 seconds), the NPC was only paralyzed for ~2.3 real seconds.
This is corrected by multiplying the value by 6.5 before passing it to NPCs.Paralice, so that the configuration key still represents real seconds as documented in Configuration.ini.
PR # 1693 (Temis-gt):
Visual feedback when skilling. When a character naturally increases a skill, a message "+1 SkillName" now appears above the character.
PR # 1696 (Temis-gt):
Fixed clan alignment when requesting forgiveness/donating as a Priest. A criminal character in a clan with Criminal or Dark Legion alignment could use /donate and become a citizen without being expelled from the clan, leaving them in an inconsistent state (occupying a slot, unable to access the clan menu, and unable to receive messages or clan experience).
The numerical comparison (= 1, which incorrectly compared against ARMED_ALIGNMENT) has been replaced with the enum e_ALIGNMENT_GUILD, verifying both prohibited alignments: Criminal and Chaotic (Dark Legion).
This improves the readability of the check and covers both prohibited alignments, which were previously not validated correctly.
PR # 1716 (Temis-gt):
Added sound effects when casting with a bow.
The placeholder constants SND_FLECHA_IMPACTO and SND_FLECHA_FALLO have been added.
The combat logic in UsuarioAtacaNpc, UsuarioAtacaUsuario, and UserDamageToUser has been updated to play arrow impact/miss sounds when aType = Ranged, while maintaining the existing behavior for the other attack types.
PR # 1739 (Temis-gt):
Fixes creating an object without an equipped tool. This fix stems from a production log (Error 1003 - EquippedWorkingToolObjIndex out of range: 0, Event ID 783815) indicating that the "no equipped tool" case was being treated as a genuine range error.
Adds a validationEarly implementation in AlchemistBuildItem (Code/Work.bas) to handle the ToolIndex = 0 case: sends a localized message (MSG_MUST_EQUIP_TOOL_FIRST) and exits the Sub. Maintains the existing TraceError behavior for ToolIndex values that are truly out of range.
Improves user feedback and avoids unnecessary error traces when there is simply no tool equipped.
👤Client:
PR # 903 (Temis-gt):
Block character movement while the trade, bank, and crafting interfaces are open.
The IsMovementBlocked() function was added to CODE/General.bas to centralize the checking of interfaces that should prevent character movement. MoveTo() now terminates immediately when IsMovementBlocked() returns True, preventing the client from visually moving the character while a trade, bank, or crafting interface is open. This fixes a client-side desynchronization issue where the character could appear to have moved locally even though the server had never processed that movement.
PR # 907 (Temis-gt):
Fix attack blocking while meditating (mouse)
Previously, the attack action was blocked whether the player was resting or meditating. Now, only the rest check blocks the attack. This only affected the click mode configured as "attack" (the option to assign the attack to the second mouse button). Because the attack packet was never sent to the server while meditating, the attack wouldn't be executed, and the meditation wouldn't be interrupted, regardless of how many times the button was clicked. With this fix, the behavior is the same as attacking with Ctrl+click or the keyboard attack key: the attack is executed, and the server interrupts the meditation upon processing the attack, as it already did in those two modes.
PR #911 (Temis-gt):
Stop the previous buffer before replacing it in PlayAmbient - #911
Before assigning a new audio buffer to a track in PlayAmbient, the buffer currently playing is stopped and its position reset. This prevents the audio from the previous track from continuing to play when a new sound is assigned to the same track. Since PlayAmbient always uses the same slot (the one reserved for ambient audio), this affects everything that passes through it: rain sounds, snow sounds, and map ambience. Without this fix, if a loop (for example, rain) was playing and was replaced by another sound on the same channel (for example, when the rain stopped), the old buffer would be orphaned and continue playing indefinitely in parallel, even though the rain had visually stopped.
PR #917 (Temis-gt):
Fixes Index Mismatch in Weapon Damage Display (Blacksmithing) - #917
An index used when displaying a weapon's "Hit" in the blacksmithing panel (frmHerrero.frm, lstArmas\\_Click event, Case 1) has been corrected so that MinHit and MaxHit are derived from the same item (both use lstArmas.ListIndex + 1). Previously, MinHit used lstArmas.ListIndex + 1, but MaxHit used lstArmas.ListIndex without the +1, causing the maximum damage displayed to correspond to the previous weapon in the list instead of the selected weapon. This affected all weapons in the list.
PR #914 (Temis-gt):
Change the local variable `id` from `Long` to `String` and clear `.filename` with `vbNullString` instead of `0`. This fixes a type mismatch (error 13) and correctly resets the SurfaceEntry filename to an empty string, preventing runtime errors when working with string filenames. The crash occurred when evicting an interface texture (loaded via `GetInterfaceTexture`) using LRU. The texture's `.filename` is a string like "boton-seguro-clan-on.bmp". EvictEntry tried to assign it to a `Long` variable, which caused a crash. Sprite textures (loaded via `GetTexture`) didn't have this problem because their `.filename` is a convertible numeric string without error. In short, this could fix the "mini lag" error when entering a map and the game, which indicates that there are other users present.
PR #904 (Temis-gt):
The client would crash unexpectedly (native crash, no catchable exception) when selecting text within the game console (dragging the mouse over RecTxt, or double-clicking to select a word).
RecTxt_MouseUp is executed with any left click in the console, including the MouseUp that occurs when releasing a text selection. The function that reads the text from the clicked line (to detect whispers [Name]) was misusing two Win32 APIs:
EM_LINELENGTH was receiving the line number instead of a character index, which is what it actually expects. This resulted in an incorrect length for any line other than the first.
The buffer was not initialized before EM_GETLINE. This API requires the first two bytes of the buffer to be set to its size, and the code was simply using Space(lngLength) without writing that data.
Between the two bugs, the control ended up writing outside the actual buffer → native Windows crash (