A text-based, persistent browser-based strategy game (PBBG) in a fantasy war setting

Overview

OpenDominion

Tests Status StyleCI Coverage Status
GNU AGPLv3 licensed Support on Ko-Fi Chat on Discord

Note: OpenDominion is still in development. Some features of the game have not been implemented yet.

Introduction

OpenDominion is a free and open-source clone of Dominion, an online text-based and persistent browser-based (PBBG) fantasy war game. OpenDominion is written in PHP on the Laravel framework.

The original Dominion, now defunct, was a game from Kamikaze Games which ran from about 2000 to 2012 until stopping indefinitely.

Original intro text: [1]

You have reached the online game Dominion. What is Dominion? It's a TOTALLY FREE online fantasy war game. You take control of a plot of land in a realm consisting of a group of other players. With your dominion and allied players, you combat the forces of good or evil using military, magic, or espionage. The goal? To finish at the top of the heap. To make your dominion and your realm the most powerful in the land, and to crush your enemies.

Progress

Although in development, OpenDominion is already playable. See the links section below.

Status bars displayed here show the current state of a system or page. Pretty much everything that has some status is already present in one way or another.

Systems

System Status To do
Authentication Progress 2FA
Buildings Progress
Land Progress
Heroes Progress Everything
Notifications Progress Needs refactoring and email digests
Population Progress
Races & Units Progress
Resources Progress
Wonders Progress
Tech Progress

Pages

This indicates which pages are functional. Some pages will be restyled or revisited upon building different functionality later.

Page Status To do
Status Progress
Advisors Progress
Daily Bonuses Progress
Exploration Progress
Construction Progress
Destroy Buildings Progress
Land Rezoning Progress
Castle Improvements Progress
National Bank Progress
Military Training Progress
Release Troops Progress
Invading Progress
Magic Progress
Espionage Progress
Messages Progress Everything
Realm Council Progress Needs refactoring, editing posts, and moderation
Op Center Progress
Government Progress
Diplomacy Progress
Realm Page Progress
Rankings Progress
Town Crier Progress Black ops reports
Valhalla Progress More categories
Scribes / Manual Progress Additional pages

Contributing

Please see CONTRIBUTING.md for details.

Links

  • Play
    • The game is no longer in beta. Feel free to register and participate!
    • To help you get started playing OpenDominion, consult the original Dominion's scribes and the old wiki's newbie guide for general gameplay information.
    • Do note that not every functionality has been implemented yet in OpenDominion.
  • Test
    • The test server is publicly available for in-game simming and often used for small scale feature betas.
  • Discord
    • This will be the main place for out of game communication, development talk and game announcements.
  • Donate
    • OpenDominion is powered by player donations
  • Issue tracker
  • Wiki
  • Idea Board

License

OpenDominion is open-sourced software licensed under the GNU AGPLv3 license.

Acknowledgments

Legal

Dominion and most of its game-related content (concept, mechanics, buildings, races etc) is/was a product of Kamikaze Games, Inc.

OpenDominion aims to be a free and open source remake, closely based on the original Dominion from Kamikaze Games, Inc. No copyright infringement intended.

All rights belong to their respective owners.

Shout-outs / Thanks

  • Ross from Kamikaze Games Inc., for creating and running Dominion
  • RedFox for creating DomSim
  • BlackReign for his OOP sim
  • All the people who contributed to the Dominion Encyclopedia
  • Mevnie from Discord for creating the amazing Elf drawing on the homepage
  • Other people and sites involved with Dominion and from the original Dominion community, including (but not limited to) Dreki, Fingal, Ladeda, Rio, Talium from igalaxie, Sparticus, Lala's Crypt and Mickles from DomHQ
  • All the contributors to the OpenDominion project
  • All the people who are participating in Discord, forums, or otherwise involved with the OpenDominion project

Notes

1: Taken from the original Dominion website.

Comments
  • Discussion about invasions

    Discussion about invasions

    Alright folks, discussion / note-to-self thread.

    I want to bring up the topic about invasions and how they worked in Dominion. Notably the numbers (or at least realistic estimates) on how things were calculated.

    Question: Anyone know if there was any mechanic in place that prevented or discouraged you from invading and black ops'ing realmies?

    Afaik there wasn't, but would like some confirmation on this. And if not, do you reckon there should be something in place? Perhaps like a warning message or just flat-out forbid it?

    I'm trying to work out some numbers with regards to invasions. I have the following in mind, based on reading the scribes, a half complete wiki and digging through the round win stories:

    Some terminology first for those unfamiliar:

    • Raw OP: Offensive Power, the attack stat of your units summed together
    • Raw DP: Defensive Power, the defense stat of your units summed together
    • Modded OP/DP: Raw OP/DP but with multiplier bonus gained from things like Gyphon Nest/Guard Tower buildings, Forges/Walls improvements or many other factors
    • Successful invasion: You send more modded OP than they have modded DP at home. Just 1 point of additional OP is enough. No RNG.
    • Bounce: Unsuccessful invasion. I.e. you didn't send enough OP to break their DP
    • Raze: Bounce by 15% or less difference in your OP vs their DP
    • EG range: Elite Guard range, anyone (with their land size) within 75-133% of your land size
    • Prestige: Stat giving 1% max population, OP and food production per 100 prestige. Gained by successfully invading others.

    Land grab amount: Successful invasion grabs 5% of target dominion's total land, split 50/50 between barren and constructed/constructing (destroying any buildings or constructing buildings in the process), and either 1) spread evenly across all land types or 2) spread in a ratio that the target has (i.e. if the target has 60% plains / 20% forest / 20% water, you gain that ratio of the 5% land grab)? In addition, you get 50% bonus land (discovered) on a successful invasion, possibly only if a dominion has been hit X times in the last 24 hours.

    Prestige gain for attacker: Successfully attacking in EG range gives prestige equal to 5% of target's prestige + 20, maxed at 10% of your own prestige +20. Not accounting for war status, taking wonders or tech ruleset modifiers. Also this gets reduced probably by depending on how much the target has been hit in the last 24 hours, see 'defensive casualties' below.

    Someone on the forum mentioned that the prestige gain could be 20% of the land grab (not counting bonus land). Prestige page on the wiki mentions the above 5% based on target prestige. But the wiki on the web archive has been known of being out of date sometimes.

    Prestige loss: Razing, being successfully invaded (on the wiki it says 5% prestige loss), receiving black ops during a mutual war (tiny amounts) or hitting dominions smaller than 66%. I need to work on the exact numbers for this.

    Offensive casualties: 8.5% needed to break the target or just 8.5% of what you send if you don't send enough, either spread evenly across all unit types or based on ratio. Doubled casualties (8.5% x2 = 17%) on a raze (defined as: modded OP is at least 15% lower than target's modded DP).(edited) Defensive casualties: Around ~6.6% (as defined on the wiki) scaled by relative landsize (i.e. range). So say 100% range = 6.6%, 75% range say 6.6% * .75 = 4.95%?. Also depending on how many times you've been hit the past 24 hours, it scales further from 100% - 80% - 60% - 55% - 45% - 35%. Spread out between all units that help defend (i.e. have DP), either flat spread or again, based on unit ratios you have. Oversending apparently causes more defensive casualties. And I'd assume undersending reduces defensive casualties too.

    Also, to verify:

    • To initiate an invasion you must have at least 70% morale
    • Boats carry 30 troops each for units that don't swim/fly
    • You must leave at least 33% worth of DP based on the OP you send at home (e.g. if you send 1000 OP, you have to leave at least 333 DP at home)
    • You may not send more than 125% of modded OP relative to your modded DP at home per invasion (eg if you have 1000 DP, you may not send more than 1250 OP at a time)
    • "Non-unit casualty bonuses are summoned together then capped at 80%. Unity casualty bonuses are applied to this number (except gnomish suicide squads)" <-- need to think out how this would work

    Needs verification:

    • Sending invasions lower morale. Any clues on numbers for this? Any modifiers for razes, bounces or successful invasions?
    • Lower morale means lower DP. Any clue about the scaling? (scribes invade page; "Keep in mind, however, that as your morale goes down, your defense does not battle as hard.")
    • Successful invasions also lower morale of target dominion (wiki round 4 win story; "We took him to 0% morale, ...")

    Consider the following scenario where multiple grabs from different people in a span of an hour seem to increase in size:

    round-74.html:539: 11:00:32 AM Victorious on the battlefield, Russian roulette (# 16) conquered 335 land from This is My Ninja Way (# 23). round-74.html:540: 11:59:29 AM Victorious on the battlefield, slow.internet.guy (# 16) conquered 340 land from This is My Ninja Way (# 23). round-74.html:541: 12:00:00 PM Victorious on the battlefield, Mucho Badasstico (# 16) conquered 382 land from This is My Ninja Way (# 23).

    My guess on this is because it's multiple people with different land sizes so the target is a different relative % landsize (i.e. range), like 75% range=grab then 85% then 100% or something. Same-dominion invasions right after each other do reduce land grabs, further proving this theory. Also this means that land grab % is not reduced by the 'recently invaded protection bonus', reducing 100% - 80% - 60% etc. Only defensive casualties, possibly prestige loss and possibly spell damage or damaging spy ops too.

    I don't necessarily want to do it 100% perfectly right the first time before I release invasions, but I want to have a good start based on the data we have.

    Anyone who wants to give some input on this (especially veteran Dominon players) is encouraged to do so.

    discussion feature 
    opened by WaveHack 12
  • Military spy losses

    Military spy losses

    Kill a percentage of military units with the 'count_as_spy_offense' perk on failed ops.

    The percentage of spy units lost is then divided by their DP (currently 4 for both chameleons and master thieves). Normally, losing 1% of 1000 spies would kill 10. In this case, 1% of 5000 chameleons (counts as 1000 spies) would kill 2.5. This can be adjusted as needed with feedback from the GPC.

    opened by internetfett 5
  • Spy/Wiz operations formula v3

    Spy/Wiz operations formula v3

    Formula will be changed to be linear

    • Info-ops base: 80%.
    • Theft base: 50%. Calculations can be found here: ~~https://docs.google.com/spreadsheets/d/1vvp8f2BxTN3yq3Jf9OzENaOtkZzjanPr-hsAKdEVqE8/edit#gid=0~~ https://github.com/blackreign/Dominion-Simulator/blob/master/ops%20chance.xlsx

    Spy ops casualties:

    [Base] = [Info ops: 0.5 / Theft: 1]
    [Spy casualties info ops] = clamp([Base] * [Ratio], 0.5, 2) * [Forest Haven reduction]
    
    opened by stromblom 5
  • Wip/development seeder fix

    Wip/development seeder fix

    Description

    Fixes DevelopmentSeeder.php and updates node modules so that the dev onboarding process in contributing.md works as intended.

    Motivation and Context

    Previously (when I cloned into the repo today), following the instructions from contributing.md would cause breakages at seeding and at npm run dev.

    How Has This Been Tested?

    I am now able to build the project and set it up / run local server.

    Screenshots (if appropriate):

    Types of changes

    • [x] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist:

    • [ ] My change requires a change to the documentation.
    • [ ] I have updated the documentation accordingly.
    • [x] I have read the CONTRIBUTING document.
    • [ ] I have added tests to cover my changes.
    opened by jnelson180 5
  • Add ability to delete one's own dominion

    Add ability to delete one's own dominion

    Soft-delete dominion record to preserve data and relational links. Double check to make sure the tick system doesn't process soft-deleted dominions.

    It should clear up the spot in the round for new players. Ideally we want to keep track of the round that the dominion was in. I.e. don't make dominions.realm_id null.

    feature 
    opened by WaveHack 5
  • Peasant loss/No peasants gain Issue

    Peasant loss/No peasants gain Issue

    Current Behavior

    (What is the current situation and/or output for bugs?) Despite having plenty of food and even a net gain of food, i was previously(1 day ago) loosing peasants, although I'm unclear on the exact number as I don't watch it. Previous: Peasant change last hour: -176

    As of right now, my peasants aren't declining, but they aren't growing either, despite still having space for them.

    Peasant population: 21,473 / 22,890
    Peasant change last hour: 0
    

    Expected Behavior

    (Explain desired behavior for bugs and feature requests) I think you know this

    Steps to Reproduce

    (For bugs, describe the steps you took to reliably reproduce the issue. For feature requests, either omit this section or describe step by step how your feature should work.) N/A

    Environment

    (For bugs, on what environment are you running? Production, development or your own local setup?) N/A

    Context

    (Anything else you want me to know. Useful info include the version hash at the bottom right of OpenDominion and server software versions (like PHP) if you're running on your local machine. For feature requests, try to include some motivation.) Context:

    eyJpdiI6Ikc5Ym84b3g5UEo2OTV5aVpuWWI1QWc9PSIsInZhbHVlIjoiemtOTWkyWENyM3RBWFREWk9ickZPRE1jSFBtc1ZCaFI3WXV1UmltNkxEZVdic1RsSDBNQXo2ZmNndGJrTlpxREFqY3ZJZCtiQkJXYWpERUhRSUQ5OWM2ZEdqdG16cmkwVjhxblJBcGZhXC9LejBUaHJ3cFwvXC9xMWhIdHZUY2ZiQXdUNFpmWklEelUyQmwyOG5yRWRneEFadEpXaEN4cytkRjlDS3RXUUpXKzROc284OGFCRmpZYUtzNTFjbU5EbFoxZkJsdVdzV1Qxa2VjN2VtQWdUR1NSM1d4ZUs4WFBFSXA0c1dlOEhjZkVMWTNyTFZLNWZmVHpycXhpaVdxbGg1SnJFUW9mTFwvR1ErS09YdGE1czMrcUJzWFdOblBBMXlTSHpMMW13aXdtMzFwRzNQckN3SVNDNTNqazFLRmRkUUNDdnlrZEt1SUZObFwvNlJUZmhMcFBhME95TCtkZGllc1h4S1hOY2l4b0tGcEdZbjFPZEdvMTNrTFdnMmRaTDZxcTFQdXZzb1R6OEZjV2Y1TUxTQnNQWnR4NzJzZ1wvRGU5RWRQdVd1R0kzZjJKV200S1JZekVkMWc3K3FRQmVuMFkxTmtGK3JjVFwvWXBjSXR3emx6Q0dDb0IyWVN4NWZDMGw5RzlGXC92YlNLaFlqTnB4d0xjRmFrd0RzXC85cldIOFZoTlhJMWJsZ1RzM3BTa1NtM2NqWE5jN0RPU1wvN2dLdzJRa2VPVWN3XC82U2JqVjZ4NHRQZll2WWtDZVdXdERTcW5land1bjFtaTRDR2owZldIVk1wTVVqYXlSXC9UQjEyekJiV09LdWJ3N3JvdUxcL25qK2ppVHVBenBRZEZ6bjJLVE5uVTNCdDJkMzVpQ09SdCtodUp5VXFWQTF2Q0lGOTUzXC9DQTN6SmNnUUNtem5UN0IyYll3Q1VuQUxlUnRpTmdhNWFzalJOYndFQVlQUG9yMytmK0RhS2J0QWl1Rk1nODNuVXFxV3FmT3ZNeHZDNWtEMU5GT3Nvbjc4MlVDbFI3Zm4yNzhnUUt0WjNLN0VjVjZ4dlE1V0VSK2poYjVxekdKT3VzMzNjUlQzYUxOT1JFQlhpSFdUejU0bUUwZmxvMmxIYkJFTFBqSmNTS1piMFFNUE00VWFDVXMrVWV1bmJoeXJwVUdYWGRjXC92Y2RSMjBEOE5YMU9cL2hLNTJva09iaDBuQVR6cXlFUE9wTkh0bnRySnJMNTJJTFBBdkpDeWNQVklJT1Q2Z2xkbldoSVZUcDJ4ZmJrcmZMM1RPRDVTTVUxNnB2WEZ5ZURFNXpzVmd6K2llcUIzdDV4RHVHa3lLaW1cL201a2R6cDlGSHdpaGw3NWpSVmJNODA5Rnp1eUxqQVlWc3JSUUJDbmdWWXZ0emluNFlCWHBZc3VwK0x1b20wRlA4S1wvWXo3RVwvSkpweDM4UTFOemt2ckpjK3JiV2lTRkVXZXJMZ1VFNmxYZEJ6Q1VrcGJxaFwvWnBnQlUwZTRTSjM5TGk5TjhVRkJiczFobUNwV1FYYW5QU0VUbFVzRXc2REttQ2dEdkFlcnhrSUxNdnZuSElLbW1iMGdIckNPK1pHUUViYmtUazQ2RVhaVWdvT1p2cHQ2a0FKdWN3eW1Eclh0QkR5SmxWekdrQ0pUS1NScUtNUmFaU0hoMkFnbWZtUzQ3XC9zMGhUVGR2czQ4b050TlduWnRxcE54dXpiTllBemhIUm9obkFhZ0lwb1B1UXRPNmswcXd3U05Db2RnT0ZkWFpJS3ZkSXNRMDNCaFFhRjFoNFlYZzZtdGNwdFJPUnA0b3k4R3BqWTZ5UzgxbEtNbWZYV3VFUUhOUmZ2ZUxYVFBaTWxQUkNiNk1uRVNVQWhGb20zT0JJcmNmeDAySng4OGh6UENVOHdVaFN0enQzMHdHcU1TU3lWR2N2TlMrM1FJV0M4Z0c1WFFlMXRxdkx4cHRXMnI2Rm82SEY4RXd6b1wvTGFLcm13Wm9mS0RUbDRVd1lhdkhDc1o5TGxQWllaNEJuME9JeFkwUDFyREo2TllRcDJvWlZvb3pwYjdRVzhkSnMzVzdld01nVENtR0tqNGxmT0lRTCtJR3RSYklNKzVPM2ErVFZ3UXJlTnIrU0xqelpMRlJ1V3N5NEp4T1VCQ3VJNEF5aml6bDBpeVlYQlhoOGRQRGtiXC9DcWVrR2d6MHVYUEVnM2NrN2ozVjlaUEQ1YmhzRjFpOFNKa1hnMnBmclJQQ2RIQTJqbXo1V0RobVRKbjdqRWJaY1lkSjVnc003ZUFJZVRzU0xtR1VlSzViWGk2bGZ3SThcL2xxZ3NmZVl3Tm1ZVFwvb3NpTVZoYjdTYlwvajZGQnM1N0dtZGJKQU9uOHZyTFNLTXhwWGtZQVRJR3VVMnljSkN0b0VrMFQ5NGdCcXlpTDVkZVdYbjNPWVFMOFlmZTU4cXVtMVdlUzlMeTlzR0tXcytEZ1FRaFZuWERhaTI2R3Bpd0VOUkpoNlRYdGthWUlxd1p4N1laWVhKOXlJc2RmaktwUlBDaDRvOXV6V0ZwRisxNFwvU3I0M2tqZ0w1ZUJJTElndlJzVm9mVG5vRzNHYWd4a2huSnNhTVNxbTN3YW41VjJYUHdLOVJYcDRHQzZ5R0NXVlAyY3pXSndPSlJtU2xtTWJFTHIzVmpBTDhkd1B2SVZldGs2RWhtd2VqNkVsN0pkanNCZ21ocVY3dmNEVlRtV3BRUE9nckZzSGxEc3lVdmpKRHRoUUJoczY4cnduXC9GV2w4WXh5emFiOVwvb095M0JKc2FySzdPMnFFNmJVSkI2ajZDSG5KXC96V2tUQXhTY2JKREh3ZDlwK050eHZKMEthTE9TYkVQa2xwa1FJZGhTd1RodXlPQ1BOYk82M1kxbk9MMmV5QkpORjFhUEFZQVI0dWljeStiWExcLzBGQ3JpNWZQSTNhdE5tTkxGMkJUOWdRTDZHNWw0NGtKOVI3cXJyVzdCQ0lVRW84MjArNXlTWERpSkIxemgyUVp4VEZZSGNpMWdISWY2XC84ZDJlVEVzcElXR2xSd09JVWFtWmg2RVp6ekwzbjBQZ1Jkb2RVK0h2RXJ5NkpleDVYdWxFVTJEd0EwVlRZRGp3b1ZlcWxITXg3b3RSS3FORjQreDVyMEVQWEY4dHZScmZEV1JPOTNcL0tXalpnTGtLZTdnUzlvelh2UnczU3pLRDdyXC9lRGJcL0t2bEtLZk1DZnYyM2dmYThUMkZqWjVpcVZVanRLMDFlUGdBbGtYeFwvZnlhTHRTTzZYakxOU3JtWThMSTZYZlZ5NWRGcmRXSTJxT1dYUjlOWGtNY1hhd3NoQTJ4RTFUd0Z6XC9cL3JhalFvV2hkR3NBa3g0SXllXC9vQ1wvTGkyWUlQQngrSld2Y2FHbGdoY3lqTzBIUnhsUkcwSVgxcitMcnI4QU9LSWl5MUFGUG1NSzdmTmFINjkydHloSW52b2syWnB5S29QVnJvaVYrbTVjNThwdHNUSGdkTjVSbENLRnNFbVpxb1BZWWdyT0hQUzI1NU1GTjA1THhSOUdLTGFFMzVERVR0RExXK1dGOTJCN2hKNWgwcDNMMFI3QUhTb3NzcHVFaTBNRGhoZFRSeW9aeXhvclJxem9pZCtTOGNzMDNqNTI4YWJUNHF1enNCRHczR2UwbEU5NHRUXC9uSWU0RTE1ck5cLzVmVjNvMFVCOUFOQ0JVYmtKMHhUMitWT0NMWXQ4QzZ4d2N3NjRUOFZMdDg0T1JmdFZWZWo1SlhDTXk4ZTVHTStTR2xIYkxiNkVWa1oybGRGdTJsRVwvNW81Um9MclZjSStaRDJTRTVyY3pmbGVPcjJKSHJ3dEtLWEVJRnFBR1ZDR1JMV2ltS2hzMUdHbFM4MmpOWkV1N3owZlIyYnFYQU5qcmN2anRaSmNQcURLblwvRnVCZWh5dEhLZW1LakxYXC9IeVU4NmRRWElwNEt0ek04YTlySnQweFVtVnJtZTljc3c4dElrSk01YWRcLzJkQ1Z1bU56MVBMV1wvc1VEMVJIV1h5NHhCVXlEdFY3bEQ4QmZcL0VIeGVkUjRvc1paNVF5MUdBWGwxZzEwUjg2eGRhOHlsMjBRb0tyWklnbFwvZHdtUkM1OHBIYk40TWFsc1ZCVk51ZTBPT2FZMDVvS28wdDRlVVVRWDNyMGVDcVczck56VUN1SEx2RlRJM29VZ3hRd3FxdE42UzloTzg2dXdNRHRLXC9PT0plK1R2VTJFdUJGdGhvdkZpMkNmWTlpMTBWOVVnSzZOOEYzdmhPRkVSTnJLaGJ2WEZ6dTFaeks3b3dYdmIxbDFhRHJaNXJjT3JDRmNmUEM5eXBQTWNzRU1KT2Z2TXFaY25mWFBZZ09mVWltblNveEgwMGRRd2w1aUtZcjVOR2c3V0FRcDd1NGdNWCt3NDg1REFuWmhQaHluRE5lUmtMd1FDU3NxcTJlYXNrcGUxK3Q5UEZGTDdIeFZlWDhVdlpHM29zZU9wV0NMNzlaazhmV0Q4Q2UrVGZQREdhS0JybFdDZFhMNHFldWViTDJicFpjaG9WSjZXRkRSS3RmRkpyU28rWElGQXRZM2d5U0hieTJzXC9hYktYM1VrVmlFN3BOUUFGTysraXYyc2I5TThJQWFudW1JOUxZK0JWXC9GMkdMbHNvN3ZUSUFFOXdBYWFVN1BwelM4STBIU2FkMGdDWlFvcDc1OWU1dlhDNFNsdStlSGFaSStXQjF1SCtUNUQ1K01EaElvSTFcL0RBMjRyKzdNa2c5eDNTMlwveEJBb04wdHBaVmZndGJQRlpabG5tU2l4MktkeEQ2TlJGN3k2R1dablFnRG9CeTk0TEVOTyt4UnFBd1FRbzZjait5N21jV3FDVTJMZXZEKzduQTVXSURqNGVLOVc3XC9ORDlKeGQ5R2ZndmlyRGZ2UmhDWWdYQjd0OXVlTzdEcXhzTmNmYngwbjFnXC9cL1A0OHRjQlJOeTBhUXZBQ045UDB6MUo5OGNjYlVoUkNlRlFER2ZLYk1EV3BvSFVRMEFsRXh0cktibVk0NEl3RFZpYlpQRU9NK2xJZ056S1FUVE1tT1VZZkRRUTJpQWJcL0lEWjdpKzdmNE5xWU9SOUJweTFXTksya3hjR2NsSUozSnNaMnFvK1BJeEpjSkEyZWUrRE81OXlGVlBJNU5KdjZOT2hIVlMxbGFUVmpCVk5wbVIzeHV3d0hvNjRUT3ZxTDNQUGRoZjZ3R1ZXVmZEUFwvOTlUNWIzeHBhR042ZFloWGEwZmZKaEs0bmVnTnY4aEpiRFVPNmNtcGZXYlRxZVNOYktkQ2NrbGJobUY0ck1WeFNOaHB1ZUpJRzQ3MWE1ZmpIcXFzYll4WUh6OG9YWUhtakN0YXk0MWsyODFQTGMrNENqN3B6N3pcL2h6Vm1ZN2FQdjVtaVN5QmsyRXpcL2dNdFJYSlNENm91ak5pOUJlMm85WHhEempVQWFzZGdrXC9mMWdGWm1yRnJkMVVPeXdPTVpjNHg2VHdsRGFOekF5amo1R0xlYkVSOVJBUzdtZnBHUDZ4ODMwYk9zXC9ScU1uTFRGZmo0U3c3ajJtRG1UZ25cLzNvK0JwaFkxcjRBd0NRM2JiZEp5bTBPSWtwSVwvRkZGQkg1VkcxUmZkb2RMN0xUbk1Jb2lHbVwvR05cL2VZWEwzeFArNXBiNVJESDVCSDA1cXhkZ1hNaVFWRSs2a2tsdUY0YVBwQzBwSVwvam1GOXZGN214VjF6R0NtZ3NGVXFWN2dYS1RpYkxNMjRWY3dpZnNobks0NVRcL0hyYlpyS3o1V05WVnE1Q2hwYWVLQzJkYndkd1ltVFhwVUxSMG9LeVFDS3lcL1BTeE9vNTJoVmpLdkJvdHhEVlBJSXFBUUxQQ3VCQ3NHOENYZHdGQlNaUmpIRWdMQVhvVkIyQ1dcL1czYWliWHBMQ3p6OUR5RVJiZVpuU0krNVJBS2llcDE5WkExZFNQbURJMDVaMHRnbWdWMDR5cEo0M2ViN3ZreFJwWDBSK2dPYmllUFhSRkhuVmJPeGlcL0M3Q3JDc1JSSmJBNnRoWU1KNFlUaDdkd0krc0dGQUFkUnhcLzdLa2xOam84MGQweFwveEZwQjRJSkJoa2tsb2xRRnlXd3VQbUxkR1pJamNCVHZ3alNmUFQrQzZpOGVuMGxFeXFKNGd2SjJHSUM2WWc9IiwibWFjIjoiODkzZWRiZjQxYzRiNzBlZGY3ZmQ4MDZjY2NkNjc2NjY2MmExYzRkZDUxZjU5Yjc2MDdiZDVkZDAzYjRhOWI2MyJ9
    
    bug 
    opened by ZekiarTR 5
  • Toggle building help text (or have it on icon hover)

    Toggle building help text (or have it on icon hover)

    image

    Too much info to read if you're already accustomed with what buildings do (same probably for units). Also breaks mobile by stretching the TR if class .table-responsive is on the div outside of the table tag.

    Either need a toggle somewhere to show and hide the help texts, or move them to some hover or modal area.

    ux good first issue hacktoberfest 
    opened by WaveHack 5
  • Initial install of forum.

    Initial install of forum.

    It's a start. The seeder creates 3 basic free-for-all starting forums. When a realm is created it also creates a forum for that realm that can only be used by members of that realm. The base url is /forums

    Todo:

    • add to the menu
    • clean up the blade templates
    • fix user avatar
    • moderator permissions for the monarch
    • highlight current forum in left list
    • pre-select forum selector when posting while looking at a forum
    • stuff
    opened by Kender2 5
  • Dark Mode

    Dark Mode

    Allow players to select from a preset list of skins

    • New column on user table 'skin'
    • Dynamic body class name based on user preference
    • New custom dark theme based on classic game colors
    Screen Shot 2019-11-04 at 8 10 43 PM
    opened by internetfett 4
  • Fixed: Make title less clickable by accident on mobile #256

    Fixed: Make title less clickable by accident on mobile #256

    Description

    I wrapped the logo link in two divs. One to give it a margin, and the other to correct the resulting background color change.

    Motivation and Context

    https://github.com/WaveHack/OpenDominion/issues/256

    How Has This Been Tested?

    I have only tested this fix on a browser emulating mobile screens. Please let me know if further testing is necessary.

    Types of changes

    • [x] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist:

    • [ ] My change requires a change to the documentation.
    • [ ] I have updated the documentation accordingly.
    • [x] I have read the CONTRIBUTING document.
    • [ ] I have added tests to cover my changes.
    opened by andregce 4
  • Op Center improvements

    Op Center improvements

    This was a big one. I'll try to list everything here:

    • Added database migration (which evolved a few times) to remove unique constraint for realm/target/type and added a latest boolean with a default value of true
    • Added an event listener to set the pre-existing latest op to latest=false (InfoOpCreating)
    • Rewrote and optimized the Op Center queries
    • Added a paginated archive view for ops older than the latest
    • Added 'Invalid' badge to ops older than 12 hours
    • Excluded invalid ops from Recent Ops count
    • Added Race column to main op center table
    • Added links from Realm pages to op center
    • Fixed icon on Revelation op box
    • Fixed issue with Clear Sight scrollbar

    One thing that stands out is that no matter how hard I tried to get a date ordered group by clause to work when querying the latest op for every dominion- it did not work with the ORM. So unfortunately it queries the latest op of each type for every dominion and then uses groupBy on the Collection to reduce that to a single op per dominion. Either way, this appears to be much faster than even what we had before (without multiples).

    opened by internetfett 4
  • Bump express from 4.17.1 to 4.18.2

    Bump express from 4.17.1 to 4.18.2

    Bumps express from 4.17.1 to 4.18.2.

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump guzzlehttp/guzzle from 7.3.0 to 7.4.5

    Bump guzzlehttp/guzzle from 7.3.0 to 7.4.5

    Bumps guzzlehttp/guzzle from 7.3.0 to 7.4.5.

    Release notes

    Sourced from guzzlehttp/guzzle's releases.

    Release 7.4.5

    See change log for changes.

    Release 7.4.4

    See change log for changes.

    Release 7.4.3

    See change log for changes.

    Release 7.4.2

    See change log for changes.

    Release 7.4.1

    See change log for changes.

    Release 7.4.0

    See change log for changes.

    Changelog

    Sourced from guzzlehttp/guzzle's changelog.

    7.4.5 - 2022-06-20

    • Fix change in port should be considered a change in origin
    • Fix CURLOPT_HTTPAUTH option not cleared on change of origin

    7.4.4 - 2022-06-09

    • Fix failure to strip Authorization header on HTTP downgrade
    • Fix failure to strip the Cookie header on change in host or HTTP downgrade

    7.4.3 - 2022-05-25

    • Fix cross-domain cookie leakage

    7.4.2 - 2022-03-20

    Fixed

    • Remove curl auth on cross-domain redirects to align with the Authorization HTTP header
    • Reject non-HTTP schemes in StreamHandler
    • Set a default ssl.peer_name context in StreamHandler to allow force_ip_resolve

    7.4.1 - 2021-12-06

    Changed

    • Replaced implicit URI to string coercion #2946
    • Allow symfony/deprecation-contracts version 3 #2961

    Fixed

    • Only close curl handle if it's done #2950

    7.4.0 - 2021-10-18

    Added

    Fixed

    • Make sure we always call restore_error_handler() #2915
    • Fix progress parameter type compatibility between the cURL and stream handlers #2936
    • Throw InvalidArgumentException when an incorrect headers array is provided #2916, #2942

    Changed

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies php 
    opened by dependabot[bot] 0
  • Bump composer/composer from 1.10.23 to 1.10.26

    Bump composer/composer from 1.10.23 to 1.10.26

    Bumps composer/composer from 1.10.23 to 1.10.26.

    Release notes

    Sourced from composer/composer's releases.

    1.10.26

    • Security: Fixed command injection vulnerability in HgDriver/GitDriver (GHSA-x7cr-6qr6-2hh6 / CVE-2022-24828)

    1.10.25

    • Fixed selfupdate on Windows + PHP 8.1 regression (#10446)

    1.10.24

    Changelog

    Sourced from composer/composer's changelog.

    [1.10.26] 2022-04-13

    • Security: Fixed command injection vulnerability in HgDriver/GitDriver (GHSA-x7cr-6qr6-2hh6 / CVE-2022-24828)

    [1.10.25] 2022-01-21

    • Fixed selfupdate on Windows + PHP 8.1 regression (#10446)

    [1.10.24] 2021-12-09

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies php 
    opened by dependabot[bot] 0
  • Javascript   Mobile app ?

    Javascript Mobile app ?

    Detailed Description

    Context

    Possible Implementation

    Any chance that I can collaborate and make a mobile app of this. I remember when I was playing this back in the days. I missed this game so much

    opened by CyrusZei 1
  • Improve look and feel on widescreen browser windows

    Improve look and feel on widescreen browser windows

    Description

    OpenDominion looks great on a phone, but it looks pretty terrible in a web browser on my widescreen monitor.

    image

    Possible Fix

    Provide a maxwidth to the main pane of the UI (or find some other way to reduce the huge gaps between fields).

    opened by smikula 1
  • Available tech icon displayed when fully teched

    Available tech icon displayed when fully teched

    When a user has unlocked all techs and hits the threshold where they would usually unlock a tech based on their land size, the icon is displayed on the menu (next to "technology" that suggests a tech is available to unlock). When selecting technology there are no techs to unlock in the list yet the icon does not dissappear, meaning the icon is displayed for the rest of the round.

    Description

    The icon is displayed next to "technology" for the rest of the round although there are no techs to unlock.

    Expected Behavior

    Once all techs unlocked then the player should not be advised they can unlock further techs once the next threshold is hit.

    Actual Behavior

    Possible Fix

    Once all techs unlocked then the player should be marked as such meaning they are not considered for further techs. Or perhaps the player cannot earn further RP once they are fully teched. Another option is that the icon can be displayed once the threshold is hit but it is removed once the user selects technology.

    Steps to Reproduce

    1. Unlock all techs 2.earn enough research points to hit the threshold to unlock a tech based on your land size
    2. The icon "1" will be displayed next to technology in the left hand menu
    3. Selecting technology does not remove the icon

    Context

    Worth considering how this is treated if enough research points are gained to unlock a second tech once all techs are gained, the "2" icon should not appear etc.

    Your Environment

    • OpenDominion version (bottom right in the game):
    • Browser Name and version:
    • Operating System and version (desktop or mobile): same occurs on chrome on both android, ios and Windows.
    opened by Mullalove 0
Releases(0.8.0-6)
🚀 An open source multiplayer space strategy game.

Badges Introduction The game story takes place in a virtual galaxy where randomly generated planets produce various raw materials which can be used by

Galaxy of Drones Online 192 Dec 25, 2022
MeowOfDuty - An open source multiplayer space strategy game

The game story takes place in a virtual galaxy where randomly generated planets produce various raw materials which can be used by the Players to develop their infrastructure and fleet. In addition, players may trade with the Earth or engage in battles, so beyond various military arrangements, economic decisions should be taken as well.

@stux 3 Jun 27, 2022
A WordPress plugin that displays proxied war news from the free world to Russian IP address visitors with option to block further access.

A WordPress plugin that displays proxied war news from the free world to Russian IP address visitors with option to block further access.

null 5 Jul 15, 2022
Core functionality for Legend of the Green Dragon, a text-based RPG game.

Legend of the Green Dragon (Core) Legend of the Green Dragon is a text-based RPG originally developed by Eric Stevens and JT Traub as a remake of and

Legend of the Green Dragon 135 Dec 28, 2022
A back-off strategy interface for retrying operations.

EventSauce BackOff This library provides an interface for encapsulated back-off strategies. composer require eventsauce/backoff Leveraging the back-of

EventSauce 59 Dec 19, 2022
Laminas\Text is a component to work on text strings

laminas-text This package is considered feature-complete, and is now in security-only maintenance mode, following a decision by the Technical Steering

Laminas Project 38 Dec 31, 2022
Zend\Text is a component to work on text strings from Zend Framework

zend-text Repository abandoned 2019-12-31 This repository has moved to laminas/laminas-text. Zend\Text is a component to work on text strings. It cont

Zend Framework 31 Jan 24, 2021
Versi dinamis dari spk fuzzy sebelumnya, kini support setting jumlah sub kriteria

spk-fuzzy-dynamic Versi dinamis dari spk fuzzy sebelumnya, kini support setting jumlah sub kriteria SPK-Pariwisata-Fuzzy Implementasi Fuzzy Tahani Pad

Huda Mustakim 3 Mar 22, 2022
Samsui is a factory library for building PHP objects useful for setting up test data in your applications.

#Samsui Samsui is a factory library for building PHP objects useful for setting up test data in your applications. It is mainly inspired by Rosie for

Sam Yong 31 Nov 11, 2020
Guide to setting up a lazy loader with the Lozad library in WordPress.

Install WordPress LazyLoader with LOZAD Guide to setting up a lazy loader with the Lozad library in WordPress. Installation Step 1: Refer to the foote

Peyman Naderi 4 Dec 21, 2022
Guide to setting up a lazy loader with the jQuery Lazy library in WordPress.

Run jQuery Lazy in Wordpress Guide to setting up a lazy loader with the jQuery Lazy library in WordPress. Installation Step 1: Refer to the footer.php

Peyman Naderi 5 Nov 28, 2022
Guide to setting up a lazy loader with the Lozad library in WordPress.

Install WordPress LazyLoader with LOZAD Guide to setting up a lazy loader with the Lozad library in WordPress. Installation Step 1: Refer to the foote

Peyman Naderi 7 Aug 28, 2022
Rules to detect game engines and other technologies based on Steam depot file lists

SteamDB File Detection Rule Sets This is a set of scripts that are used by SteamDB to make educated guesses about the engine(s) & technology used to b

Steam Database 103 Dec 14, 2022
A Finite State Machine System based on Chapter 3.1 of Game Programming Gems 1 by Eric Dybsand

A Finite State Machine System based on Chapter 3.1 of Game Programming Gems 1 by Eric Dybsand,Written by Roberto Cezar Bianchini, July 2010 ported to php by MrFerrys.

null 4 Apr 18, 2022
Moodle plugin to limit the access to course content according to the user level in Block Game.

Moodle plugin to limit the access to course content according to the user level in Block Game.

null 4 Oct 18, 2022
A useful PocketMine-MP plugin that allows you to create crates in-game!

ComplexCrates A useful PocketMine-MP plugin that allows you to create crates in-game! Commands Main command: /crate Sub commands: create

Oğuzhan 8 Aug 26, 2021
Game Boy Camera Wifi Photo Extractor

Game Boy Camera Fast Wifi Adapter Plug in your Game Boy Camera, turn it on, and you can have the photos on your phone in under 2 minutes! Why I Made I

Matt G 71 Dec 16, 2022
The game is implemented as an example of scalable and high load architecture combined with modern software development practices

Crossword game The game is implemented as an example of scalable and high load architecture combined with modern software development practices Exampl

Roman 56 Oct 27, 2022
This plugin adds custom pets to game for PocketMine-MP!

ComplexPets A plugin that adds pets to game made by OguzhanUmutlu for PocketMine-MP. Command Simply type /pets and summon your favorite animal! Featur

Oğuzhan 10 Aug 12, 2021