diff --git a/.github/ISSUE_TEMPLATE/crafting.yml b/.github/ISSUE_TEMPLATE/crafting.yml new file mode 100644 index 000000000..c2f244e2e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/crafting.yml @@ -0,0 +1,244 @@ +name: "🛠️ Crafting Info" +description: Create a new ticket for a new or changed Ultima Online crafting recipe, resource, tool, BOD, recipe scroll, or crafting system info +title: "Crafting: " +labels: ["ultima-online", "triage", "crafting"] + +body: + - type: input + id: name + attributes: + label: Crafting Entry Name + description: The recipe, resource, tool, reward, craft system, or crafting mechanic name. + validations: + required: true + + - type: dropdown + id: request-type + attributes: + label: Request Type + multiple: true + options: + - New Craftable Item + - Existing Recipe Change + - Crafting Resource / Subresource + - Recipe Scroll / Learned Recipe + - Runic Tool + - Bulk Order Deed (BOD) + - Tool / Station / Add-on + - Craft Gump / UI + - Success / Exceptional / Quality Formula + - Skill Requirement / Secondary Skill + - Vendor / Reward / Drop Source + - Harvesting Link + - Parity / Migration Info + - Custom / Unknown + validations: + required: true + + - type: dropdown + id: craft-system + attributes: + label: Craft System / Skill + multiple: true + options: + - Alchemy + - Blacksmithy + - Bowcraft / Fletching + - Carpentry + - Cartography + - Cooking + - Inscription + - Tailoring + - Tinkering + - Imbuing + - Masonry + - Glassblowing + - Basket Weaving + - Bulk Orders + - Harvesting / Resource Gathering + - Vendor / Reward System + - Unknown / Other + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe the crafting info, recipe, resource, tool, BOD, or system behavior and the intended player-facing result. + validations: + required: true + + - type: textarea + id: references + attributes: + label: References + description: | + Add UO.com, UOGuide, Stratics, ServUO/RunUO, screenshots, gump captures, recipe lists, or other related URLs. + Use one reference per line and note what each source proves when possible. + placeholder: | + https://uo.com/wiki/... — official recipe, resource, reward, or publish note + https://www.uoguide.com/... — skill, recipe, BOD, resource, or history notes + https://github.com/ServUO/ServUO/... — engine or craft definition precedent + validations: + required: false + + - type: dropdown + id: era + attributes: + label: Initial Era + options: + - Classic (Pre-T2A) + - The Second Age (T2A) + - Renaissance (UOR) + - Third Dawn (TD) + - Lord Blackthorns Revenge (LBR) + - Age of Shadows (AOS) + - Samurai Empire (SE) + - Mondains Legacy (ML) + - Kingdom Reborn (KR) + - Stygian Abyss (SA) + - High Seas (HS) + - Time of Legends (TOL) + - New Legacy (NL) + - Unknown + validations: + required: true + + - type: input + id: publish + attributes: + label: Initial Publish + description: What is the initial publish? + placeholder: unknown + validations: + required: false + + - type: dropdown + id: player-loops + attributes: + label: Player Loops + multiple: true + options: + - Crafting + - Harvesting / Resource Gathering + - Economy / Trading + - PvM Loot Source + - PvP / Felucca Risk + - Bulk Orders + - Vendor / Reward Loop + - Quest / Narrative + - Housing / Add-ons / Decoration + - New Player Progression + - Veteran / Prestige + - Event / Seasonal + - Unknown + validations: + required: true + + - type: textarea + id: recipe-details + attributes: + label: Recipe / Crafting Details + description: | + Describe output item, craft category, recipe group, craft gump entry, recipe ID, cliloc/name, required expansion, and whether the recipe is normal, rare, quest, or learned. + placeholder: | + Output item: + Craft category / gump group: + Recipe ID: + Recipe rarity/source: + Required expansion: + validations: + required: true + + - type: textarea + id: resources-requirements + attributes: + label: Resources / Requirements + description: | + List consumed resources, subresources, amounts, hue/material inheritance, required tools, stations, heat/oven/mill context, mana/stamina/hits cost, and any prerequisite items. + placeholder: | + Resources: + Subresources: + Tool/station: + Additional costs: + validations: + required: false + + - type: textarea + id: skill-formulas + attributes: + label: Skill / Success / Exceptional Formulas + description: | + Add primary skill, secondary skills, min/max skill ranges, success chance, exceptional chance, quality behavior, maker's mark rules, and expected test values. + validations: + required: false + + - type: textarea + id: output-properties + attributes: + label: Output Properties / Item Behavior + description: | + Describe durability, stackability, weight, hue, material bonuses, item properties, magical rolls, runic behavior, blessed/quest/newbied/bound behavior, repairability, and decay. + validations: + required: false + + - type: textarea + id: recipe-scrolls-learning + attributes: + label: Recipe Scrolls / Learning + description: | + If applicable, describe recipe scroll ID, learning requirements, learned/unlearned craft gump state, drop source, quest source, satchel source, and duplicate-learning behavior. + validations: + required: false + + - type: textarea + id: bod-rewards-vendors + attributes: + label: BODs / Rewards / Vendors + description: | + If applicable, describe Bulk Order Deed behavior, reward pools, vendor availability, trainer/vendor inventory, turn-in cooldowns, reward odds, and related economic sinks/sources. + validations: + required: false + + - type: textarea + id: economy-balance + attributes: + label: Economy / Balance Impact + description: | + Describe resource faucet/sink impact, gold/hour or item/hour expectations, rarity, tradeability, insurance/blessing impact, storage impact, and anti-farm or dupe concerns. + validations: + required: false + + - type: textarea + id: restrictions + attributes: + label: Restrictions / Era / Rules + description: | + Add expansion gates, race requirements, facet/map restrictions, quest gates, account limits, recipe rarity, recipe source limits, and exploit/bot concerns. + validations: + required: false + + - type: textarea + id: presentation + attributes: + label: Client Presentation + description: | + Add craft gump group, cliloc names, item art, hue, tooltip lines, recipe scroll text, tool/add-on art, sounds, animations, or localization notes. + validations: + required: false + + - type: textarea + id: implementation-notes + attributes: + label: Implementation Notes / Repo Anchors + description: | + Add known CraftSystem/Def*.cs files, CraftItem entries, SetNeededExpansion gates, Recipe IDs, resource classes, item classes, BOD profiles, tests, or code anchors if known. + placeholder: | + Craft definition: + Item/resource classes: + Recipe ID: + Tests: + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/event.yml b/.github/ISSUE_TEMPLATE/event.yml new file mode 100644 index 000000000..46be69dd7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/event.yml @@ -0,0 +1,291 @@ +name: "🎉 New Event" +description: Create a new ticket for a new or changed Ultima Online event, seasonal window, scheduled activity, encounter, live event, or event system behavior +title: "Event: " +labels: ["ultima-online", "triage", "event"] + +body: + - type: input + id: name + attributes: + label: Event Name + description: The event, seasonal window, live event, encounter, activity, or event system name. + validations: + required: true + + - type: dropdown + id: event-type + attributes: + label: Event Type + multiple: true + options: + - Seasonal / Holiday Event + - Live / GM Event + - Scheduled Recurring Event + - Daily / Weekly / Monthly Activity + - World Event + - Town Invasion + - Dungeon / Encounter Event + - Champion / Spawn Event + - Boss / Peerless Event + - Quest / Narrative Event + - PvP Event + - Crafting / Resource Event + - Vendor / Reward Event + - Decoration / Static Event + - Anniversary / Shard Event + - Maintenance / Reset Event + - Parity / Migration Info + - Custom / Unknown + validations: + required: true + + - type: dropdown + id: event-system + attributes: + label: Event System / Scope + multiple: true + options: + - EventScheduler / Calendar + - EventSink / Game Hook + - Timer / Controller + - Spawn Package / Generic Spawner + - Region / Facet Rule + - Quest System + - Champion Spawn + - Peerless / Boss Encounter + - Vendor / Reward Store + - Crafting / Harvesting + - Decoration / Static Placement + - Gump / UI + - Staff Command / Tooling + - Data Migration / Parity + - Custom / Unknown + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe the event, seasonal behavior, scheduled activity, encounter, or system behavior and the intended player-facing result. + validations: + required: true + + - type: textarea + id: references + attributes: + label: References + description: | + Add UO.com, UOGuide, Stratics, ServUO/RunUO, screenshots, announcements, event notes, videos, or other related URLs. + Use one reference per line and note what each source proves when possible. + placeholder: | + https://uo.com/wiki/... — official event, reward, schedule, or publish note + https://www.uoguide.com/... — event mechanics, history, location, reward, or spawn notes + https://github.com/ServUO/ServUO/... — engine or event system precedent + validations: + required: false + + - type: dropdown + id: era + attributes: + label: Initial Era + options: + - Classic (Pre-T2A) + - The Second Age (T2A) + - Renaissance (UOR) + - Third Dawn (TD) + - Lord Blackthorns Revenge (LBR) + - Age of Shadows (AOS) + - Samurai Empire (SE) + - Mondains Legacy (ML) + - Kingdom Reborn (KR) + - Stygian Abyss (SA) + - High Seas (HS) + - Time of Legends (TOL) + - New Legacy (NL) + - Unknown + validations: + required: true + + - type: input + id: publish + attributes: + label: Initial Publish + description: What is the initial publish? + placeholder: unknown + validations: + required: false + + - type: dropdown + id: facets + attributes: + label: Facets / Maps + multiple: true + options: + - Felucca + - Trammel + - Ilshenar + - Malas + - Tokuno + - Ter Mur + - Eodon + - Internal / Custom + - Unknown + validations: + required: true + + - type: textarea + id: schedule-window + attributes: + label: Schedule / Duration + description: | + Describe start/end dates, time of day, timezone, recurrence, activation window, daily/weekly/monthly/yearly schedule, manual start/stop rules, and expected overlap behavior. + placeholder: | + Start: + End: + Timezone: + Recurrence: + Manual enable/disable: + validations: + required: true + + - type: textarea + id: locations-regions + attributes: + label: Locations / Regions + description: | + List facets, towns, dungeons, regions, coordinates, entrances, safe zones, guard zones, event areas, and any region rule changes. + placeholder: | + Facet/map: + Region/town/dungeon: + Coordinates: + Region rules: + validations: + required: true + + - type: dropdown + id: player-loops + attributes: + label: Player Loops + multiple: true + options: + - PvM + - PvP / Felucca Risk + - Quest / Narrative + - Spawns / Encounters + - Boss / Peerless + - Champion Spawn + - Crafting / Resources + - Harvesting + - Economy / Rewards + - Vendor / Token Store + - Housing / Decoration + - Travel / Exploration + - New Player Progression + - Veteran / Prestige + - Community / Social + - Staff Operations + - Unknown + validations: + required: true + + - type: textarea + id: event-content + attributes: + label: Event Content / Components + description: | + Describe all event pieces: mobiles, spawns, items, quest steps, decorations, vendors, rewards, regions, gumps, commands, controllers, scripts, and data files. + placeholder: | + Mobiles/spawns: + Items/rewards: + Quests/objectives: + Vendors/stores: + Decorations/statics: + Commands/controllers: + validations: + required: true + + - type: textarea + id: mechanics-rules + attributes: + label: Mechanics / Rules + description: | + Describe event objectives, scoring, participation, eligibility, entry/exit rules, phasing, cooldowns, reset behavior, death rules, region checks, kill credit, item marking, and completion conditions. + validations: + required: false + + - type: textarea + id: rewards-economy + attributes: + label: Rewards / Loot / Economy + description: | + Describe loot tables, reward pools, token/currency flow, drop rates, reward caps, vendor prices, blessed/insured/tradeable behavior, resource faucets/sinks, gold/hour or item/hour impact, storage impact, and anti-farm or dupe concerns. + validations: + required: false + + - type: textarea + id: pvp-pvm-safety + attributes: + label: PvP / PvM / Safety + description: | + Describe PvP flagging, Felucca risk, guard zones, party/group rules, solo viability, difficulty, spawn density, boss mechanics, counterplay, griefing risks, bot risks, safe-zone abuse, and exploit concerns. + validations: + required: false + + - type: textarea + id: participation-access + attributes: + label: Participation / Access Rules + description: | + Add account limits, character limits, skill/race/faction requirements, quest gates, key/access items, cooldowns, repeatability, event opt-in/out, young-player handling, and shard custom policy. + validations: + required: false + + - type: textarea + id: lifecycle-configuration + attributes: + label: Lifecycle / Configuration + description: | + If known, describe EventScheduler, ScheduledEvent, YearlyScheduledEvent, CallbackScheduledEvent, IRecurrencePattern, TimeZoneInfo, EventSink hooks, Timer use, Configure/Initialize registration, cleanup/Cancel(), restart behavior, save/load, and config flags. + placeholder: | + Scheduler/event type: + Timezone: + Registration: + Cleanup/cancel: + Save/load behavior: + validations: + required: false + + - type: textarea + id: presentation + attributes: + label: Client Presentation + description: | + Add cliloc names, messages, announcement text, gumps, item art, mobile body/hue/title, static decoration, sounds, animations, map markers, web/Discord announcement needs, or localization notes. + validations: + required: false + + - type: textarea + id: monitoring-rollback + attributes: + label: Monitoring / Rollback + description: | + Describe logging, staff commands, metrics to monitor, cleanup scripts, disable switches, rollback plan, cleanup after event end, and what should happen to spawned items/mobiles/rewards when the event ends. + validations: + required: false + + - type: textarea + id: implementation-notes + attributes: + label: Implementation Notes / Repo Anchors + description: | + Add known event classes, scheduler classes, controller items, spawn data, region files, quest files, reward/item/mobile classes, config files, tests, or code anchors if known. + placeholder: | + Event/scheduler class: + Controller/spawn data: + Items/mobiles/rewards: + Regions/quests/gumps: + Tests: + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/item.yml b/.github/ISSUE_TEMPLATE/item.yml new file mode 100644 index 000000000..5f97ab5a8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/item.yml @@ -0,0 +1,222 @@ +name: "🎒 New Item" +description: Create a new ticket for a new Ultima Online item, equipment piece, artifact, reward, resource, or rare +title: "Item: " +labels: ["ultima-online", "triage", "item"] + +body: + - type: input + id: name + attributes: + label: Item Name + description: The in-game item name as it should appear to players. + validations: + required: true + + - type: dropdown + id: item-categories + attributes: + label: Item Categories + multiple: true + options: + - Equipment + - Armor + - Weapons + - Shields + - Jewelry + - Talismans + - Clothing + - Item Sets + - Artifacts + - Veteran Rewards + - Craftables + - Resources + - Plants & Seeds + - Rares / Collectibles + - Containers + - Consumables + - Reagents + - Ammunition + - Tools + - Books / Scrolls + - Deeds + - House Add-ons / Decorations + - Quest Items + - Event Items + - Boats / Ship Items + - Unknown / Other + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe the item, its role, and the intended player-facing behavior. + validations: + required: true + + - type: textarea + id: references + attributes: + label: References + description: | + Add UO.com, UOGuide, Stratics, ServUO/RunUO, screenshots, or other related URLs. + Use one reference per line and note what each source proves when possible. + placeholder: | + https://uo.com/wiki/... — official wording, source, or publish note + https://www.uoguide.com/... — mechanic/history notes + https://github.com/ServUO/ServUO/... — engine precedent + validations: + required: false + + - type: dropdown + id: era + attributes: + label: Initial Era + options: + - Classic (Pre-T2A) + - The Second Age (T2A) + - Renaissance (UOR) + - Third Dawn (TD) + - Lord Blackthorns Revenge (LBR) + - Age of Shadows (AOS) + - Samurai Empire (SE) + - Mondains Legacy (ML) + - Kingdom Reborn (KR) + - Stygian Abyss (SA) + - High Seas (HS) + - Time of Legends (TOL) + - New Legacy (NL) + - Unknown + validations: + required: true + + - type: input + id: publish + attributes: + label: Initial Publish + description: What is the initial publish? + placeholder: unknown + validations: + required: false + + - type: dropdown + id: source-availability + attributes: + label: Source / Availability + multiple: true + options: + - Monster Loot + - Boss / Champion / Peerless Drop + - Treasure Chest / Treasure Map + - Vendor + - Crafting + - Harvesting / Resource Gathering + - Quest Reward + - Event Reward + - Veteran Reward + - Artifact Drop + - Bulk Order Reward + - Plant System / Gardening + - Decoration / Static Placement + - Housing / Add-on + - Player Created + - Staff / GM Only + - Unknown + validations: + required: true + + - type: dropdown + id: player-loops + attributes: + label: Player Loops + multiple: true + options: + - PvM + - PvP / Felucca Risk + - Economy / Trading + - Crafting + - Harvesting + - Housing / Decoration + - Gardening + - Quest / Narrative + - Event / Seasonal + - New Player Progression + - Veteran / Prestige + - Roleplay / Social + - Unknown + validations: + required: true + + - type: textarea + id: item-mechanics + attributes: + label: Item Mechanics + description: | + Describe equip effects, use effects, charges, cooldowns, durability, decay, stackability, ownership, binding, blessed/cursed/newbied behavior, or other mechanics. + validations: + required: false + + - type: textarea + id: equipment-details + attributes: + label: Equipment Details + description: | + If applicable, describe layer/slot, weapon speed/damage, armor rating/resists, required skills/stats/race, durability, repairability, and equip restrictions. + placeholder: | + Layer/slot: + Damage/speed or armor/resists: + Requirements: + Durability/repair: + validations: + required: false + + - type: textarea + id: item-properties + attributes: + label: Item Properties / Set Bonuses + description: | + If applicable, list magical item properties, artifact properties, set pieces, set bonuses, intensity ranges, caps, and whether properties are fixed or generated. + validations: + required: false + + - type: textarea + id: crafting-resources + attributes: + label: Crafting / Resources + description: | + If applicable, describe recipe, craft system, required resources, skill requirements, exceptional behavior, resource output, harvesting rules, or plant/seed growth rules. + validations: + required: false + + - type: textarea + id: loot-rewards-economy + attributes: + label: Loot / Rewards / Economy + description: | + Describe drop source, rarity, tradeability, blessing/insurance impact, faucet/sink effect, vendor value, stack size, storage impact, and expected volume per day. + validations: + required: false + + - type: textarea + id: presentation + attributes: + label: Client Presentation + description: | + Add item ID/art, hue, layer, cliloc name, tooltip lines, sound, animation, container art, gump art, or other client presentation notes. + validations: + required: false + + - type: textarea + id: implementation-notes + attributes: + label: Implementation Notes / Repo Anchors + description: | + Add known classes, files, similar items, loot tables, craft definitions, reward stores, tests, or code anchors if known. + placeholder: | + Similar class: + Loot/craft/reward data: + Tests: + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/ITEM-PROPERTY.yml b/.github/ISSUE_TEMPLATE/item_property.yml similarity index 60% rename from .github/ISSUE_TEMPLATE/ITEM-PROPERTY.yml rename to .github/ISSUE_TEMPLATE/item_property.yml index 3c3a1675d..da80a36d2 100644 --- a/.github/ISSUE_TEMPLATE/ITEM-PROPERTY.yml +++ b/.github/ISSUE_TEMPLATE/item_property.yml @@ -1,13 +1,14 @@ -name: "💡 Feature Request" -description: Create a new ticket for a new feature request -title: "ItemProperty: " +name: "✨ New Item Property" +description: Create a new ticket for a new Ultima Online item property +title: "Item Property: <property name>" labels: ["ultima-online", "triage", "item-property"] body: - type: input id: name attributes: - label: Name + label: Property Name + description: The in-game item property name as it should appear to players. validations: required: true @@ -16,14 +17,27 @@ body: attributes: label: Description description: | - Describe the mechanic of item property. + Describe the item property and its intended mechanic. validations: required: true + - type: textarea + id: references + attributes: + label: References + description: | + Add UO.com, UOGuide, Stratics, ServUO/RunUO, or other related URLs. + Use one reference per line and note what each source proves when possible. + placeholder: | + https://uo.com/wiki/ultima-online-wiki/items/magic-item-properties/ — official wording + https://www.uoguide.com/... — mechanic/history notes + validations: + required: false + - type: textarea id: mechanic-pvm attributes: - label: Game Mechanic (PVM) + label: Game Mechanic (PvM) description: | Specify the mechanic for player versus monsters. validations: @@ -32,7 +46,7 @@ body: - type: textarea id: mechanic-pvp attributes: - label: Game Mechanic (PVP) + label: Game Mechanic (PvP) description: | Specify the additional mechanic for player versus player. @@ -41,7 +55,7 @@ body: attributes: label: Intensity Range description: | - Possible Intensity Range fixed, values or % + Possible intensity range, fixed values, or percentage values. validations: required: true @@ -49,18 +63,21 @@ body: id: imbue-weight attributes: label: Imbue Weight + description: Imbuing weight, "No", "N/A", or unknown. - type: input id: total-cap attributes: label: Total Cap + description: Total cap across equipment, "N/A", or unknown. validations: required: true - - type: checkboxes + - type: dropdown id: found-on attributes: label: Found on + multiple: true options: - Armor - Jewelry @@ -74,12 +91,12 @@ body: - type: dropdown id: type attributes: - label: Found on + label: Property Type multiple: true options: - Persistent - Hit - - Permament + - Permanent - Unknown validations: required: true @@ -96,21 +113,22 @@ body: - Lord Blackthorns Revenge (LBR) - Age of Shadows (AOS) - Samurai Empire (SE) - - Mondains Legacy (ML) + - Mondains Legacy (ML) - Kingdom Reborn (KR) - Stygian Abyss (SA) - High Seas (HS) - Time of Legends (TOL) - New Legacy (NL) - Unknown + - Custom validations: required: true - + - type: input id: publish attributes: label: Initial Publish - description: Whats the initial publish? + description: What is the initial publish? placeholder: unknown validations: - required: false \ No newline at end of file + required: false diff --git a/.github/ISSUE_TEMPLATE/mobile.yml b/.github/ISSUE_TEMPLATE/mobile.yml new file mode 100644 index 000000000..e625b09bf --- /dev/null +++ b/.github/ISSUE_TEMPLATE/mobile.yml @@ -0,0 +1,211 @@ +name: "🐉 New Mobile" +description: Create a new ticket for a new Ultima Online mobile, monster, or NPC +title: "Mobile: <mobile name>" +labels: ["ultima-online", "triage", "mobile"] + +body: + - type: input + id: name + attributes: + label: Mobile Name + description: The in-game creature or NPC name as it should appear to players. + validations: + required: true + + - type: dropdown + id: mobile-type + attributes: + label: Mobile Type + multiple: true + options: + - Monster + - Boss + - Champion Spawn Boss + - Animal + - Tameable Creature + - Town NPC + - Vendor + - Trainer + - Quest Giver + - Escortable NPC + - Decorative / Ambient + - Unknown + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe the mobile, its role, and the intended player-facing behavior. + validations: + required: true + + - type: textarea + id: references + attributes: + label: References + description: | + Add UO.com, UOGuide, Stratics, ServUO/RunUO, screenshots, or other related URLs. + Use one reference per line and note what each source proves when possible. + placeholder: | + https://uo.com/wiki/... — official wording or location + https://www.uoguide.com/... — mechanic/history notes + https://github.com/ServUO/ServUO/... — engine precedent + validations: + required: false + + - type: dropdown + id: era + attributes: + label: Initial Era + options: + - Classic (Pre-T2A) + - The Second Age (T2A) + - Renaissance (UOR) + - Third Dawn (TD) + - Lord Blackthorns Revenge (LBR) + - Age of Shadows (AOS) + - Samurai Empire (SE) + - Mondains Legacy (ML) + - Kingdom Reborn (KR) + - Stygian Abyss (SA) + - High Seas (HS) + - Time of Legends (TOL) + - New Legacy (NL) + - Unknown + validations: + required: true + + - type: input + id: publish + attributes: + label: Initial Publish + description: What is the initial publish? + placeholder: unknown + validations: + required: false + + - type: dropdown + id: facets + attributes: + label: Facets / Maps + multiple: true + options: + - Felucca + - Trammel + - Ilshenar + - Malas + - Tokuno + - Ter Mur + - Eodon + - Internal / Custom + - Unknown + validations: + required: true + + - type: textarea + id: spawn-locations + attributes: + label: Spawn Locations + description: | + List known spawn areas, dungeons, towns, regions, events, or quest locations. + placeholder: | + Dungeon/region: + Coordinates: + Spawn conditions: + validations: + required: false + + - type: dropdown + id: player-loops + attributes: + label: Player Loops + multiple: true + options: + - PvM + - PvP / Felucca Risk + - Quest / Narrative + - Economy / Vendor + - Taming + - Champion / Boss Encounter + - Event / Seasonal + - Town / Social + - Unknown + validations: + required: true + + - type: textarea + id: stats-skills + attributes: + label: Stats and Skills + description: | + Add expected STR/DEX/INT, hits/stam/mana, damage, resists, skills, fame, karma, virtual armor, or other stat data. + placeholder: | + STR/DEX/INT: + Hits/Stam/Mana: + Damage: + Resists: + Skills: + Fame/Karma: + validations: + required: false + + - type: textarea + id: ai-behavior + attributes: + label: AI / Behavior / Mechanics + description: | + Describe AI type, combat behavior, special abilities, speech, movement, faction/notoriety, PvM/PvP differences, cooldowns, and counterplay. + validations: + required: false + + - type: textarea + id: loot-rewards + attributes: + label: Loot / Rewards / Economy + description: | + Describe loot packs, gold, artifacts, quest rewards, vendor inventory, resource output, or why the mobile should have no rewards. + validations: + required: false + + - type: textarea + id: taming-control + attributes: + label: Taming / Control + description: | + If applicable, describe taming skill, control slots, bonding, pack instinct, favorite food, pet abilities, and training rules. + validations: + required: false + + - type: textarea + id: npc-services-dialogue + attributes: + label: NPC Services / Dialogue + description: | + If applicable, describe vendor services, trainer skills, quest dialogue, context menu entries, titles, greetings, or keywords. + validations: + required: false + + - type: textarea + id: presentation + attributes: + label: Client Presentation + description: | + Add body ID, hue, sound, animation, paperdoll/equipment, cliloc names, title, or other client presentation notes. + validations: + required: false + + - type: textarea + id: implementation-notes + attributes: + label: Implementation Notes / Repo Anchors + description: | + Add known classes, files, similar mobiles, spawn data, tests, or code anchors if known. + placeholder: | + Similar class: + Spawn data: + Tests: + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/quest.yml b/.github/ISSUE_TEMPLATE/quest.yml new file mode 100644 index 000000000..ee61091fc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/quest.yml @@ -0,0 +1,284 @@ +name: "📜 New Quest" +description: Create a new ticket for a new or changed Ultima Online quest, quest chain, objective, quest giver, reward, or access unlock +title: "Quest: <quest name>" +labels: ["ultima-online", "triage", "quest"] + +body: + - type: input + id: name + attributes: + label: Quest Name + description: The quest, quest chain, quest giver, access unlock, or objective name. + validations: + required: true + + - type: dropdown + id: request-type + attributes: + label: Request Type + multiple: true + options: + - New Quest + - Existing Quest Change + - Quest Chain + - Quest Objective + - Quest Giver / NPC + - Quest Reward + - Access Unlock / Context Flag + - Skill Training / New Haven + - Peerless / Dungeon Access + - Delivery / Collection Flow + - Escort Quest + - Quest Gump / UI + - Quest Config / Registration + - Parity / Migration Info + - Custom / Unknown + validations: + required: true + + - type: dropdown + id: quest-system + attributes: + label: Quest System / Area + multiple: true + options: + - ML Quest System + - Classic Quest / Escort + - New Haven + - Heartwood + - Sanctuary + - Bedlam + - Blighted Grove + - The Citadel + - Twisted Weald + - Prism of Light + - Painted Caves + - Labyrinth + - Palace of Paroxysmus + - Tokuno + - Spellweaving + - Paladin / Chivalry + - Necromancer / Necromancy + - Peerless Access + - Event / Seasonal + - Custom / Unknown + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe the quest, quest chain, access unlock, or quest system behavior and the intended player-facing result. + validations: + required: true + + - type: textarea + id: references + attributes: + label: References + description: | + Add UO.com, UOGuide, Stratics, ServUO/RunUO, screenshots, gump captures, quest text, videos, or other related URLs. + Use one reference per line and note what each source proves when possible. + placeholder: | + https://uo.com/wiki/... — official quest, location, reward, or publish note + https://www.uoguide.com/... — objective, quest chain, NPC, reward, or history notes + https://github.com/ServUO/ServUO/... — engine or quest definition precedent + validations: + required: false + + - type: dropdown + id: era + attributes: + label: Initial Era + options: + - Classic (Pre-T2A) + - The Second Age (T2A) + - Renaissance (UOR) + - Third Dawn (TD) + - Lord Blackthorns Revenge (LBR) + - Age of Shadows (AOS) + - Samurai Empire (SE) + - Mondains Legacy (ML) + - Kingdom Reborn (KR) + - Stygian Abyss (SA) + - High Seas (HS) + - Time of Legends (TOL) + - New Legacy (NL) + - Unknown + validations: + required: true + + - type: input + id: publish + attributes: + label: Initial Publish + description: What is the initial publish? + placeholder: unknown + validations: + required: false + + - type: dropdown + id: facets + attributes: + label: Facets / Maps + multiple: true + options: + - Felucca + - Trammel + - Ilshenar + - Malas + - Tokuno + - Ter Mur + - Eodon + - Internal / Custom + - Unknown + validations: + required: true + + - type: textarea + id: quest-givers-locations + attributes: + label: Quest Givers / Locations + description: | + List quest giver NPCs, destination NPCs, regions, dungeons, towns, facets, coordinates, entrances, and where the quest should be offered or completed. + placeholder: | + Quest giver NPC/type: + Destination NPC/type: + Region/dungeon/town: + Coordinates: + Spawn/source: + validations: + required: true + + - type: dropdown + id: player-loops + attributes: + label: Player Loops + multiple: true + options: + - Quest / Narrative + - PvM + - PvP / Felucca Risk + - New Player Progression + - Skill Training + - Dungeon / Access Unlock + - Peerless / Boss Encounter + - Crafting / Resources + - Economy / Rewards + - Travel / Exploration + - Taming / Pets + - Event / Seasonal + - Roleplay / Social + - Veteran / Prestige + - Unknown + validations: + required: true + + - type: textarea + id: objectives-steps + attributes: + label: Objectives / Steps + description: | + Describe each objective and step: kill, deliver, obtain, collect, escort, gain skill, use item, speak to NPC, return/report back, or complete a chain stage. + placeholder: | + 1. Accept from: + 2. Objective(s): + 3. Report back / turn-in: + 4. Next chain quest: + validations: + required: true + + - type: textarea + id: rewards-access + attributes: + label: Rewards / Access Unlocks + description: | + Describe rewards, item choices, gold, skill acceleration, titles, quest items, context flags, access unlocks, Spellweaving/SummonFey/SummonFiend/BedlamAccess-style flags, or no-reward behavior. + validations: + required: false + + - type: textarea + id: prerequisites-repeatability + attributes: + label: Prerequisites / Repeatability / Chain Rules + description: | + Add quest prerequisites, race/faction/skill requirements, account limits, one-time/repeatable rules, cooldowns, ChainID, OneTime, MaxConcurrent, activation rules, and chain order. + validations: + required: false + + - type: textarea + id: dialogue-gumps + attributes: + label: Dialogue / Gumps / Quest Log + description: | + Add offer text, refuse text, progress text, completion/report-back text, clilocs, QuestOfferGump, QuestConversationGump, QuestRewardGump, QuestLogGump, or detailed-log notes. + validations: + required: false + + - type: textarea + id: mechanics-rules + attributes: + label: Mechanics / Rules / Edge Cases + description: | + Describe accept/decline/cancel behavior, report-back rules, quest item marking, delivery item refunds, failure/resign behavior, objective tracking, region checks, kill credit, escort pathing, and save/load behavior. + validations: + required: false + + - type: textarea + id: items-mobiles-spawns + attributes: + label: Items / Mobiles / Spawns + description: | + List related quest items, reward items, required mobs, quest givers, destination NPCs, spawns, bosses, escortables, drop sources, and whether new item/mobile/spawn templates are also needed. + validations: + required: false + + - type: textarea + id: economy-balance + attributes: + label: Economy / Balance Impact + description: | + Describe reward value, gold/item faucet impact, repeat farming risk, tradeability, blessing/insurance behavior, resource sinks, storage impact, and anti-farm or dupe concerns. + validations: + required: false + + - type: textarea + id: config-data + attributes: + label: Quest Config / Data + description: | + If known, describe MLQuestSystem registration, MLQuests.cfg row, quester= override, MLQuestContext flags, MLQuestObjective types, activation, chain data, or migration source. + placeholder: | + Quest type: + MLQuests.cfg row: + quester=: + Objective types: + Context flags: + validations: + required: false + + - type: textarea + id: presentation + attributes: + label: Client Presentation + description: | + Add cliloc names, quest log text, gump layout, item art, NPC body/hue/title, tooltip lines, sound, animation, map markers, or localization notes. + validations: + required: false + + - type: textarea + id: implementation-notes + attributes: + label: Implementation Notes / Repo Anchors + description: | + Add known MLQuest classes, quest definition files, quester classes, objective classes, reward classes, MLQuests.cfg entries, tests, or code anchors if known. + placeholder: | + Quest definition: + Quest giver/mobile: + Item/reward classes: + Config row: + Tests: + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/skill.yml b/.github/ISSUE_TEMPLATE/skill.yml new file mode 100644 index 000000000..d123b0343 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/skill.yml @@ -0,0 +1,280 @@ +name: "📈 New Skill" +description: Create a new ticket for a new or changed Ultima Online skill, skill mechanic, stat interaction, or training flow +title: "Skill: <skill name>" +labels: ["ultima-online", "triage", "skill"] + +body: + - type: input + id: name + attributes: + label: Skill Name + description: The in-game skill name as it should appear to players. + validations: + required: true + + - type: dropdown + id: request-type + attributes: + label: Request Type + multiple: true + options: + - New Skill + - Existing Skill Change + - Skill Gain / Training + - Skill Cap / Power Scroll + - Stat Gain / Stat Cap + - Race Interaction + - Skill Mastery + - Tool / Item Interaction + - Vendor / Trainer + - Quest / Objective + - Client UI / Gump + - Custom / Unknown + validations: + required: true + + - type: dropdown + id: skill-category + attributes: + label: Skill Category + multiple: true + options: + - Combat + - Healing / Veterinary + - Magical + - Bardic + - Rogue / Thieving / Stealth + - Creatures / Sensing + - Crafting + - Resource Gathering + - Trade / Economy + - Stat / Race System + - Removed / Legacy + - Custom / Unknown + validations: + required: true + + - type: dropdown + id: affected-skills + attributes: + label: Affected Skill(s) + multiple: true + options: + - Alchemy + - Anatomy + - Animal Lore + - Animal Taming + - Archery + - Arms Lore + - Begging + - Blacksmithy + - Bowcraft / Fletching + - Bushido + - Camping + - Carpentry + - Cartography + - Chivalry + - Cooking + - Detecting Hidden + - Discordance + - Evaluating Intelligence + - Fencing + - Fishing + - Focus + - Forensic Evaluation + - Healing + - Herding + - Hiding + - Imbuing + - Inscription + - Item Identification + - Lockpicking + - Lumberjacking + - Mace Fighting + - Magery + - Meditation + - Mining + - Musicianship + - Mysticism + - Necromancy + - Ninjitsu + - Parrying + - Peacemaking + - Poisoning + - Provocation + - Remove Trap + - Resisting Spells + - Snooping + - Spellweaving + - Spirit Speak + - Stealing + - Stealth + - Swordsmanship + - Tactics + - Tailoring + - Taste Identification + - Throwing + - Tinkering + - Tracking + - Veterinary + - Wrestling + - Enticement (Removed / Legacy) + - New / Custom Skill + - Unknown + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe the skill, skill change, training flow, or stat/race interaction and the intended player-facing behavior. + validations: + required: true + + - type: textarea + id: references + attributes: + label: References + description: | + Add UO.com, UOGuide, Stratics, ServUO/RunUO, screenshots, videos, or other related URLs. + Use one reference per line and note what each source proves when possible. + placeholder: | + https://uo.com/wiki/... — official wording, source, or publish note + https://www.uoguide.com/Skills — skill category, mechanics, formulas, or history + https://github.com/ServUO/ServUO/... — engine precedent + validations: + required: false + + - type: dropdown + id: era + attributes: + label: Initial Era + options: + - Classic (Pre-T2A) + - The Second Age (T2A) + - Renaissance (UOR) + - Third Dawn (TD) + - Lord Blackthorns Revenge (LBR) + - Age of Shadows (AOS) + - Samurai Empire (SE) + - Mondains Legacy (ML) + - Kingdom Reborn (KR) + - Stygian Abyss (SA) + - High Seas (HS) + - Time of Legends (TOL) + - New Legacy (NL) + - Unknown + validations: + required: true + + - type: input + id: publish + attributes: + label: Initial Publish + description: What is the initial publish? + placeholder: unknown + validations: + required: false + + - type: dropdown + id: player-loops + attributes: + label: Player Loops + multiple: true + options: + - PvM + - PvP / Felucca Risk + - Crafting + - Harvesting + - Economy / Trading + - Housing / Storage + - Taming / Pets + - Bard Support + - Thieving / Stealth + - Travel / Exploration + - Quest / Narrative + - New Player Progression + - Veteran / Prestige + - Monster / NPC AI + - Unknown + validations: + required: true + + - type: textarea + id: skill-mechanics + attributes: + label: Skill Mechanics + description: | + Describe active use, passive effects, success/failure results, cooldowns, targeting, tools/items required, region/facet limits, and any PvM/PvP differences. + validations: + required: false + + - type: textarea + id: gain-training + attributes: + label: Skill Gain / Training + description: | + Describe gain chance, difficulty bands, anti-macro rules, accelerated gain, New Haven-style objectives, trainer behavior, skill locks, and training limits. + validations: + required: false + + - type: textarea + id: stats-caps + attributes: + label: Stats / Caps / Progression + description: | + Describe primary/secondary stat associations, stat gain, skill cap, Power Scrolls, Scrolls of Alacrity/Transcendence, total skill cap, or race-specific progression. + validations: + required: false + + - type: textarea + id: formulas-values + attributes: + label: Formulas / Values / Test Cases + description: | + Add success formulas, skill ranges, stat values, cap values, timings, chance values, expected test values, and edge cases. + validations: + required: false + + - type: textarea + id: items-tools-resources + attributes: + label: Items / Tools / Resources + description: | + If applicable, describe required tools, resources consumed or produced, skill scrolls, training items, crafting recipes, BODs, vendors, or loot/reward items. + validations: + required: false + + - type: textarea + id: restrictions + attributes: + label: Restrictions / Era / Region Rules + description: | + Add expansion gates, race requirements, facet/map restrictions, town/guard/housing rules, criminal/notoriety effects, mount restrictions, and exploit/bot concerns. + validations: + required: false + + - type: textarea + id: presentation + attributes: + label: Client Presentation + description: | + Add skill list category, skill title/cliloc, gump UI, context menu, messages, animations, sounds, buff icons, or tooltip notes. + validations: + required: false + + - type: textarea + id: implementation-notes + attributes: + label: Implementation Notes / Repo Anchors + description: | + Add known classes, files, similar skills, skill IDs, skills.json data, tests, or code anchors if known. + placeholder: | + Similar skill: + Skill ID / category: + Data/config: + Tests: + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/spawn.yml b/.github/ISSUE_TEMPLATE/spawn.yml new file mode 100644 index 000000000..e35426df0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/spawn.yml @@ -0,0 +1,225 @@ +name: "🧭 New Spawn" +description: Create a new ticket for a new or changed Ultima Online spawn, spawn package, encounter placement, or world population rule +title: "Spawn: <spawn name or location>" +labels: ["ultima-online", "triage", "spawn"] + +body: + - type: input + id: name + attributes: + label: Spawn Name / Location + description: The player-facing spawn name, dungeon/region name, or location summary. + validations: + required: true + + - type: dropdown + id: spawn-type + attributes: + label: Spawn Type + multiple: true + options: + - Static Spawn Package + - Generic Spawner + - Mobile / Creature Spawn + - NPC / Vendor / Trainer Spawn + - Town / Guard / Civilian Spawn + - Dungeon Spawn + - Champion Spawn + - Boss / Peerless Encounter + - Quest Spawn + - Event / Seasonal Spawn + - Escort / Escortable NPC Spawn + - Resource / Harvest Spawn + - Treasure / Chest Spawn + - Ambient / Decorative Spawn + - Migration / Parity Spawn + - Custom / Unknown + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe the spawn, what should appear, why it belongs there, and the intended player-facing behavior. + validations: + required: true + + - type: textarea + id: references + attributes: + label: References + description: | + Add UO.com, UOGuide, Stratics, ServUO/RunUO, screenshots, map captures, spawn dumps, videos, or other related URLs. + Use one reference per line and note what each source proves when possible. + placeholder: | + https://uo.com/wiki/... — official location, dungeon, event, or publish note + https://www.uoguide.com/... — spawn area, creature list, mechanics, or history + https://github.com/ServUO/ServUO/... — engine or spawn-pack precedent + validations: + required: false + + - type: dropdown + id: era + attributes: + label: Initial Era + options: + - Classic (Pre-T2A) + - The Second Age (T2A) + - Renaissance (UOR) + - Third Dawn (TD) + - Lord Blackthorns Revenge (LBR) + - Age of Shadows (AOS) + - Samurai Empire (SE) + - Mondains Legacy (ML) + - Kingdom Reborn (KR) + - Stygian Abyss (SA) + - High Seas (HS) + - Time of Legends (TOL) + - New Legacy (NL) + - Unknown + validations: + required: true + + - type: input + id: publish + attributes: + label: Initial Publish + description: What is the initial publish? + placeholder: unknown + validations: + required: false + + - type: dropdown + id: facets + attributes: + label: Facets / Maps + multiple: true + options: + - Felucca + - Trammel + - Ilshenar + - Malas + - Tokuno + - Ter Mur + - Eodon + - Internal / Custom + - Unknown + validations: + required: true + + - type: textarea + id: region-location + attributes: + label: Region / Location / Coordinates + description: | + List the dungeon, town, region, facet, coordinates, bounds, Z range, entrance/exit points, and any nearby landmarks. + placeholder: | + Map/facet: + Region/dungeon/town: + Coordinates or bounds: + Z range: + Landmark/entrance: + validations: + required: true + + - type: textarea + id: spawn-entries + attributes: + label: Spawn Entries + description: | + List each mobile, item, controller, chest, resource, or encounter entry with expected count, probability, home range, and grouping rules. + placeholder: | + - Type: Skeleton; count: 5; homeRange: 12; probability: 1.0 + - Type: Zombie; count: 3; homeRange: 12; probability: 0.6 + validations: + required: true + + - type: textarea + id: spawn-timing-density + attributes: + label: Timing / Density / Range + description: | + Describe min/max delay, respawn timing, spawn count, home range, walking range, leash behavior, despawn rules, active hours, and population density. + validations: + required: false + + - type: dropdown + id: player-loops + attributes: + label: Player Loops + multiple: true + options: + - PvM + - PvP / Felucca Risk + - Champion / Boss Encounter + - Quest / Narrative + - Event / Seasonal + - Taming / Pets + - Economy / Farming + - Crafting / Resources + - Treasure Hunting + - Travel / Exploration + - Town / Social + - New Player Progression + - Veteran / Prestige + - Staff / Operations + - Unknown + validations: + required: true + + - type: textarea + id: mechanics-rules + attributes: + label: Mechanics / Region Rules + description: | + Describe aggro radius, AI behavior, spawn triggers, quest gates, region hooks, travel restrictions, notoriety/criminal rules, guard rules, pathing, and PvM/PvP differences. + validations: + required: false + + - type: textarea + id: rewards-economy + attributes: + label: Rewards / Loot / Economy + description: | + Describe loot, gold/hour expectations, resource output, artifacts, Power Scrolls, quest rewards, vendor inventory, faucet/sink impact, and anti-farm concerns. + validations: + required: false + + - type: textarea + id: safety-exploit-risk + attributes: + label: Safety / Exploit / Bot Risk + description: | + Note safe spots, stuck-pathing, line-of-sight abuse, house/teleport blocking, bot farming risk, lure risk, AFK farming risk, and rollback/monitoring needs. + validations: + required: false + + - type: textarea + id: data-format + attributes: + label: Data Format / Era Profile + description: | + If known, describe the expected spawn package folder, JSON shape, era profile, spawner type, migration source, import command, or generation rule. + placeholder: | + Distribution/Data/Spawns/<era>/<facet>/... + type: GenericSpawner + era profile: + migration source: + validations: + required: false + + - type: textarea + id: implementation-notes + attributes: + label: Implementation Notes / Repo Anchors + description: | + Add known classes, data files, similar spawn packages, regions, mobiles, tests, or code anchors if known. + placeholder: | + Similar spawn package: + Region file: + Mobile classes: + Tests: + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/spell.yml b/.github/ISSUE_TEMPLATE/spell.yml new file mode 100644 index 000000000..acba06db8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/spell.yml @@ -0,0 +1,244 @@ +name: "✨ New Spell" +description: Create a new ticket for a new Ultima Online spell, spell school entry, mastery, or magical ability +title: "Spell: <spell name>" +labels: ["ultima-online", "triage", "spell"] + +body: + - type: input + id: name + attributes: + label: Spell Name + description: The in-game spell name as it should appear to players. + validations: + required: true + + - type: dropdown + id: spell-school + attributes: + label: Spell School / Source + multiple: true + options: + - Magery + - Necromancy + - Chivalry + - Bushido + - Ninjitsu + - Spellweaving + - Mysticism + - Spell Mastery + - Bard Mastery + - Racial Ability + - Monster / NPC Spell + - Quest / Event Spell + - Custom / Unknown + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe the spell, its role, and the intended player-facing behavior. + validations: + required: true + + - type: textarea + id: references + attributes: + label: References + description: | + Add UO.com, UOGuide, Stratics, ServUO/RunUO, screenshots, videos, or other related URLs. + Use one reference per line and note what each source proves when possible. + placeholder: | + https://uo.com/wiki/... — official wording, source, or publish note + https://www.uoguide.com/... — mechanics, reagents, formulas, or history + https://github.com/ServUO/ServUO/... — engine precedent + validations: + required: false + + - type: dropdown + id: era + attributes: + label: Initial Era + options: + - Classic (Pre-T2A) + - The Second Age (T2A) + - Renaissance (UOR) + - Third Dawn (TD) + - Lord Blackthorns Revenge (LBR) + - Age of Shadows (AOS) + - Samurai Empire (SE) + - Mondains Legacy (ML) + - Kingdom Reborn (KR) + - Stygian Abyss (SA) + - High Seas (HS) + - Time of Legends (TOL) + - New Legacy (NL) + - Unknown + validations: + required: true + + - type: input + id: publish + attributes: + label: Initial Publish + description: What is the initial publish? + placeholder: unknown + validations: + required: false + + - type: dropdown + id: spell-type + attributes: + label: Spell Type + multiple: true + options: + - Direct Damage + - Damage over Time + - Healing + - Cure / Cleanse + - Buff + - Debuff + - Summon + - Transformation + - Field / Ground Effect + - Area of Effect + - Travel / Teleport + - Utility + - Reveal / Detection + - Resource / Reagent Interaction + - Pet / Summon Interaction + - Quest / Event Mechanic + - Unknown + validations: + required: true + + - type: dropdown + id: target-type + attributes: + label: Target Type + multiple: true + options: + - Self + - Ally + - Enemy Mobile + - Any Mobile + - Pet / Controlled Creature + - Summon + - Corpse + - Item + - Ground / Location + - Area / Radius + - Field Line + - Region + - No Target + - Unknown + validations: + required: true + + - type: dropdown + id: player-loops + attributes: + label: Player Loops + multiple: true + options: + - PvM + - PvP / Felucca Risk + - PvP Group Combat + - Travel / Exploration + - Taming / Pets + - Summons / Followers + - Crafting / Inscription + - Economy / Reagents / Scrolls + - Quest / Narrative + - Event / Seasonal + - New Player Progression + - Veteran / Prestige + - Monster / NPC AI + - Unknown + validations: + required: true + + - type: textarea + id: casting-requirements + attributes: + label: Casting Requirements / Costs + description: | + Add skill requirement, mana cost, reagents, tithing, focus, karma, spellbook/scroll requirements, cooldowns, cast time, recovery time, and interruption rules. + placeholder: | + Skill requirement: + Mana/tithing/focus cost: + Reagents: + Cast time / recovery: + Interrupt/fizzle rules: + validations: + required: false + + - type: textarea + id: mechanics-pvm + attributes: + label: Game Mechanic (PvM) + description: | + Specify the spell behavior for player versus monsters, summons, pets, bosses, or NPC AI. + validations: + required: false + + - type: textarea + id: mechanics-pvp + attributes: + label: Game Mechanic (PvP) + description: | + Specify player-versus-player behavior, counters, immunity, reflect/resist interaction, field rules, escape options, and group-combat risks. + validations: + required: false + + - type: textarea + id: formula-values + attributes: + label: Formulas / Values / Duration + description: | + Add damage, healing, resist checks, skill scaling, stat scaling, radius, range, duration, cooldown, chance formulas, caps, and expected test values. + validations: + required: false + + - type: textarea + id: restrictions + attributes: + label: Restrictions / Region Rules + description: | + Add mount restrictions, armor/weapon restrictions, housing/town/dungeon/facet limits, travel blocks, criminal/notoriety effects, safe-zone rules, and era gates. + validations: + required: false + + - type: textarea + id: spellbook-scrolls-reagents + attributes: + label: Spellbook / Scrolls / Reagents + description: | + If applicable, describe spellbook entry, scroll item, inscription recipe, reagent consumption, focus item, icon position, or learn/unlock flow. + validations: + required: false + + - type: textarea + id: presentation + attributes: + label: Client Presentation + description: | + Add cliloc name, spell icon, buff icon, particle effects, sounds, animations, overhead messages, gump entries, or tooltip notes. + validations: + required: false + + - type: textarea + id: implementation-notes + attributes: + label: Implementation Notes / Repo Anchors + description: | + Add known classes, files, similar spells, spell IDs, registration gates, spellbook data, tests, or code anchors if known. + placeholder: | + Similar spell: + Spell ID / school slot: + Registration gate: + Tests: + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/system.yml b/.github/ISSUE_TEMPLATE/system.yml new file mode 100644 index 000000000..6d3ee3a3b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/system.yml @@ -0,0 +1,295 @@ +name: "⚙️ Engine / System" +description: Create a new ticket for a new or changed Ultima Online engine, subsystem, controller, service, configuration, or cross-content system +title: "System: <engine or system name>" +labels: ["ultima-online", "triage", "system"] + +body: + - type: input + id: name + attributes: + label: Engine / System Name + description: The engine, subsystem, controller, service, configuration area, or cross-content system name. + validations: + required: true + + - type: dropdown + id: request-type + attributes: + label: Request Type + multiple: true + options: + - New Engine / System + - Existing System Change + - Bug / Regression + - Parity / Migration Info + - Configuration Setting + - Data File / Import / Export + - Persistence / Serialization + - Startup / Shutdown / Lifecycle + - Event Hook / EventSink + - Timer / Scheduler / Controller + - Command / Targeting / Staff Tool + - Gump / UI / Client Presentation + - Performance / Hot Path + - Security / Exploit / Staff Safety + - Tests / Tooling + - Documentation / Operator Runbook + - Custom / Unknown + validations: + required: true + + - type: dropdown + id: system-area + attributes: + label: System Area + multiple: true + options: + - Core Server + - UOContent Engine + - RUOContent Custom System + - Configuration / JsonConfig + - Startup / Lifecycle + - World Save / Load + - Accounts / Access + - Networking / Packets + - Commands / Targeting + - Gumps / UI + - EventSink / Generated Events + - Timers / EventScheduler + - Serialization / Persistence + - Regions / Maps / Facets + - Spawns / Encounters + - Loot / Rewards + - Quests / Narrative + - Crafting / Economy + - Housing / Multis + - Vendors / Services + - Skills / Stats / Races + - Combat / Magic + - Items / Mobiles + - Monitoring / Logging + - Tests / Tooling + - Unknown / Other + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe the engine/system behavior, problem, requested change, and the intended player-facing or operator-facing result. + validations: + required: true + + - type: textarea + id: references + attributes: + label: References + description: | + Add UO.com, UOGuide, Stratics, ServUO/RunUO, ModernUO docs/code, screenshots, logs, traces, crash reports, or other related URLs. + Use one reference per line and note what each source proves when possible. + placeholder: | + https://uo.com/wiki/... — official mechanics, publish, or ruleset note + https://www.uoguide.com/... — mechanics/history context + https://github.com/ServUO/ServUO/... — engine/system precedent + Log/trace/crash ID — observed behavior or failure mode + validations: + required: false + + - type: dropdown + id: era + attributes: + label: Initial Era / Ruleset + options: + - Classic (Pre-T2A) + - The Second Age (T2A) + - Renaissance (UOR) + - Third Dawn (TD) + - Lord Blackthorns Revenge (LBR) + - Age of Shadows (AOS) + - Samurai Empire (SE) + - Mondains Legacy (ML) + - Kingdom Reborn (KR) + - Stygian Abyss (SA) + - High Seas (HS) + - Time of Legends (TOL) + - New Legacy (NL) + - RebirthUO Custom + - Era-Independent / Infrastructure + - Unknown + validations: + required: true + + - type: input + id: publish + attributes: + label: Initial Publish + description: What is the initial publish, release, or custom shard milestone? + placeholder: unknown + validations: + required: false + + - type: dropdown + id: implementation-layer + attributes: + label: Implementation Layer + multiple: true + options: + - Projects/Server Core Engine + - Projects/UOContent Base Content + - Projects/RUOContent Shard Custom Layer + - Distribution/Data + - Distribution/Configuration + - Tests + - Tooling / Scripts + - Documentation + - Unknown / Needs Discovery + validations: + required: true + + - type: dropdown + id: affected-loops + attributes: + label: Affected Gameplay / Operator Loops + multiple: true + options: + - PvM + - PvP / Felucca Risk + - Economy / Rewards + - Crafting / Resources + - Housing / Storage + - Skills / Stats / Progression + - Magic / Combat + - Quests / Events + - Spawns / Encounters + - Travel / Facets / Regions + - Vendors / Services + - New Player Progression + - Veteran / Prestige + - Client Presentation + - Staff Operations + - Server Stability + - Save / Restore / Deployment + - Unknown + validations: + required: true + + - type: textarea + id: current-expected-behavior + attributes: + label: Current / Expected Behavior + description: | + Describe current behavior, desired behavior, repro steps if this is a bug, and what should stay unchanged. + placeholder: | + Current: + Expected: + Repro / trigger: + Should not change: + validations: + required: true + + - type: textarea + id: configuration-gates + attributes: + label: Configuration / Gates + description: | + Add config keys, default values, Core.* era gates, feature flags, ServerConfiguration/GetSetting/GetOrUpdateSetting use, modernuo.json settings, JsonConfig files, shard overrides, and operator-facing toggles. + validations: + required: false + + - type: textarea + id: lifecycle-ownership + attributes: + label: Lifecycle / Ownership + description: | + Describe ConfigurePrompts, Configure, Initialize, CallPriority ordering, EventSink subscriptions, generated events, startup/shutdown, cleanup, ownership of static state, and whether the system can be disabled or reloaded. + validations: + required: false + + - type: textarea + id: data-persistence + attributes: + label: Data / Persistence / Save Compatibility + description: | + Describe serialized fields, versioning, world save/load impact, migration needs, JSON/cfg data, source-generated serialization, backward compatibility, rollback behavior, and cleanup of saved entities or controllers. + validations: + required: false + + - type: textarea + id: events-timers-threading + attributes: + label: Events / Timers / Threading + description: | + Describe EventSink hooks, generated events, Timer use, EventScheduler scheduling, async/threading expectations, single-threaded game-loop assumptions, cancellation, disposal, and hot-path constraints. + validations: + required: false + + - type: textarea + id: admin-ui-tools + attributes: + label: Commands / Gumps / Admin Tools + description: | + Add staff commands, targeting flows, gumps, diagnostics, logging, audit trails, permissions/access levels, operator workflows, and any public/private communication boundaries. + validations: + required: false + + - type: textarea + id: content-integration + attributes: + label: Content Integration + description: | + List related items, mobiles, regions, spawns, quests, loot tables, crafting definitions, housing/multi definitions, packets, gumps, clilocs, and data files that interact with this engine/system. + validations: + required: false + + - type: textarea + id: performance-risk + attributes: + label: Performance / Scale Risk + description: | + Describe expected call frequency, hot paths, allocations, timers, dictionary/list sizes, world scans, save-time work, startup cost, network traffic, and stress cases. + validations: + required: false + + - type: textarea + id: security-fairness-risk + attributes: + label: Security / Fairness / Exploit Risk + description: | + Describe exploit or dupe risk at a safe public level, staff advantage risk, permission boundaries, player-facing fairness, griefing/bot risk, economy abuse, and sensitive details that should stay out of public issue text. + validations: + required: false + + - type: textarea + id: side-effects + attributes: + label: Side Effects / Balance Impact + description: | + Describe era/ruleset impact, PvP counterplay, PvM risk/reward, gold or item faucets/sinks, housing/storage impact, client compatibility, shard policy choices, and expected monitoring signals. + validations: + required: false + + - type: textarea + id: testing-monitoring-rollback + attributes: + label: Testing / Monitoring / Rollback + description: | + Add focused tests, broad suites, manual verification, logs/metrics to monitor, backup/restore needs, rollback plan, feature disable plan, and post-publish checks. + validations: + required: false + + - type: textarea + id: implementation-notes + attributes: + label: Implementation Notes / Repo Anchors + description: | + Add known classes, methods, data files, config files, tests, docs, or code anchors if known. Note whether Projects/Server core changes are required or whether UOContent/RUOContent can contain the work. + placeholder: | + Classes/methods: + Data/config files: + Tests: + Docs/runbook: + Core boundary: + validations: + required: false