Comprehensive support for Gemstone IV-specific features, character data, and game mechanics
Lich 5 provides extensive support for Gemstone IV (GS4), including game-specific modules for character data tracking, society management, combat systems, and more. All Gemstone-specific functionality is namespaced under Lich::Gemstone.
The Infomon system provides persistent character data storage using SQLite.
# Get character informationInfomon.get("society.status") # Current societyInfomon.get("society.rank") # Society rankInfomon.get("experience.fame") # Fame pointsInfomon.get("experience.field_experience_current") # Current field experience# Boolean valuesInfomon.get_bool("some.flag") # Returns true/false# Check data freshnesstimestamp = Infomon.get_updated_at("experience.total_experience")
Infomon automatically tracks timestamps for all data updates, allowing you to check if information is stale.
# Access experience dataLich::Gemstone::Experience.exp # Current experienceLich::Gemstone::Experience.txp # Total experienceLich::Gemstone::Experience.axp # Ascension experienceLich::Gemstone::Experience.fame # Fame# Field experienceLich::Gemstone::Experience.fxp_current # Current field experienceLich::Gemstone::Experience.fxp_max # Maximum field experienceLich::Gemstone::Experience.percent_fxp # Field experience percentage# Long-term experienceLich::Gemstone::Experience.lte # Long-term experience# Death trackingLich::Gemstone::Experience.deeds # Available deedsLich::Gemstone::Experience.deaths_sting # Death's sting status# Data freshnessLich::Gemstone::Experience.updated_at # Last update timestampLich::Gemstone::Experience.stale?(threshold: 24.hours)Lich::Gemstone::Experience.recently_updated?(threshold: 5.minutes)
Monitor active spells, buffs, debuffs, and cooldowns.
Effects System
# Check for active effectsLich::Gemstone::Effects::Spells.active?(401) # Is spell 401 active?Lich::Gemstone::Effects::Buffs.active?("Heroism") # Is buff active?Lich::Gemstone::Effects::Debuffs.active?("Stun") # Is debuff active?Lich::Gemstone::Effects::Cooldowns.active?("Symbol of Courage")# Get time remaining (in minutes)Lich::Gemstone::Effects::Spells.time_left(509)Lich::Gemstone::Effects::Buffs.time_left("Spirit Shield")# Get expiration timestampexpiry = Lich::Gemstone::Effects::Spells.expiration(1701)# Display all effectsLich::Gemstone::Effects.display
The Effects system automatically tracks spell expirations and provides formatted output for viewing all active effects.
# Get current society membershipsociety = Lich::Gemstone::Society.membership# Returns: "Order of Voln", "Council of Light", "Guardians of Sunfist", or nil# Get society rankrank = Lich::Gemstone::Society.rank # Returns integer rank# Get current tasktask = Lich::Gemstone::Society.task# Serialize society datadata = Lich::Gemstone::Society.serialize # [status, rank]
# Individual body partsLich::Gemstone::Wounds.head # Head wound levelLich::Gemstone::Wounds.chest # Chest wound levelLich::Gemstone::Wounds.abdomen # Abdomen wound levelLich::Gemstone::Wounds.back # Back wound levelLich::Gemstone::Wounds.neck # Neck wound level# EyesLich::Gemstone::Wounds.leftEye # or .leyeLich::Gemstone::Wounds.rightEye # or .reye# Arms and handsLich::Gemstone::Wounds.leftArm # or .larm, .left_armLich::Gemstone::Wounds.rightArm # or .rarm, .right_armLich::Gemstone::Wounds.leftHand # or .lhand, .left_handLich::Gemstone::Wounds.rightHand # or .rhand, .right_hand# Legs and feetLich::Gemstone::Wounds.leftLeg # or .lleg, .left_legLich::Gemstone::Wounds.rightLeg # or .rleg, .right_legLich::Gemstone::Wounds.leftFoot # or .lfoot, .left_footLich::Gemstone::Wounds.rightFoot # or .rfoot, .right_foot# Nervous systemLich::Gemstone::Wounds.nsys # or .nerves
# Get current bountybounty = Lich::Gemstone::Bounty.current# Access bounty detailsbounty.type # Task typebounty.status # Current statusbounty.town # Assigned townbounty.requirements # Task requirements# Check bounty statebounty.any? # Has any bounty?bounty.none? # No bounty?bounty.done? # Bounty complete?# Get bounty from LNetLich::Gemstone::Bounty.lnet("CharacterName")
# Check group statusLich::Gemstone::Group.leader? # Am I the leader?Lich::Gemstone::Group.open? # Is group open?Lich::Gemstone::Group.closed? # Is group closed?# Get membersmembers = Lich::Gemstone::Group.members # Array of GameObjids = Lich::Gemstone::Group.ids # Array of IDsnouns = Lich::Gemstone::Group.nouns # Array of names# Manage groupLich::Gemstone::Group.add("PlayerName")Lich::Gemstone::Group.check # Refresh group dataLich::Gemstone::Group.broken? # Is group state inconsistent?# Get group disksdisks = Lich::Gemstone::Group.disks # Array of Disk objects
Work with character disks and disk-like containers.
Disk Operations
# Find your diskmy_disk = Lich::Gemstone::Disk.mine# Find by namedisk = Lich::Gemstone::Disk.find_by_name("Adventurer")# Get all disks in roomall_disks = Lich::Gemstone::Disk.all# Work with diskif disk disk.id # Disk ID disk.name # Owner name # Convert to container for manipulation container = disk.to_containerend