📢 Update Notes - 22/08/26

Argentum Online · published

[OBJs]

Trap: Reduces its use cooldown to 5s (15s >> 5s) and restores ground time (5s >> 10s). It can now be used up to 6 tiles away from the user (previously 2).

[MAPS]

Map 152 "Serpent Forest": The Albino Snakes map is restored to the north of Forgat, next to the NPC Quest "Astrid".

Underworld (Map 127): Added 1 Astaroth + 1 Phyrus to the map.

Underworld (Map 267): Added 1 Great Blaze + 2 Fire Mantises + 1 Phyrus to the map.

Underworld (Map 393): Removed 1 Fire Mantis and added 1 Phyrus.

Underworld (Map 562): Added 1 Phyrus.

Underworld (Map 126): 1 Pyrrion removed and 1 Fire Mantis + 1 Astaroth added.

[QUESTS]

"The Watcher of the Underworld" (Underworld): Increases EXP upon quest completion: 38600 (19750 >> 38600), increases GLD upon quest completion: 4400 (2550 >> 4400).

"The Last Message": New quest for characters level 25+, obtainable via item by defeating the following NPCs: Siren - Cryptococcus - Shark - Leviathan.

"Fragment of the Four": New quest available for characters below level 25, obtainable via item by defeating the following NPCs: Gaia - Laican - Nocthral - Escarlath.

"Brute Force" / "Forest Swiftness": Increases the chance of obtaining the scroll to complete the quest: 2% >> 5%.

"Learn the Recipes": Elemental Turtles increase their chance of obtaining the Elemental Leaf required for the quest from 10% to 20% upon death.

[NPCs]

Undead Scramer: Increases his chance to drop the Golden Chalice (quest via item drop) to 5% (2% >> 5%)

Bael <Fire Leviathan>: Reduces his HP to 5000 (8000 >> 5000), reduces his EXP to 5000 (8000 >> 5000), reduces his respawn interval upon death to 10/60 minutes (60/120 >> 10/60)

Astaroth: Reduces his HP to 8000 (12000 >> 8000), reduces his EXP to 12000 (14000 >> 12000)

Phyrus: Reduces his HP to 9000 (12000 >> 9000), reduces his EXP to 13500 (16800 >> 13500)

The NPCs "Siren - Cryptococcus, Shark, and Leviathan increase the chance of dropping a quest item upon death by a 0.2% chance. Upon meeting these requirements, the character must interact with (click on) the NPC Fermin (Fishermen's Port).

The NPCs Gaia, Laican, Nocthral, ​​and Escarlath increase the chance of dropping a quest item upon death by a 10% chance. Upon meeting these requirements, the character must interact with (click on) the NPC Krazgor (Penthar).

Gloomy Troll: Increases HP to 2500 (2000 >> 2500), increases EXP to 1500 (1200 >> 1500).

Mutant Colossus: Increases HP to 3000 (2500 >> 3000), increases EXP to 1800 (1500 >> 1800), reduces respawn time upon death to 5/20 minutes (10/30 >> 5/20).

Glacius: No longer has a chance to drop the "Winter Garments" item upon death.

Arctic Eyewarden: Reduces GLD to 130 (275 >> 130), increases its chance to drop the "Winter Garments" item upon death to 2% (0.1% >> 2%).

Min/Max Damage Adjustment NPC Levels:

Pyramid

Khem (Mummy): 110/140 >> 70/90

Giant Scarab: 105/115 >> 60/65

Scarab: 65/125 >> 40/55

Anubis: 60/130 >> 40/80

Horus: 65/105 >> 45/80

Zombie Pharaoh: 90/135 >> 60/90

Marabel Dungeon

Warlock Lich: 70/125 >> 45/90

Lich: 70/120 >> 40/75

Brumak: 90/135 >> 50/95

Dragon Dungeon

Beholder: 75/105 >> 45/70

Pyrrak: 45/135 >> 45/75

Azhurion: 50/140 >> 50/80

Verdanok: 70/145 >> 55/85

Frogian Cave:

Blue Frogian: 50/80 >> 35/60

Reptilian Frogian: 45/75 >> 30/55

Frogian Sorcerer: 35/70 >> 25/50

Cave of Desolation

Ferus: 45/90 >> 25/50

Layman: 90/145 >> 35/70

Ululantis: 45/90 >> 25/50

Cemetery:

Skeleton Warrior: 40/60 >> 20/35

Shalgar: 28/42 >> 15/30

Skeleton Guardian: 27/45 >> 15/25

Swamp:

Swamp Guard: 45/100 >> 45/75

Abomination: 50/75 >> 35/50

Dark Troll: 65/115 >> 50/85

Turtle Dungeon:

Elemental Turtles: 175/235 >> 100/170

Server:

PR # 1671 - Support quest completion via NPC TalkTo property

Refactors quest handling so that an NPC can receive a quest delivery (TalkTo) independently of the quests they offer (NumQuest). Previously, an NPC that didn't offer any quests of their own (NumQuest=0) couldn't process the delivery of another NPC's quest because the SendQuest command would terminate with Exit Sub before reaching the TalkTo check. This forced users to assign a fictitious NumQuest (or even the quest's own ID) just to unlock the delivery. Changes:

SendQuest: The TalkTo quest check now runs before the NumQuest=0 termination, so any NPC can be a delivery recipient regardless of how many quests they offer.

HasQuest: Adds validation for QuestNumber <= 0. Previously, an empty quest slot (QuestIndex=0) would falsely match against an unconfigured QuestNumber (0), generating false positives.

MakeNPCChar: Adds the quest symbol (pending/complete) for NPCs that are TalkTo destinations, as previously it was only calculated for quests listed in the NPC's NumQuest/QuestNumber. Without this change, an NPC like Astrid wouldn't display any icon even if the player had already completed her quests.The mission was active and ready to turn in.

Cleanup: A redundant `For j = 1 To MAXUSERQUESTS` loop in `EnviarQuest`, which didn't contribute to the completion check, was removed.

PR #1750 - Add Configurable Starting Equipment System - #1750

Replaces the hardcoded starting inventory in `RellenarInventario` (TCP.bas) with a data-driven, INI-based system (`EquipamientoInicial.dat`), read with `clsIniManager`. `RellenarInventario` had all the starting item and spell assignments hardcoded in `Select Case .clase`, with separate `Case` blocks for potions, weapons/accessories, and armor for each of the 12 classes, plus another separate `Select Case` block for the two starting spells (`Stats.UserHechizos`). Any change to the starting equipment required editing the code and recompiling. Changes: General.bas

Sub Main: Added Call LoadInitialEquipment immediately after Call LoadOBJData (the loader depends on already loaded ObjData, because AssignInitialItem calls EquipInvItem/ObtainClothing) and before Call LoadSpells.

InitialEquipment.dat (new, in DatPath)

[COMMON] section: items common to all classes (red potion, violet potion, passage to Jourmut, apple, water).

[CLASS1] to [CLASS12] sections, one for each e_Class value: items (potions, weapon/shield/helmet/ring as applicable, armor or robe marked with Equip=1) and starting spells where applicable (Mage/Cleric/Druid/Bard receive Magic Dart + Summon Wolf; Paladin/Bandit/Assassin receive Magic Wave + Cure Minor Wounds).

TCP.bas

New module-level types: t_InitialEquipItem (ObjIndex, Amount, Equip) and t_InitialEquipSet (array of items + array of spells).

New private variables: EquipoInicialComun (common set for all classes) and EquipoInicialClase() (array indexed 1 to NUMCLASES with the set for each class).

New Public Sub CargarEquipamientoInicial(): initializes clsIniManager on EquipamientoInicial.dat, loads the [COMMON] section and the 12 [CLASSN] sections (N = numeric value of e_Class) into memory once at boot.

New Private Sub LoadEquipSet(...): parses a section of the .dat file (keys NumObjs/ObjN=ObjIndex, Amount, Equip and NumSpells/SpellN=HechizoIndex) into a t_InitialEquipSet. Logs with LogError if an expected key is missing or if an ObjN format does not have 3 fields.

New Private Sub AssignInitialItem(...): adds an item to the user's inventory; if Equip=1, it also calls EquipInvItem, sets EquippedArmorSlot/EquippedArmorObjIndex, and updates Char.body via GetClothing (replaces the logic that previously assumed the last item added was always armor).

New Private Sub ApplyInitialSpells(...): loads Stats.UserSpells from EquipSet.Spells.

RefillInventory rewritten: now iterates through CommonInitialEquipment and ClassInitialEquipment(.class) by calling AssignInitialItem and ApplyInitialSpells, instead of the Select Case statements for each class. It retains the same On Error GoTo / TraceError as before.

PR #1755 - Ignore Paralysis Traps for NPCs Marked with AffectsParalysis

Adds an early exit to clsTrap.trigger to skip triggering when the trap's EffectOverTime subtype is eParalyze and the target is an NPC with NpcList(...).flags.AffectsParalysis active. This prevents the paralysis trap effect (and its trigger broadcast) from being applied or played on NPCs marked with that flag.

PR #1758 - Make Trap Placement Range Configurable

Replaces the hardcoded trap placement distance (3) with a configurable value. SvrConfig now loads TrapPlacementRange (default 6) from the configuration file, InvUsuario uses SvrConfig.GetValue("TrapPlacementRange") for distance checking, and Example.Configuracion.ini includes the new TrapPlacementRange entry. This allows you to adjust how far players can place traps without modifying code.