You must be logged in to post messages.
Please login or register

General Discussion
Moderated by alincarpetman, Aurilux

Hop to:    
Welcome! You are not logged in. Please Login or Register.9 replies, Sticky
Rise of Legends Heaven » Forums » General Discussion » Website Improvement Feedback
Bottom
Topic Subject:Website Improvement Feedback
alincarpetman
Afreet
posted 08-02-17 01:28 AM EDT (US)         
ROL Heaven has been online since 2005 for 12 years as of 2017.
Activity has fluctuated and the site is still active but slow, and the internet is constantly changing.
Here are some website design evolution timelines illustrating this point:

Web design history, a complete journey
Web Design Trends Infographic On The Time Machine Through the Years 2004-2015
The History of Web Design Infographic

There are currently at least 10 main active places on the internet for this game, all with varying degrees of activity and features:

HG - Forum and Game Info (Threads have unlimited timespans)
Steam - Forum and Info (Threads have unlimited timespans - ROL doesn't have a proper Steam entry yet so the RON Forum is used to occasionally comment on the game)
Moddb - File & Mod Dowloads and Limited Mod Discussion
Reddit - Temporary Discussion (Threads archived after 6 months)
Wikia - Game Info
Wikipedia - Historical Info
Youtube - Streaming/Video Gameplay, Info and Limited Discussion
Twitch.tv - Streaming/Video Gameplay
Discord - Online Multiplayer Gameplay Chat

...So the only proper forum for long-term serious discussion and projects is here at Heavengames and while it is an old site it is still functional and the only true "forum" available.
All the other current sites (except Steam) have limited discussions, some with time limits such as Reddit.

It's up to us players and modders to work on User Patches and revive the community. One problem is the game discussion is spread over 10 places.
As far as I am aware, even though the Heavengames site and forum is old, it is still functional and the only true forum available for both games.
All the other current sites (except Steam) are limited discussions, some with time limits such as Reddit.
It is probably more convenient to chat where you are (Youtube, online gaming) but detailed long term discussions and projects are probably better suited for forums.

That being said, there are long term plans to revamp both RON & ROL Heaven websites.
If you have some web development skills and free time to discuss ideas and/or volunteer to work on the site, please email me in my profile.
HG uses Zope, Dhtml, Html, CSS, PHP, Perl, Javascript, Jquery and Radiant on some sites.

Some recently made features on HG that I like is the AOE2 Units Table here and the ROL Files Types & Uses table here - it would be nice to see this type of data organization on all the rts game sites. What do you think?

If you have any suggestions for features, please post below.
If possible, please link to examples and other sites to illustrate your points easier.

[This message has been edited by alincarpetman (edited 11-21-2018 @ 04:29 AM).]

AuthorReplies:
Rodmar18
Zekeling
posted 08-03-17 06:06 PM EDT (US)     1 / 9       
Hello Alin Carpetman,

If I understand you, you'd wish that this forum could display the data from those army files, in some fancy manner as in the AoE's University.

As I am quite unimaginative, best way to do so would be to first copy other's work.
Perhaps you could contact Leif Ericson from AoE heavengame and see if it's willing to share the code of his article, or even give a hand.
I peered at his AoE page. I'm not familiar at all with all the style and CSS stuff.
The page's style is defined in the <style>...</style> element (LL 19-2222) and I can't reproduce it without intensive learning (or blatant copy, paste, adapt parameters... and crossing fingers).
The javascript part (the useful one, that commands the way buttons and adaptable displaying of table content work) (LL 2589-2675) looks pretty straightforward (at least as explained here: https://www.w3schools.com/jquery/default.asp).
The javascript library is loaded in LL 9-11 from GoogleApis.
The data part (the table proper) (LL 2677-15869) is what you would expect for a table.
The rest is classic HTML.
So I guess that we could have a bland (style-less) HTML page demonstrator working like Ericson's table very quickly.
I mean, take a basic HTML page skeletton, insert into the header the lines 9-11 with updated data, then insert into the body an adapted version of lines 2589-15869.
Once the RoL army file's data are extracted out in some spreadsheet, that is.

The most elementary correction would urge to ask Ericson's agreement, though there's no real original work in those parts.
Anyways, is there a mean for a normal forum user to format a message in HTML? Or are _you_ in power to replace a message by a HTML code someone would provide you?

It seems that our table could be a little more complex than Ericson's? You have first to think about what you want toggle-able, how you would organize factions (Vinci, Alin, Cuotl, and Neutrals, or Vinci, Vinci_neutrals, Alin, Alin_neutrals, ...), how much columns from the army files (some are not worth, as it seems), and let's not forget that a unit may have several stances, hence several lines for such units (in comparison with AoE).

[EDIT]Code refined in next message[/EDIT]

[This message has been edited by Rodmar18 (edited 08-05-2017 @ 02:37 AM).]

alincarpetman
Afreet
posted 08-03-17 07:50 PM EDT (US)     2 / 9       
Hi Rodmar,

Thanks for the code, I did contact Leif about the coding and it is based on Javascript so it can be added to most webpages on HG and when I have some more time I will try to make a ROL version,
though I will need other players help as you pointed out there are many unit stances or variations.

Forum users can use basic html to make their own tables, you can experiment below in another post if you want.
Check this page for links to info on html coding on the HG forums.

You can also create a table inside a program like Libre Office and "copy n paste" it into a forum post.
Check the table I made here as an example, I created it inside Libre Office first and then pasted and did some minor editing for the forum post.

For the ROL Heaven webpages only a moderator can change the website and there are some long terms plans to do so.

[This message has been edited by alincarpetman (edited 08-03-2017 @ 07:52 PM).]

Rodmar18
Zekeling
posted 08-05-17 02:34 AM EDT (US)     3 / 9       
Well, it appears that the page on AoE University uses one exhaustive unit table per game version (AoK, Conquerors, etc.), and switches seamlessly from one table to another according to which game button is selected. We could do the same and declare one table for each faction, plus one table for all (if we want to compare all troopers for instance).

However, because I couldn't adapt the style in this short time, and thanks to the possibility to assign and test two classes per element, I managed to reproduce the selectors behaviour, although with a little more complex script.
The advantage I see is that each unit is listed but one time in a unique table, instead of being listed in two tables (own faction's table, and all factions' table).

Here is a demonstrator based on Leif Ericson's page.
Data come from the unitsrule.xml found in the Mod ressource pack on this forum (I havent use the BIG extractor yet).
As HTML seems to be deactivated on the forum, I show you the code uninterpreted. Just copy and paste into a .html file and open it in your browser (or correct this message?). Note that if you use Firefox, the checkboxes & radio buttons won't be refreshed on reload because it's how this browser works. It works fine on Opera, however. Please, don't mind the quality of the code: it's my first javascript bit.

<!DOCTYPE html>
<html>
<!-- table demonstrator for RoL units -->
<head>
<title>Table of units - Rise of Legends Heaven</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js">
$.noConflict(true);
</script>
<script type="text/javascript" src="http://aok.heavengames.com/js/jquery.tablesorter.js">
$.noConflict(true);
</script>

<style>
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}

td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}

tr:nth-child(even) {
background-color: #dddddd;
}
</style>
</head>
<body>


<!-- script to add selection buttons on top of the table -->
<!-- contrary to University's page, we have to use boolean to toggle the lines because we use but one single table
note: toggle(true) is equivalent to show() and toggle(false) is equivalent to hide()
note: jQuery(selector1selector2) select those elements wich match BOTH selectors, whereas
jQuery(selector1, selector2) would select those elements which match any one selector -->

<script type="text/javascript">
var vinciDisplay = true;
var alinDisplay = true;
var cuotlDisplay = true;
var neutralDisplay = true;
var trooperDisplay = true;
var heavyDisplay = true;
var flierDisplay = true;
var vehicleDisplay = true;
var siegeDisplay = true;
var otherDisplay = true;
var heroDisplay = false;
// usual start to delay script's execution
jQuery(document).ready(function()
{
jQuery(".stat-table").tablesorter();
// check non mutually exclusive (?) button for toggling on/off unit categories
jQuery('input[type="checkbox"]').click(function(){
if(jQuery(this).attr("value")=="trooper"){
trooperDisplay = !trooperDisplay;
jQuery(".trooperUnit.vinciFaction").toggle(trooperDisplay && vinciDisplay);
jQuery(".trooperUnit.alinFaction").toggle(trooperDisplay && alinDisplay);
jQuery(".trooperUnit.cuotlFaction").toggle(trooperDisplay && cuotlDisplay);
jQuery(".trooperUnit.neutralFaction").toggle(trooperDisplay && neutralDisplay);
}
if(jQuery(this).attr("value")=="heavy"){
heavyDisplay = !heavyDisplay;
jQuery(".heavyUnit.vinciFaction").toggle(heavyDisplay && vinciDisplay);
jQuery(".heavyUnit.alinFaction").toggle(heavyDisplay && alinDisplay);
jQuery(".heavyUnit.cuotlFaction").toggle(heavyDisplay && cuotlDisplay);
jQuery(".heavyUnit.neutralFaction").toggle(heavyDisplay && neutralDisplay);
}
if(jQuery(this).attr("value")=="vehicle"){
vehicleDisplay = !vehicleDisplay;
jQuery(".vehicleUnit.vinciFaction").toggle(vehicleDisplay && vinciDisplay);
jQuery(".vehicleUnit.alinFaction").toggle(vehicleDisplay && alinDisplay);
jQuery(".vehicleUnit.cuotlFaction").toggle(vehicleDisplay && cuotlDisplay);
jQuery(".vehicleUnit.neutralFaction").toggle(vehicleDisplay && neutralDisplay);
}
if(jQuery(this).attr("value")=="siege"){
siegeDisplay = !siegeDisplay;
jQuery(".siegeUnit.vinciFaction").toggle(siegeDisplay && vinciDisplay);
jQuery(".siegeUnit.alinFaction").toggle(siegeDisplay && alinDisplay);
jQuery(".siegeUnit.cuotlFaction").toggle(siegeDisplay && cuotlDisplay);
jQuery(".siegeUnit.neutralFaction").toggle(siegeDisplay && neutralDisplay);
}
if(jQuery(this).attr("value")=="flier"){
flierDisplay = !flierDisplay;
jQuery(".flierUnit.vinciFaction").toggle(flierDisplay && vinciDisplay);
jQuery(".flierUnit.alinFaction").toggle(flierDisplay && alinDisplay);
jQuery(".flierUnit.cuotlFaction").toggle(flierDisplay && cuotlDisplay);
jQuery(".flierUnit.neutralFaction").toggle(flierDisplay && neutralDisplay);
}
if(jQuery(this).attr("value")=="other"){
otherDisplay = !otherDisplay;
jQuery(".otherUnit.vinciFaction").toggle(otherDisplay && vinciDisplay);
jQuery(".otherUnit.alinFaction").toggle(otherDisplay && alinDisplay);
jQuery(".otherUnit.cuotlFaction").toggle(otherDisplay && cuotlDisplay);
jQuery(".otherUnit.neutralFaction").toggle(ohterDisplay && neutralDisplay);
}
if(jQuery(this).attr("value")=="hero"){
heroDisplay = !heroDisplay;
jQuery(".heroUnit.vinciFaction").toggle(heroDisplay && vinciDisplay);
jQuery(".heroUnit.alinFaction").toggle(heroDisplay && alinDisplay);
jQuery(".heroUnit.cuotlFaction").toggle(heroDisplay && cuotlDisplay);
jQuery(".heroUnit.neutralFaction").toggle(heroDisplay && neutralDisplay);
}
});

// add mutually exclusive (?) buttons for displaying a peculiar (or any) faction
jQuery('input[type="radio"]').click(function(){
vinciDisplay = false;
alinDisplay = false;
cuotlDisplay = false;
neutralDisplay = false;
if(jQuery(this).attr("value")=="all"){
vinciDisplay = true;
alinDisplay = true;
cuotlDisplay = true;
neutralDisplay = true;
if (trooperDisplay) {
jQuery(".trooperUnit").show();
}
if (heavyDisplay) {
jQuery(".heavyUnit").show();
}
if (flierDisplay) {
jQuery(".flierUnit").show();
}
if (vehicleDisplay) {
jQuery(".vehicleUnit").show();
}
if (siegeDisplay) {
jQuery(".siegeUnit").show();
}
if (otherDisplay) {
jQuery(".otherUnit").show();
}
if (heroDisplay) {
jQuery(".heroUnit").show();
}
}
if(jQuery(this).attr("value")=="vinci"){
vinciDisplay = true;
if (trooperDisplay) {
jQuery(".vinciFaction.trooperUnit").show();
}
if (heavyDisplay) {
jQuery(".vinciFaction.heavyUnit").show();
}
if (flierDisplay) {
jQuery(".vinciFaction.flierUnit").show();
}
if (vehicleDisplay) {
jQuery(".vinciFaction.vehicleUnit").show();
}
if (siegeDisplay) {
jQuery(".vinciFaction.siegeUnit").show();
}
if (otherDisplay) {
jQuery(".vinciFaction.otherUnit").show();
}
if (heroDisplay) {
jQuery(".vinciFaction.heroUnit").show();
}
jQuery(".alinFaction").hide();
jQuery(".cuotlFaction").hide();
jQuery(".neutralFaction").hide();
}
if(jQuery(this).attr("value")=="alin"){
alinDisplay = true;
jQuery(".vinciFaction").hide();
if (trooperDisplay) {
jQuery(".alinFaction.trooperUnit").show();
}
if (heavyDisplay) {
jQuery(".alinFaction.heavyUnit").show();
}
if (flierDisplay) {
jQuery(".alinFaction.flierUnit").show();
}
if (vehicleDisplay) {
jQuery(".alinFaction.vehicleUnit").show();
}
if (siegeDisplay) {
jQuery(".alinFaction.siegeUnit").show();
}
if (otherDisplay) {
jQuery(".alinFaction.otherUnit").show();
}
if (heroDisplay) {
jQuery(".alinFaction.heroUnit").show();
}
jQuery(".cuotlFaction").hide();
jQuery(".neutralFaction").hide();
}
if(jQuery(this).attr("value")=="cuotl"){
cuotlDisplay = true;
jQuery(".vinciFaction").hide();
jQuery(".alinFaction").hide();
if (trooperDisplay) {
jQuery(".cuotlFaction.trooperUnit").show();
}
if (heavyDisplay) {
jQuery(".cuotlFaction.heavyUnit").show();
}
if (flierDisplay) {
jQuery(".cuotlFaction.flierUnit").show();
}
if (vehicleDisplay) {
jQuery(".cuotlFaction.vehicleUnit").show();
}
if (siegeDisplay) {
jQuery(".cuotlFaction.siegeUnit").show();
}
if (otherDisplay) {
jQuery(".cuotlFaction.otherUnit").show();
}
if (heroDisplay) {
jQuery(".cuotlFaction.heroUnit").show();
}
jQuery(".neutralFaction").hide();
}
if(jQuery(this).attr("value")=="neutrals"){
neutralDisplay = true;
jQuery(".vinciFaction").hide();
jQuery(".alinFaction").hide();
jQuery(".cuotlFaction").hide();
if (trooperDisplay) {
jQuery(".neutralFaction.trooperUnit").show();
}
if (heavyDisplay) {
jQuery(".neutralFaction.heavyUnit").show();
}
if (flierDisplay) {
jQuery(".neutralFaction.flierUnit").show();
}
if (vehicleDisplay) {
jQuery(".neutralFaction.vehicleUnit").show();
}
if (siegeDisplay) {
jQuery(".neutralFaction.siegeUnit").show();
}
if (otherDisplay) {
jQuery(".neutralFaction.otherUnit").show();
}
if (heroDisplay) {
jQuery(".neutralFaction.heroUnit").show();
}
}
});

});
</script>

<!-- section to define the buttons menu -->
<div id="checkbox-menu">
<div class="unit-checkbox" style="display: block;">
<input type="checkbox" value="trooper" id="trooperBox" name="units" checked />Troopers
<input type="checkbox" value="heavy" id="heavyBox" name="units" checked />Heavy infantry
<input type="checkbox" value="vehicle" id="vehicleBox" name="units" checked />Vehicles
<input type="checkbox" value="siege" id="siegeBox" name="units" checked />Siege units
<input type="checkbox" value="flier" id="flierBox" name="units" checked />Fliers
<input type="checkbox" value="other" id="otherBox" name="units" checked />Other
<input type="checkbox" value="hero" id="heroBox" name="units" not-checked />Heroes
</div>
<br />
<div class="faction-checkbox" style="display: inline-block;">
<input type="radio" value="all" id="allBox" name="faction" checked />
<label for="allBox">All</label>
<input type="radio" value="vinci" id="vinciBox" name="faction" not-checked />
<label for="vinciBox">Vinci</label>
<input type="radio" value="alin" id="alinBox" name="faction" not-checked />
<label for="alinBox">Alin</label>
<input type="radio" value="cuotl" id="cuotlBox" name="faction" not-checked />
<label for="cuotlBox">Cuotl</label>
<input type="radio" value="neutrals" id="neutralBox" name="faction" not-checked />
<label for="neutralBox">Neutrals</label>
</div>
</div>
<br />
<!-- Vinci units' table; one table per faction -->
<table class="stat-table">
<!-- column definition (of class) to allow manipulation: icon/name/data/more data -->
<colgroup span="1">
<col class="icon-col">
</colgroup>
<colgroup span="1">
<col class="name-col">
</colgroup>
<colgroup class="data-cols">
<col class="faction-col">
<col class="flags-col">
<col class="hp-col">
<col class="size-col">
<col class="armor-col">
<col class="spiky-col">
<col class="trample-col">
<col class="g-att-value-col">
<col class="g-att-range-col">
<col class="g-att-type-col">
<col class="a-att-value-col">
<col class="a-att-range-col">
<col class="a-att-type-col">
<col class="s-att-value-col">
<col class="s-att-range-col">
<col class="los-col">
<col class="speed-col">
<col class="fast-speed-col">
<col class="train-time-col">
<col class="cost-col">
<col class="pop-col">
</colgroup>
<colgroup class="moredata-cols">
<col class="wound-col">
<col class="number-id-col">
<col class="dist-id-col">
<col class="blockRad-col">
<col class="pushRad-col">
</colgroup>
<!-- table's headers (title is on-hover help text) -->
<thead>
<tr class="table-header">
<th class="icon-header header" title="Unit Icon">Icon</th>
<th title="Unit Name" class="header">Name</th>
<th title="Faction" class="header">Faction</th>
<th title="Properties" class="header">Flags</th>
<th title="Hit Points" class="header">HP</th>
<th title="Size" class="header">Size</th>
<th title="Armor Class" class="header">Armor</th>
<th title="Retaliation vs. trample" class="header">Spiky</th>
<th title="Trample attack" class="header">Trample</th>
<th title="Attack vs. ground targets" class="header">AG-Attack</th>
<th title="Range of ground attack" class="header">AG Range</th>
<th title="Type of ground attack" class="header">AG type</th>
<th title="Attack vs. aerial targets" class="header">AA-Attack</th>
<th title="Range of anti-air attack" class="header">AA Range</th>
<th title="Type of anti-air attack" class="header">AA Type</th>
<th title="Attack vs. buildings" class="header">S-Attack</th>
<th title="Range of siege attack" class="header">S Range</th>
<th title="Line of sight" class="header">LOS</th>
<th title="Movement speed" class="header">Speed</th>
<th title="Fast movement speed" class="header">F.Spd</th>
<th title="Training time in seconds" class="header">Time</th>
<th title="Cost (W=Wealth, T=Timonium/Energy) + ramp cost" class="header">Cost</th>
<th title="Supplied population" class="header">Pop</th>
<th title="Wounded state's level in HP" class="header">Wound</th>
<th title="Acceleration in %" class="header">Accel.</th>
<th title="Number of individual per unit" class="header">Ind. Nbr</th>
<th title="Distance between individuals in unit" class="header">Ind. Dist.</th>
<th title="Blocking radius for pathfinding" class="header">Block</th>
<th title="Pushing radius ahead and on the sides, when moving" class="header">Push</th>
</tr>
</thead>
<!-- table's body or units' data -->
<!-- one row per unit (or one unit stance) -->
<tbody>
<!-- vinci units -->
<tr class="trooperUnit vinciFaction">
<td class="icon" id="vinciMusketeer"><div class="icon-padding"> </div></td>
<td class="name"><b>Imperial Musketeer</b></td>
<td class="faction">Vinci</td>
<td class="unit-flags">grunt, foot, stormer, tech, land</td>
<td class="hp">145</td>
<td class="size">S</td>
<td class="armor">L</td>
<td class="spiky">9</td>
<td class="trample">0</td>
<td class="ag-a">6</td>
<td class="ag-r">0-12</td>
<td class="ag-t">piercing</td>
<td class="aa-a">6</td>
<td class="aa-r">0-12</td>
<td class="aa-t">piercing</td>
<td class="s-a">2.4</td>
<td class="s-r">0-12</td>
<td class="los">16</td>
<td class="speed">33</td>
<td class="f-speed">46</td>
<td class="btime">235</td>
<td class="cost">30m+3m</td>
<td class="pop">2</td>
<td class="wound">60</td>
<td class="accel">100</td>
<td class="nb-ind">9</td>
<td class="sp-ind">2</td>
</tr>
<tr class="trooperUnit vinciFaction">
<td class="icon" id="vinciMusketeer"><div class="icon-padding"> </div></td>
<td class="name"><b>Volley Musketeer</b></td>
<td class="faction">Vinci</td>
<td class="unit-flags">grunt, foot, stormer, tech, land</td>
<td class="hp">145</td>
<td class="size">S</td>
<td class="armor">L</td>
<td class="spiky">9</td>
<td class="trample">0</td>
<td class="ag-a">10</td>
<td class="ag-r">0-12</td>
<td class="ag-t">piercing</td>
<td class="aa-a">10</td>
<td class="aa-r">0-12</td>
<td class="aa-t">piercing</td>
<td class="s-a">2.4</td>
<td class="s-r">0-12</td>
<td class="los">16</td>
<td class="speed">33</td>
<td class="f-speed">13</td>
<td class="btime">235</td>
<td class="cost">30m+3m</td>
<td class="pop">2</td>
<td class="wound">60</td>
<td class="accel">100</td>
<td class="nb-ind">9</td>
<td class="sp-ind">1</td>
</tr>
<tr class="trooperUnit vinciFaction">
<td class="icon" id="vinciGrenadier"><div class="icon-padding"> </div></td>
<td class="name"><b>Imperial Grenadier</b></td>
<td class="faction">Vinci</td>
<td class="unit-flags">grunt, foot, stormer, tech, land</td>
<td class="hp">175</td>
<td class="size">S</td>
<td class="armor">L</td>
<td class="spiky">10</td>
<td class="trample">0</td>
<td class="ag-a">9</td>
<td class="ag-r">0-12</td>
<td class="ag-t">piercing</td>
<td class="aa-a">9</td>
<td class="aa-r">0-12</td>
<td class="aa-t">piercing</td>
<td class="s-a">3.6</td>
<td class="s-r">0-12</td>
<td class="los">16</td>
<td class="speed">36</td>
<td class="f-speed">44</td>
<td class="btime">235</td>
<td class="cost">30m+3m</td>
<td class="pop">2</td>
<td class="wound">78</td>
<td class="accel">100</td>
<td class="nb-ind">9</td>
<td class="sp-ind">4</td>
</tr>
<tr class="trooperUnit vinciFaction">
<td class="icon" id="vinciGrenadier"><div class="icon-padding"> </div></td>
<td class="name"><b>Volley Grenadier</b></td>
<td class="faction">Vinci</td>
<td class="unit-flags">grunt, foot, stormer, tech, land</td>
<td class="hp">175</td>
<td class="size">S</td>
<td class="armor">L</td>
<td class="spiky">10</td>
<td class="trample">0</td>
<td class="ag-a">15</td>
<td class="ag-r">0-12</td>
<td class="ag-t">piercing</td>
<td class="aa-a">15</td>
<td class="aa-r">0-12</td>
<td class="aa-t">piercing</td>
<td class="s-a">3.6</td>
<td class="s-r">0-12</td>
<td class="los">16</td>
<td class="speed">33</td>
<td class="f-speed">20</td>
<td class="btime">235</td>
<td class="cost">30m+3m</td>
<td class="pop">2</td>
<td class="wound">78</td>
<td class="accel">100</td>
<td class="nb-ind">9</td>
<td class="sp-ind">1</td>
</tr>
<tr class="trooperUnit vinciFaction">
<td class="icon" id="vinciFusilier"><div class="icon-padding"> </div></td>
<td class="name"><b>Imperial Fusilier</b></td>
<td class="faction">Vinci</td>
<td class="unit-flags">grunt, foot, stormer, tech, land</td>
<td class="hp">205</td>
<td class="size">S</td>
<td class="armor">L</td>
<td class="spiky">15</td>
<td class="trample">0</td>
<td class="ag-a">12</td>
<td class="ag-r">0-12</td>
<td class="ag-t">piercing</td>
<td class="aa-a">12</td>
<td class="aa-r">0-12</td>
<td class="aa-t">piercing</td>
<td class="s-a">7.2</td>
<td class="s-r">0-12</td>
<td class="los">16</td>
<td class="speed">39</td>
<td class="f-speed">44</td>
<td class="btime">235</td>
<td class="cost">30m+3m</td>
<td class="pop">2</td>
<td class="wound">78</td>
<td class="accel">100</td>
<td class="nb-ind">9</td>
<td class="sp-ind">4</td>
</tr>
<tr class="trooperUnit vinciFaction">
<td class="icon" id="vinciGrenadier"><div class="icon-padding"> </div></td>
<td class="name"><b>Volley Fusilier</b></td>
<td class="faction">Vinci</td>
<td class="unit-flags">grunt, foot, stormer, tech, land</td>
<td class="hp">205</td>
<td class="size">S</td>
<td class="armor">L</td>
<td class="spiky">15</td>
<td class="trample">0</td>
<td class="ag-a">19</td>
<td class="ag-r">0-12</td>
<td class="ag-t">piercing</td>
<td class="aa-a">19</td>
<td class="aa-r">0-12</td>
<td class="aa-t">piercing</td>
<td class="s-a">7.2</td>
<td class="s-r">0-12</td>
<td class="los">16</td>
<td class="speed">33</td>
<td class="f-speed">20</td>
<td class="btime">235</td>
<td class="cost">30m+3m</td>
<td class="pop">2</td>
<td class="wound">78</td>
<td class="accel">100</td>
<td class="nb-ind">9</td>
<td class="sp-ind">1</td>
</tr>
<tr class="trooperUnit vinciFaction">
<td class="icon" id="vinciGrenadier"><div class="icon-padding"> </div></td>
<td class="name"><b>Assault Fusilier</b></td>
<td class="faction">Vinci</td>
<td class="unit-flags">grunt, foot, stormer, tech, land</td>
<td class="hp">205</td>
<td class="size">S</td>
<td class="armor">L</td>
<td class="spiky">25</td>
<td class="trample">0</td>
<td class="ag-a">23</td>
<td class="ag-r">0-2</td>
<td class="ag-t">piercing</td>
<td class="aa-a">0</td>
<td class="aa-r">0</td>
<td class="aa-t"></td>
<td class="s-a">12</td>
<td class="s-r">0-2</td>
<td class="los">16</td>
<td class="speed">30</td>
<td class="f-speed">25</td>
<td class="btime">235</td>
<td class="cost">30m+3m</td>
<td class="pop">2</td>
<td class="wound">78</td>
<td class="accel">100</td>
<td class="nb-ind">9</td>
<td class="sp-ind">2</td>
</tr>
<tr class="trooperUnit vinciFaction">
<td class="icon" id="vinciGrenadier"><div class="icon-padding"> </div></td>
<td class="name"><b>Volley Fusilier</b></td>
<td class="faction">Vinci</td>
<td class="unit-flags">grunt, foot, stormer, tech, land</td>
<td class="hp">205</td>
<td class="size">S</td>
<td class="armor">L</td>
<td class="spiky">15</td>
<td class="trample">0</td>
<td class="ag-a">19</td>
<td class="ag-r">0-12</td>
<td class="ag-t">piercing</td>
<td class="aa-a">19</td>
<td class="aa-r">0-12</td>
<td class="aa-t">piercing</td>
<td class="s-a">7.2</td>
<td class="s-r">0-12</td>
<td class="los">16</td>
<td class="speed">33</td>
<td class="f-speed">20</td>
<td class="btime">235</td>
<td class="cost">30m+3m</td>
<td class="pop">2</td>
<td class="wound">78</td>
<td class="accel">100</td>
<td class="nb-ind">9</td>
<td class="sp-ind">1</td>
</tr>
<!-- alin units -->
<tr class="trooperUnit alinFaction">
<td class="icon" id="alinWalker"><div class="icon-padding"> </div></td>
<td class="name"><b>Desert Walker</b></td>
<td class="faction">Alin</td>
<td class="unit-flags">grunt, foot, stormer, land</td>
<td class="hp">135</td>
<td class="size">S</td>
<td class="armor">L</td>
<td class="spiky">15</td>
<td class="trample">0</td>
<td class="ag-a">6</td>
<td class="ag-r">0-2</td>
<td class="ag-t">accurate</td>
<td class="aa-a">0</td>
<td class="aa-r">0</td>
<td class="aa-t"></td>
<td class="s-a">2.4</td>
<td class="s-r">0-2</td>
<td class="los">12</td>
<td class="speed">34</td>
<td class="f-speed">48</td>
<td class="btime">200</td>
<td class="cost">25m+3m</td>
<td class="pop">2</td>
<td class="wound">105</td>
<td class="accel">100</td>
<td class="nb-ind">9</td>
<td class="sp-ind">2</td>
</tr>
<tr class="trooperUnit alinFaction">
<td class="icon" id="alinWalkerWhirl"><div class="icon-padding"> </div></td>
<td class="name"><b>Whirling Desert Walker</b></td>
<td class="faction">Alin</td>
<td class="unit-flags">grunt, foot, stormer, land</td>
<td class="hp">135</td>
<td class="size">S</td>
<td class="armor">L</td>
<td class="spiky">15</td>
<td class="trample">0</td>
<td class="ag-a">9</td>
<td class="ag-r">0-2</td>
<td class="ag-t">accurate</td>
<td class="aa-a">0</td>
<td class="aa-r">0</td>
<td class="aa-t"></td>
<td class="s-a">3.0</td>
<td class="s-r">0-2</td>
<td class="los">12</td>
<td class="speed">45</td>
<td class="f-speed">48</td>
<td class="btime">200</td>
<td class="cost">25m+3m</td>
<td class="pop">2</td>
<td class="wound">105</td>
<td class="accel">100</td>
<td class="nb-ind">9</td>
<td class="sp-ind">3</td>
</tr>
<tr class="heavyUnit alinFaction">
<td class="icon" id="alinHeartseeker"><div class="icon-padding"> </div></td>
<td class="name"><b>Heartseeker</b></td>
<td class="faction">Alin</td>
<td class="unit-flags">heavy, foot, land</td>
<td class="hp">175</td>
<td class="size">M</td>
<td class="armor">L</td>
<td class="spiky">20</td>
<td class="trample">0</td>
<td class="ag-a">6</td>
<td class="ag-r">0-14</td>
<td class="ag-t">piercing</td>
<td class="aa-a">10</td>
<td class="aa-r">0-14</td>
<td class="aa-t">piercing</td>
<td class="s-a">2.4</td>
<td class="s-r">0-14</td>
<td class="los">19</td>
<td class="speed">42</td>
<td class="f-speed">54</td>
<td class="btime">350</td>
<td class="cost">45w+3w</td>
<td class="pop">3</td>
<td class="wound">100</td>
<td class="accel">100</td>
<td class="nb-ind">1</td>
<td class="sp-ind">5</td>
</tr>
<tr class="vehicleUnit alinFaction">
<td class="icon" id="alinScorpion"><div class="icon-padding"> </div></td>
<td class="name"><b>Scorpion</b></td>
<td class="faction">Alin</td>
<td class="unit-flags">vehicle, foot, land</td>
<td class="hp">320</td>
<td class="size">M</td>
<td class="armor">M</td>
<td class="spiky">42</td>
<td class="trample">6 St:2 Kd:2</td>
<td class="ag-a">10</td>
<td class="ag-r">0-2</td>
<td class="ag-t">pounding, piercing, poison 1/sec</td>
<td class="aa-a">0</td>
<td class="aa-r">0</td>
<td class="aa-t"></td>
<td class="s-a">8</td>
<td class="s-r">0-2</td>
<td class="los">9</td>
<td class="speed">48</td>
<td class="f-speed">50</td>
<td class="btime">450</td>
<td class="cost">70m/40w+4m/2w</td>
<td class="pop">4</td>
<td class="wound">300</td>
<td class="accel">100</td>
<td class="nb-ind">1</td>
<td class="sp-ind">5</td>
</tr>

<!-- cuotl units -->
<tr class="flierUnit cuotlFaction">
<td class="icon" id="cuotlQuetzal"><div class="icon-padding"> </div></td>
<td class="name"><b>Quetzal Fighter</b></td>
<td class="faction">Cuotl</td>
<td class="unit-flags">flying, airlift, mechanical, tech, air</td>
<td class="hp">195</td>
<td class="size">L</td>
<td class="armor">L</td>
<td class="spiky">6</td>
<td class="trample">0</td>
<td class="ag-a">5</td>
<td class="ag-r">0-13</td>
<td class="ag-t">piercing</td>
<td class="aa-a">10</td>
<td class="aa-r">0-13</td>
<td class="aa-t">piercing</td>
<td class="s-a">2.4</td>
<td class="s-r">0-13</td>
<td class="los">18</td>
<td class="speed">75</td>
<td class="f-speed">100</td>
<td class="btime">375</td>
<td class="cost">40m/35e+15m</td>
<td class="pop">2</td>
<td class="wound">75</td>
<td class="accel">25</td>
<td class="nb-ind">1</td>
<td class="sp-ind"></td>
</tr>
<tr class="vehicleUnit cuotlFaction">
<td class="icon" id="cuotlSunIdol"><div class="icon-padding"> </div></td>
<td class="name"><b>Sun Idol</b></td>
<td class="faction">Cuotl</td>
<td class="unit-flags">vehicle, vehicular, mechanical, tech, land, resist m</td>
<td class="hp">800</td>
<td class="size">L</td>
<td class="armor">H</td>
<td class="spiky">60 R</td>
<td class="trample">16 St:3 Kd:2</td>
<td class="ag-a">14 B:1/sec Kd:1</td>
<td class="ag-r">0-16</td>
<td class="ag-t"></td>
<td class="aa-a">14 B:1/sec</td>
<td class="aa-r">0-16</td>
<td class="aa-t"></td>
<td class="s-a">16</td>
<td class="s-r">1-20</td>
<td class="los">17</td>
<td class="speed">25</td>
<td class="f-speed">60</td>
<td class="btime">750</td>
<td class="cost">100m/300e+10m</td>
<td class="pop">7</td>
<td class="wound">750</td>
<td class="accel">50</td>
<td class="nb-ind">1</td>
<td class="sp-ind"></td>
</tr>
<!-- neutral units -->
<tr class="trooperUnit neutralFaction">
<td class="icon" id="vinciRenegade"><div class="icon-padding"> </div></td>
<td class="name"><b>Renegade Musketeer</b></td>
<td class="faction">Neutral</td>
<td class="unit-flags">grunt, foot, stormer, tech, land</td>
<td class="hp">160</td>
<td class="size">S</td>
<td class="armor">L</td>
<td class="spiky">9</td>
<td class="trample">0</td>
<td class="ag-a">6</td>
<td class="ag-r">0-12</td>
<td class="ag-t">piercing</td>
<td class="aa-a">6</td>
<td class="aa-r">0-12</td>
<td class="aa-t">piercing</td>
<td class="s-a">2.4</td>
<td class="s-r">0-12</td>
<td class="los">16</td>
<td class="speed">33</td>
<td class="f-speed">46</td>
<td class="btime">235</td>
<td class="cost">30m+3m</td>
<td class="pop">2</td>
<td class="wound">60</td>
<td class="accel">100</td>
<td class="nb-ind">9</td>
<td class="sp-ind">2</td>
</tr>
<tr class="trooperUnit neutralFaction">
<td class="icon" id="vinciCondottiereS"><div class="icon-padding"> </div></td>
<td class="name"><b>Condottiere Soldier</b></td>
<td class="faction">Neutral</td>
<td class="unit-flags">grunt, foot, stormer, tech, land</td>
<td class="hp">130</td>
<td class="size">S</td>
<td class="armor">L</td>
<td class="spiky">10</td>
<td class="trample">0</td>
<td class="ag-a">7</td>
<td class="ag-r">0-2</td>
<td class="ag-t">piercing</td>
<td class="aa-a">0</td>
<td class="aa-r">0</td>
<td class="aa-t"></td>
<td class="s-a">2.5</td>
<td class="s-r">0-1</td>
<td class="los">10</td>
<td class="speed">33</td>
<td class="f-speed">46</td>
<td class="btime">235</td>
<td class="cost">30m+5m</td>
<td class="pop">1</td>
<td class="wound">60</td>
<td class="accel">100</td>
<td class="nb-ind">9</td>
<td class="sp-ind">2</td>
</tr>
</tbody>
</table>
<div name="Properties (flags)"><h2>Properties (flags)</h2></a>

<ul class="stat-table-properties">
<li>Grunt [FORM]: core units, usually humans, expected to form the central bulk of a formation</li>
<li>Flying [FORM]: flying combat units, usually placed over the grunts in a formation</li>
<li>Heavy [FORM]: other ground combat units, generally medium-sized, placed in front of or to the sides of a formation</li>
<li>Vehicle [FORM]: large direct-combat ground units, usually vehicular</li>
<li>Siege [FORM]: support combat units vulnerable to enemy attacks and thus better kept at rear of a formation</li>
<li>Civilian [FORM]: non-combat units</li>
<li>Command [FORM]: hero units</li>
<li>Foot [CLASS]: ground unit moving on limb</li>
<li>Mounted [CLASS]: ground unit riding a mount</li>
<li>Vehicular [CLASS]: ground unit moving by mean of some propeller</li>
<li>Airlift [CLASS]: flier</li>
<li>Land [MOVE]: unit moving only on the ground</li>
<li>Air [MOVE]: unit moving only in the air</li>
<li>Stormer: unit can assault a city</li>
<li>Gatherer: unit can gather resources</li>
<li>Transport: unit can transport other units</li>
<li>Clockwork: unit is a clockwork (man/miner/spider)</li>
<li>Mechanical: unit is not biological</li>
<li>Tech: unit is not magical</li>
<li>Attrition P.: unit protects other units from attrition ("supply wagon")</li>
<li>Attrition R.: unit resists all attrition damage</li>
<li>Attrition %: unit resists a percent of attrition damage</li>
<li>Master: unit is a master unit</li>
<li>Floater: unit floats</li>
<li>On Fire: unit is marked as being set on fire</li>
<li>Att-Move: unit attacks while moving</li>
<li>Hero: unit is a hero and gains the "Hero" spell (special properties for heroes)</li>
<li>Physical R.: unit resists some physical damage</li>
<li>Magical R.: unit resists some magical damage</li>
</ul>
<p><small><a href="#top">(Back to Top)</a></small></p>



</body>
</html>
alincarpetman
Afreet
posted 08-05-17 06:40 PM EDT (US)     4 / 9       
I tested the html, it works good. Maybe some html is moderator-only, some user-only, I will check.

Here are some more ideas:

The AOE2 Unit Table has this:

Infantry - Archers - Cavalry - Siege - Ships - Other - Heroes
Age of Kings - The Conquerors - Forgotten Empires - African Kingdoms


A ROL Unit Table could look like this:

1 Infantry - Ranged - Cavalry - Vehicles - Siege - Air - Other - Heroes
Rise of Legends - Unused Units/Mod Units (Hidden units in the Scenario Editor, Motter's Expansion, etc) - Steam EE (if ever released)

This is just one suggested version, it is also more difficult to label categories of units in ROL because of the sci-fi and magic units.
For example while the Vinci have horse cavalry, the Alin equivalent of "cavalry" may be scorpions and the Cuotl equivalent of "cavalry" may be jaguars,
so the basic concept of "infantry-cavalry-siege-etc" is there but with different animals or machines.

Another version, simplified:

2 Heroes - Infantry - Ranged - Cavalry - Vehicles - Siege - Air - Other/Unused


And a list of nations:

1 All - Vinci - Alin - Cuotl - Kahan - Neutrals - Other

(The neutrals can also be listed here within each nation.)

or:

2 All - Vinci - Vinci Neutrals - Alin - Alin Neutrals - Cuotl - Cuotl Neutrals - Kahan - Kahan Neutrals - Other

Also I don't know if the unitsrule.xml lists all of the units including unused/hidden from the Scenario Editor and BIG files, check this Unit list here for more.

It would be great to eventually have similar tables for Buildings, Spells and Techs.

It will take some time to study the files and determine how to best organize such tables, as you mentioned ROL has more features so it is more complex...

[This message has been edited by alincarpetman (edited 08-05-2017 @ 06:57 PM).]

Rodmar18
Zekeling
posted 08-08-17 10:40 AM EDT (US)     5 / 9       
I don't know if Archery/Ranged would be that a useful category because there is no obvious rock-scissor-paper system as with AoE (e.g. archer killers), most ranged units may attack even if engaged in melee, and we'd have to differentiate between Ranged (ground), Ranged (air), etc.

Also, there are no cavalry, only fast/slow units, trampling/trampling resistant units, units that can storm a site/units that can't.

At first glance, it looks like unit flags and properties allow for much more combinations than that we find in game.
According to these flags, there are:
- Grunt units that form the core of the army; they usually come in multi-individual units.
- "Stormer" units that can assault cities. As it appears, Grunts are always stormers, and stormers are always grunts.
- Foot units, that I called "Heavy" in the script, are just like medium size infantry/cavalry that can't assault cities.
Being "Foot" instead of "Grunt" commands the place inside a formation.
- Foot-class units on the other hand are ground units without a crew...
For example, the Alin scorpion is a Vehicle/Foot-class/Land unit. That means (as I figure it), that it's a ground unit that may move only on walkable land terrain, and that is put on the first line of a formation. Although it has a trample attack, and is mounted, this doesn't really make it a cavalry (or we'd have to define what a cavalry unit is first).

The same for air units: we have Flying units, that are positionned above the grunts, Flier-class units (perhaps vulnerable to anti-air attacks?), and Air-domain units (perhaps those who can move in the air, and over ground obstacles?), plus floating units...

I think that once all the units are in the table, it will be easier to know what all those flags really encompass.

Imo, what could be done, after a first table is completed and fonctional, is a third level of buttons, this time working as on the University's page, to choose between vanilla game and other versions (each coming with a new table). I think it wouldn't be useful to compare units from different versions.
Another improvement would be to search keywords into the "flags/properties" field. By adding custom flags (such as "Ranged", "Resistant to trample", etc) we could achieve the kind of sorting and displaying that you speak about. That would be perhaps more complex but far more shorter than adding as many categories as you want sorted in the scripted testing.
alincarpetman
Afreet
posted 08-09-17 04:35 PM EDT (US)     6 / 9       
Yeah I remember some units have multiple attacks, both ranged and melee, etc so it gets complicated.

When I mentioned the "cavalry", I meant in a literal way - Vinci ride on horses, Alin ride on scorpions, the Cuotl jaguars are robots and unmounted; and the Kahan have Berserker riders.
All four of these have trample damage, though some have more unique attacks such as the scorpions have poison attack.

I think we can make multiple versions of these types of tables to see how each one has pros and cons, and then players can decide which one they like to view for whatever reasons.
Maybe it won't be possible to make only one "perfect" version, maybe a few more will be needed.
Rodmar18
Zekeling
posted 08-11-17 04:45 PM EDT (US)     7 / 9       
I can work on them but not before a few weeks.
Is the unitsrule.xml in the Mod pack up to date? I'll start with it.
Adair001
Banned
posted 08-18-17 02:02 AM EDT (US)     8 / 9       
@Rodmar18

Did you get a chance to continue work on this project?

[This message has been edited by alincarpetman (edited 06-18-2018 @ 08:14 PM).]

alincarpetman
Afreet
posted 06-18-18 08:13 PM EDT (US)     9 / 9       
Sorry for the delay, the website is up and running but the activity is currently low.

Website staff are volunteers but there are long term plans to revamp both RON & ROL sites and forums, it will just take time to accomplish on a volunteer schedule.

If you have any suggestions or skills you can post in this thread below:

[This message has been edited by alincarpetman (edited 07-21-2018 @ 07:09 PM).]

You must be logged in to post messages.
Please login or register

Hop to:    

Rise of Legends Heaven | HeavenGames