Jump to content

hopeless-ponderer

Community Members
  • Posts

    20
  • Joined

  • Last visited

1 Follower

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

hopeless-ponderer's Achievements

Discens

Discens (2/14)

42

Reputation

  1. Alright, thanks @Freagarach, that sounds easy enough. I'll set up my account and add some documentation, and hopefully have it up later tomorrow.
  2. Yeah, of course! I have a few ideas I'd like to submit actually, I was just waiting until after A25 was released. I still need to learn how to use Phabricator though. Do I need to use SVN to submit diffs, or can I generate patches with git? I'd prefer to use git if I can, I already do most of my work on the Github mirror. There's already a git-formatted patch located at dev/patch, btw, which forks from master at the commit saved in dev/git_base.txt.
  3. Github repo: https://github.com/Mare-Nostrum-0AD/popup_choices Zipfile: popup_choices.1.zip Hey everyone! Here's a new feature I've been planning to create for a while. It allows Scenario designers to include "popup choice" menus in their trigger scripts. These popup choice menus can have up to three buttons, with each button (optionally) triggering a function when it is clicked. This allows you to create scenarios with storylines and more interesting scripted events, and also to display information to the player during gameplay (i.e. a "Historical Background" blurb at the beginning of the scenario). The instructions for how to use this are contained in the README.md of the github repo and zipfile I linked to above. I included an example script at maps/scenarios/demo_popup_choices_triggers.js. To try out the scenario, go to the Scenario selection menu, filter by Demo maps, and look for DEMO: Popup Choices. You'll have to know at least a little JavaScript to use this feature, of course. I know a lot of you here aren't coders, so I'll try to build a "template" scenario script and a library of functions for simple use cases to make this as accessible as possible to everyone. I'm also willing to help people build their scenarios, as long as it's just a small or medium sized project. I'm also including this feature in my other mod, Mare Nostrum, from now on. I hope y'all can make some interesting scenarios with this!
  4. You're right, thanks for pointing that out, @Stan`. Here it is: <prop actor="props/structures/romans/rome_bridge_base.xml" attachpoint="bridge"/>
  5. No problem, @azayrahmad! Glad I could help. The Corvus was a gangplank that the Romans attached to the front of their ships that made it easy to board enemy ships. It was the key innovation that allowed them to compete with the Carthaginian navy in the First Punic War. Before the Corvus, the Roman navy was actually pretty poor compared to other Mediterranean powers. In reality, they never became great seamen, the Corvus allowed them to treat naval battles like infantry battles on land, which they excelled at. You might have noticed that the Roman warships in A24 and A25 already have this feature: it's the long ramp that protrudes from the front of the ship. If I remember correctly they didn't have this in A23 and before (I could be wrong, it's been a while since I played A23). If so, you could use the A23 Roman ships as the variant without the Corvus and the new ships as the variant with the corvus. For the bonus, you could just increase the attack power or attack frequency. To make it 100% accurate you'd have to make ships use a melee attack or have the ability to capture other ships, but that's probably too complicated for the game atm.
  6. A few things going on here: Technology manager is a component of the entity's owner (the player), not of the entity itself. Instead of Engine.QueryInterface, you'll need to call the helper function QueryOwnerInterface(this.entity, IID_TechnologyManager). When each component's Init() function is called, there is no guarantee that all the entity's other components have been initialized already. There's no neat solution to this, but the best solution that I have found is using OnOwnershipChanged instead for code that is dependent on other components. The event OwnershipChanged is fired when the entity is assigned to its initial owner, which occurs almost instantly after all components have been initialized. You'll want to check that the initialization code isn't called again when the entity's ownership changes, so do something like this: VisibleTechnology.prototype.OnOwnershipChanged = function() { if (this.initialized) return; <initialization code ...> this.initialized = true; }; OnResearchFinished is only called on the entity of the player that researched the tech. To have any individual entity respond to a tech being researched, use OnGlobalResearchFinished. The msg consists of the fields "player" and "tech", player being the ID of the player who researched the tech and tech being the name of the tech. You'll want to check that the player ID is the same as the entity's owner, or else you'll update the variant when any player researches the tech. Use the following code: const cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership); if (cmpOwnership.GetOwner() !== msg.player) return; Good luck with this! It's something I've always wanted to see in the game. I've thought about giving the Romans a "Corvus" tech to improve the power of their ships, which would give them with the boarding plank you see on the ships in A25.
  7. These are really nice! It really appeals to my inner Romeaboo . That being said, you might want to save Aurelian for the Dominate Romans, if you're planning on making them? I can understand wanting to have a more cavalry-based hero for differentiation, but imo coming after the Crisis of the Third Century makes him part of the Dominate, even if he came before Diocletian. Better choices for a solidly Principate-era emperor could be Claudius or Hadrian. Claudius was known for strengthening traditional Roman religion against the eastern mystery cults, maybe one of his powers could be increasing the healing power of the Priests? He was also known for using freedmen in his administration, maybe he could unlock the ability to upgrade slaves into something like the Chinese minister. Hadrian would have the same wall-building power as Aurelian, plus the ability to unlock certain Greek structures or mercenaries, since he was a huge hellenophile. And you could add one of the bad emperors as an easter egg. Nero or Commodus could be fun to play with
  8. Thanks, glad you're liking it! I've played it a few times since you added them, I think it really adds a lot to the realism. If you want to differentiate the civs like in Mare Nostrum, you could use Olive Groves (Elaionas) for the Hellenic civs and Date Palm Groves for African and Asian civs. You might have missed those templates; they aren't located in the regular civ folders, they're located under structures/hele, structures/mesop, and structures/nile (long story short, I rewrote Builder.js to replace {civ} with the culture code if it can't find the template with the civ code, so for example will look for structures/hele/field_cash_crop if it can't find structures/athen/field_cash_crop). Here's what they look like: Off the top of my head you could use cacao groves for the Mesoamerican civs and silk worm farms for the Chinese. I haven't added those factions, so it isn't high on my priorities list, but you might want to look into it.
  9. I had some time to code a patch for this this weekend. All it took were a few tweaks to TechnologyManager.js and ProductionQueue.js: tech_triggers.zip With this patch you can add "triggers" to each technology.json. I added @wowgetoffyourcellphone's Epigamia tech as an example: { "genericName": "Marriage Pact", "specificName": { "sele": "Epigamia" }, "description": "Form a marriage pact with the Maurya Empire. Receive a one-time gift of 20 War Elephants, in exchange for reduced territory push for Civil Centers.", "cost": { "metal": 600 }, "requirements": { "all": [ { "tech": "phase_city" }, { "civ": "sele" }, { "entity": { "class": "SeleucusNikator", "number": 1 } } ] }, "requirementsTooltip": "Unlocked in City Phase. Requires training the hero Seleucus I (Nikator).", "icon": "sibylline_books.png", "researchTime": 40, "tooltip": "Receive a one-time gift of 20 Maurya War Elephants, in exchange for reduced territory push for Civil Centers.", "modifications": [ { "value": "TerritoryInfluence/Radius", "multiply": 0.7, "affects": "CivCentre" } ], "triggers": [{ "systemComponent": "Trigger", "func": "TechSpawnUnits", "args": [{ "researcher": "{{ researcher }}", "player": "{{ playerID }}", "unitTemplate": "units/maur/champion_elephant", "count": 20 }] }], "soundComplete": "interface/alarm/alarm_upgradearmory.xml" } There are three elements to each trigger: The component name. A component is basically one of the elements in a template like "ProductionQueue" or "Health". There are three types of components you can use: entityComponents, playerComponents, and systemComponents. Entity components are components of the structure or unit that researched the tech, player components are components contained in player.xml, and system components are global, gamewide components like Triggers. This particular example uses a custom-written trigger function in Triggers~tech_triggers.js. The function name ("func"). The available functions for each component are in simulation/components/<Component>.js. The args: an array of args to feed to the function. Certain properties can be parsed into the args if they are contained between double brackets, like {{ playerID }}. Currently, researcher (the entity that researched the tech) and playerID are the only properties that can be parsed like this. You can make your tech spawn any units you want by replacing the value of unitTemplate in the example above. I'll try to submit this for A26. You can add the code directly to your mod as well, but I can understand not wanting to maintain a lot of js code in a faction-based mod like this. In the meantime I'm going to add it to Mare Nostrum, if you want to play around with it there.
  10. For my mod, Mare Nostrum, I'm trying to make a "Government Center" for each faction. For the Romans I've chosen the Comitium. The Comitium was part of the Roman Forum. It served as an open-air meeting place for the Curiate assembly and other popular assemblies during the Republic. It was located in front of the Curia, the meeting place of the Senate. Many different Curiae were built over the course of the Republic and Empire, but I'd like to use the Curia Hostilia in particular. The Comitium actor should consist of a circular tile platform in the middle plus four surrounding props. I've made a very rough model of how the props should be placed: i Here's a rundown of the props: Curia Hostilia: The Curia Hostilia was a very simple structure, basically a square house with a triangular attic. At the front it had a small bronze doorway with a small window above. Each side had two small windows near the roof. It looked very similar to the Carthaginians' "Italic Embassy", but without the Portico in front. It should be roughly the same size as the Athenian Prytaneion, but with a square footprint. The Prytaneion has a radius of 16 meters, so the Curia should be 32 x 32 meters at the base. Rostra: The Rostra should be based on the Rostra Vetera. The Rostra should curve around the perimiter of the Comitium, like seats in a theater. At the top should be a platform equal in depth to the steps (this was where politicians would speak during assemblies). The outside should be lined with a series of small arches. On the side furthest from the Curia there should be a narrow tower with a triangular roof, only slightly taller than the Rostra platform. The Rostra should be no taller than half the height of the Curia. Graecostasis: The Graecostasis will be a simple rectangular tile platform, with a couple steps leading onto it. It should be much shorter than the Rostra. Columna Maenia: A typical Roman honorary column, in the Corinthian style. One of the columns from the front of the existing Roman cc should do nicely (without the statues on top). Some pictures for reference: The Curia Hostilia The Rostra Vetera The Graecostasis The Column of Phocas (the Columna Maenia wouldn't have looked very different) A map of the Comitium (disregard all Curiae other than the Curia Hostilia, outlined in red). A map of the Roman Forum during the Republic, Comitium at the top-center. Locations of the Curia, Rostra, and Columna Maenia labelled. The overall structure should have the same have the same footprint as a greek theater (circular, with a radius of 25 meters). The Curia should be placed under art/actors/structures/romans, since it could be used as a structure in its own right; the other props should be placed under art/actors/props/structures/romans, as usual.
  11. Yes, of course. Disregard what I said before, I think a better choice for a city-level cc would be the Basilica Fulvia (later renamed the Basilica Paulli), which was built during the Middle Republic (c. 179 BC). It was a relatively simple building: basically a long, rectangular hall with three doors at each end. There was a smaller second story protruding from the roof, with a triangular attic. Near the ceiling there was a row of small windows. In front of the building there was a smaller, two story building with a wooden balcony and a colonnade running down the front. For the purpose of the game it should have the same footprint as the existing Roman CC, but it should be about 2/3 as tall, to make it look more humble. There should be a tiled plaza in front as well, but it should have simpler props than the current CC. Maybe just a few trees, or statues without columns. There's an article with accompanying images at Digitales Forum Romanum: http://www.digitales-forum-romanum.de/gebaeude/basilica-fulvia/?lang=en. It also includes models of the version that was rebuilt under Augustus (called the Basilica Paulli). You could incorporate some elements from that version as well, if you feel like the front of the Republican building looks too plain.
  12. I guess I'll blog some of my progress here. This week I created a new City Center actor for the Romans by reskinning the extra Spartan civil center actor. In the long run I'm hoping to replace it with something that looks more like the Basilica Aemilia (similar to the current Roman CC, but a bit smaller, and with tapered levels), but for now I think it looks pretty nice. I used the texture files for this to reskin the Roman bathhouse and level 1 farmstead too, so they look a bit more professional. Here's a video of the complete Roman civil center progression now: roman_city.webm Other changes I've made the lately: Civil centers can train citizen soldiers again. I realized removing them from the cc made the early game too slow. Phase upgrade alerts now display correctly and play the sound. This also fixes a bug where all civs were researching the Athenian phase techs. A ton of bugfixes for Delphi bot, mostly checking for entities with undefined position (it seems the AI has trouble noticing when a civil center has upgraded). The most common bugs are gone now. City radius range overlays display correctly now. I borrowed the texture for the overlay from @azayrahmad's city building mod. Over the next few weeks I'm going to start working on a couple different features. I'll try to submit them as patches for A26, since they could be useful for the main game: A gui interface for "popup choices" that can be called from Trigger scripts. The popup choice menu will have up to three buttons, with each button being linked to a callback function that can be used to trigger different events. This will be useful for adding a "choose-your-adventure" element to scenarios (i.e. "Ally with the Rhodians and receive 20 ships" vs "Ally with the Spartans and receive 20 Spartiates"). Allowing technologies to call Trigger functions when researched. This will be useful for technologies like the "Marriage Pact" technology being discussed for the Syracuse mod (i.e. "receive a one-time delivery of 20 Maurya war elephants").
  13. Wow, this is looking really good! Could you send me a copy to use in my mod, Mare Nostrum? I'll give you credit of course. It would work well as the City center (the old Roman CC could be the more advanced "Metropolis" center). It's ok if it isn't 100% finished, my mod is a work in progress too.
  14. Thanks, I'll integrate these into the repo soon! It'll be especially useful to get the patron temples to build closer to the buildings they provide a bonus for (it's frustrating seeing the AI build a Temple of Poseidon in the middle of land). Hmm... I'm still leaning toward getting rid of manpower, but making structures cost manpower might actually help balance manpower levels. Especially if more advanced buildings like monuments cost exponentially more manpower. And there would be a good in-game justification for it too. Also, notice that Manpower is different from City population (which is itself different from Unit population, which will be renamed to "Command Limit" in the future, to avoid confusion). Manpower represents a small subset of your City population that you've managed to recruit for the military and service to the government. I actually am planning on giving Cities and Metropoli a food upkeep that scales with their population, since food production seems to get a bit too easy in the later game. But I think creating an "unemployment upkeep" for excess manpower is a bit unnecessary, and could lead to some dangerous cases where the upkeep is taking away all your resources, which leaves you no way to get rid of the excess manpower. At least with the food upkeep for cities, the city's population will decline when upkeep is unpaid until the upkeep falls back to a manageable level. BTW, I fixed dropsite bug and the Maurya barracks bug, thanks again for pointing those out! Always good to hear feedback from you.
×
×
  • Create New...