Jump to content

Complete Sacred 2 FX list - Part I


Lindor

Recommended Posts

Pesmontis's emphasis was on what FX might work well attached to models.  My exported list from the dll contains all of the FX you mentioned.

Link to comment

I have found my years old extraction folder and all the lists on my PC, the FX appear on these lists and even on the fineal (very confusing) spreadsheet. I guess it was human error then and I accidentally "skipped" these FX.

Link to comment
  • 10 months later...

@Flix this is not important, but can you share a data dump about all the texture file / fx relations you know? It'd be a great asset both for the fx ist as well as another, older dream of mine: an fx finding and editing tool. Now that I have acquired the skills to create GUI applications, this dream moved into closer proximity:)

  • Respect! 1
Link to comment
  • 7 months later...

It's pretty tedious to sarch the data of the entirety of the project.
Therefore I'd like to migrate some of the data to the wiki. My vision is a sortable and filterable list without screenshots. I envision something like:

  • FX name
  • Spells.txt Usability Flag (Standard, Partial, Casting, Spell, Unusable)
  • questscripts.txt usability Flag (TRUE/FALSE)
  • SFX Flag (TRUE/FALSE)
  • VFX Flag (TRUE/FALSE)
  • FX appliance flag (smth. like Skin/Projectile/Beam/Gound)
  • Boss Flag (e.g. Scorpion, Octagolamus, None etc.)
  • Hero Flag (e.g. High Elf, Dryd, None etc.)
  • Spells.txt Ranking (0: basically unusable, 5: absolutely stunning, of course that's pretty individual preference)
  • corresponding shader(s), if existent
  • corresponding image(s), if existent
  • corresponding particle script(s), if existent

So smth. like 12 different columns
It would also be great if multiple persons could edit it and not just myself.

But does the wiki even have the ability to create sortable and filterable lists? One'd need some Javascript for it. But it'd be exceptionally useful.

Link to comment
3 hours ago, Lindor said:

Sortable yes, filterable no, unfortunately. Still impressive.

I've tried to provide a starting point:
https://www.sacredwiki.org/index.php/Sacred_2:FX
This will be a lot of work it seems.

I was thinking about your questions re filtering...  Yah the wiki can do tables but I dont remember it ever being able to do filtering..its funny cuz with most spread sheets that I use at work, you absolutely need filtering to be able to drill down quickly.

Its still always a pleasure to see people enjoying this game Lindor, almost 20 years later, and finding satisfaction in documenting what could have been the greatest game EVER... 

:hugs: 

gogo

  • Appreciation 1
Link to comment
On 1/13/2024 at 12:10 PM, Lindor said:

Sortable yes, filterable no, unfortunately. Still impressive.

I've tried to provide a starting point:
https://www.sacredwiki.org/index.php/Sacred_2:FX
This will be a lot of work it seems.

Gooood morning Lindor!

Was just looking at your new spread sheet, its  E P I C :heart:   I was looking at it with Schot we remember when we were finding table codes for the Wiki, they were sometimes not quite what we wanted but we were able to find some great table solutions ad the tables can be beautful :sun:  

We read your notes..how did the import of information from DarkMatters go, was the database able to complete your requests to save or were there any times that you noticed saves or edits were taking a while to execute? The Wiki uses a level of *engine use*  that we keep mostly set for low level activity, but well consider increases our engine size if you feel that you're unable to save edits in a timely manner, or is there a type of functionality, search or cron job that was now working well that we could look at improving?

Thanks for really digging into this modding module you're making for new modders... youre thoughtful, generous and organized... you'll have loads of mini sacredites running around here in no time!

:hugs:

gogo

Link to comment
3 hours ago, gogoblender said:

Gooood morning Lindor!

Was just looking at your new spread sheet, its  E P I C :heart:   I was looking at it with Schot we remember when we were finding table codes for the Wiki, they were sometimes not quite what we wanted but we were able to find some great table solutions ad the tables can be beautful :sun:  

We read your notes..how did the import of information from DarkMatters go, was the database able to complete your requests to save or were there any times that you noticed saves or edits were taking a while to execute? The Wiki uses a level of *engine use*  that we keep mostly set for low level activity, but well consider increases our engine size if you feel that you're unable to save edits in a timely manner, or is there a type of functionality, search or cron job that was now working well that we could look at improving?

Thanks for really digging into this modding module you're making for new modders... youre thoughtful, generous and organized... you'll have loads of mini sacredites running around here in no time!

:hugs:

gogo

Hehe unfortunately for germany a lot of websites went down last weekend including darkmatters and the wiki. It always said the account would've been suspended. There's no explanation yet, I believe it must have to do with issues at a central internet exchange point somewhere in germany, using the tracert command revealed that the signal got lost somewhere at a class a network router. Kinda ruined my sunday lol:dntknw::lol:

At first it made me realise that I should back up important data that is currently only stored at darkmatters or the wiki. On the other hand - what would be the point of modding without darkmatters?

 

As far as editing went, there were absolutely no issues, and there were a lot of edits.

It said I couldn't generate a table with more than 1000 cells at first, so I generated a small one instead and slowly expanded it. Don't know wether passing those 1000 cells is possible this way, also didn't count wether they're already passed. But the edits went smooth so far.

 

If tables were filterable, I'd make a single huge table instead of breaking it up with my classification system. I was actually thinking about scripting my own javascript table and asking you to implement it in the wiki, but this isn't a promise.

 

I love darkmatters, I love the wiki, and not in the same way palpatine loved democracy and the republic xD.
Sending much of love:heart:

  • Appreciation 1
Link to comment

@gogoblender @Schot

On 1/16/2024 at 6:15 PM, Lindor said:

I was actually thinking about scripting my own javascript table and asking you to implement it in the wiki, but this isn't a promise.

I have done it

HTML:

Spoiler
<!DOCTYPE html>
<html>
    <head>
        <title>sortable table</title>
        <link rel="stylesheet" type="text/css" href="table.css">
    </head>
    <body>
        <script src="table.js"></script>
        
        <!-- Example Table Start -->
        <table id="Table_0">
            <!-- The table header row -->
            <tr>
                <th>
                    <!-- First column header content, has to be put in a div to ensure that the filter is put below and not next to the content -->
                    <div onclick="sortTableByColumn('Table_0', 0)">Number 1</div>
                    <!-- First column header filter -->
                    <input type="text" id="filter_t0_c0" onkeyup="filter('Table_0', 'filter_t0_c0', 0)" placeholder="filter">
                 </th>
                <th>
                    <!-- Second column header content -->
                    <div onclick="sortTableByColumn('Table_0', 1)">Number 2</div>
                    <!-- Second column header filter -->
                    <input type="text" id="filter_t0_c1" onkeyup="filter('Table_0', 'filter_t0_c1', 1)" placeholder="filter">
                </th>
                <th>
                    <!-- Third column header content -->
                    <div onclick="sortTableByColumn('Table_0', 2)">Letter</div>
                    <!-- Third column header filter -->
                    <input type="text" id="filter_t0_c2" onkeyup="filter('Table_0', 'filter_t0_c2', 2)" placeholder="filter">
                </th>
            </tr>
            <!-- The table content rows -->
            <tr>
                <td>2</td>
                <td>1</td>
                <td>a</td>
            </tr>
            <tr>
                <td>2</td>
                <td>2</td>
                <td>b</td>
            </tr>
            <tr>
                <td>1</td>
                <td>1</td>
                <td>c</td>
            </tr>
            <tr>
                <td>1</td>
                <td>2</td>
                <td>d</td>
            </tr>
            <!-- This has to always be put at the end of a table to make sure the table starts sorted on being loaded -->
            <script>
                sortTable("Table_0");
            </script>
        </table>
        <!-- Example Table End -->
        
    </body>
</html>

 

CSS:

Spoiler
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}

 

JavaScript:

Spoiler
// Sorts a tables rows by a specific column without changing the order of rows with the same content in the columns cell
// A slow but stable sorting Algorithm of O(n^2)
// "Stable" is a description of sorting algorithms in informatics and means that it does not change the order of rows with the same content
function sortTableByColumn(tableID, columnIndex) {
    var table, rows, I, runs, x, y, issorted;
    table = document.getElementById(tableID);
    rows = table.rows;
    runs = rows.length - 1;
    // the issorted var is not strictly necessary; it's there to speed the algorithm up, e.g. in case of an already sorted table
    issorted = false;
    // loop through the rows
    while ((issorted == false) && (runs > 0)) {
        issorted = true;
        // Ensure that the largest element is at the end of the run
        for (I = 1; I < runs; I++) {
            x = rows[I].getElementsByTagName("td")[columnIndex];
            y = rows[I + 1].getElementsByTagName("td")[columnIndex];
            if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
                rows[I].parentNode.insertBefore(rows[I + 1], rows[I]);
                issorted = false;
            }
        }
        runs = runs - 1;
    }
}

// Sorts a tables rows first by the last column, then the second-to-last and so on all the way up to the first column,
// ensuring that the table is always ordered by the first column.
function sortTable(tableID) {
    var length, I;
    length = document.getElementById(tableID).rows[0].cells.length - 1;
    for (I = length; I >= 0; I = I - 1) {
        sortTableByColumn(tableID, I);
    }
}

/*
// Filter a table by 
function filter(tableID, filterID, columnIndex) {
    // Declare variables
    var table, tableRows, tableRows, tableCell, tableCellContent, filterInput, filterContent, I;
    table = document.getElementById(tableID);
    tableRows = table.getElementsByTagName("tr");
    filterInput = document.getElementById(filterID);
    filterContent = filterInput.value.toLowerCase();

    // Loop through all table rows
    for (I = 0; I < tableRows.length; I++) {
        // The table cell at the column index of the row
        tableCell = tableRows[I].getElementsByTagName("td")[columnIndex];
        // Does the cell even exits or is it a none value?
        if (tableCell) {
            tableCellContent = tableCell.textContent || tableCell.innerText;
            // does tableCellContent contain filterContent somewhere?
            if (tableCellContent.toLowerCase().indexOf(filterContent) > -1) {
                tableRows[I].style.display = "";
            } else {
                tableRows[I].style.display = "none";
            }
        }
    }
}
*/

// Filter a table by 
function filter(tableID, filterID, columnIndex) {
    // Declare variables
    var table, tableRows, tableRows, tableCell, tableCellContent, filterInput, filterContent, I, j;
    table = document.getElementById(tableID);
    tableRows = table.getElementsByTagName("tr");
    filterInput = document.getElementById(filterID);
    filterContent = filterInput.value.toLowerCase();

    // Loop through all table rows
    for (I = 0; I < tableRows.length; I++) {
        // The table cell at the column index of the row
        tableCell = tableRows[I].getElementsByTagName("td")[columnIndex];
        // Does the cell even exits or is it a none value?
        if (tableCell) {
            tableCellContent = tableCell.textContent || tableCell.innerText;
            // does tableCellContent contain filterContent somewhere?
            if (tableCellContent.toLowerCase().indexOf(filterContent) > -1) {
                tableCell.setAttribute("needsToBeHidden", "0");
            } else {
                tableCell.setAttribute("needsToBeHidden", "1");
            }
        }
    }
    
    for (I = 0; I < tableRows.length; I++) {
        tableRows[I].style.display = "";
        for (j = 0; j < tableRows[0].cells.length; j++) {
            tableCell = tableRows[I].getElementsByTagName("td")[j];
            if (tableCell) {
                if (tableCell.getAttribute("needsToBeHidden") == "1") {
                    tableRows[I].style.display = "none";
                    break;
                }
            }
        }
    }
}

 

Everything commented out to make it easier to understand.

Can you implement it for the wiki? Would be awesome!
If there are extra wishes, I could provide them.

Greetings :heart:

  • Respect! 1
Link to comment
On 1/20/2024 at 3:06 PM, Lindor said:

@gogoblender @Schot

I have done it

HTML:

  Reveal hidden contents

CSS:

  Reveal hidden contents

JavaScript:

  Reveal hidden contents

Everything commented out to make it easier to understand.

Can you implement it for the wiki? Would be awesome!
If there are extra wishes, I could provide them.

Greetings :heart:

Lindor you are a beautiful sweet heart!!...cmon on for a trademark DarkMatters Kindness hug!! :hugs: I remember how you were writing about how much work it was but you got through it it...its your *thang* and what a thang! sooooo... re Wiki... were looking at it carefullly... every since a few days ago, the page has been trying to effect some kind of a cron job repeatedly ...and when it attempts to do this, all the resources of the two sites drop.. its happened a numerous times in a row to us now so we got a bit scared, reverted the last page of edits and put wiki asleep... this week Schot's gonna look at it more carefully he needs to understand the code and ...when hes has seen *The Pattern!!!* hell bring it back online...and of course sir, you, friend...you shall have your page upon it and eat it too!!

:dance2: unless of course Schot....tells us not 

:eek:

:D

:blink:

:4rofl:

gogo

Link to comment

 

8 hours ago, gogoblender said:

Lindor you are a beautiful sweet heart!!...cmon on for a trademark DarkMatters Kindness hug!! :hugs: I remember how you were writing about how much work it was but you got through it it...its your *thang* and what a thang! sooooo... re Wiki... were looking at it carefullly... every since a few days ago, the page has been trying to effect some kind of a cron job repeatedly ...and when it attempts to do this, all the resources of the two sites drop.. its happened a numerous times in a row to us now so we got a bit scared, reverted the last page of edits and put wiki asleep... this week Schot's gonna look at it more carefully he needs to understand the code and ...when hes has seen *The Pattern!!!* hell bring it back online...and of course sir, you, friend...you shall have your page upon it and eat it too!!

:dance2: unless of course Schot....tells us not 

:eek:

:D

:blink:

:4rofl:

gogo

For the table code:

Well, it's much or little work depending on the perspective. The sorting algorithm e.g., it's not the best, I can already see that I could improve it vastly with just a couple of lines of code, and I could've spent some time to implement a proper sorting algorithm, probably stable mergesort as it's my favourite, instead. I just didn't give it as much thought, we're dealing with tiny sets of data and don't need to sort thousands of times per second, so it's just not that relevant. But it could be better.

And then the real work needs to be done by schot as he needs to write the algorithm to convert plain text into HTML in order to implement it into the wiki. I could provide that as well, but I don't know which programming language or API you're using to generate wiki pages.

Compared to what I did with the Oren-Nayar Fur Shader Pack or the Blueprint.txt Overhaul, this is kindergarten programming. But given the small amount of free time I have, it's a lot of work for me now.

 

 

For the cron job:

:twitch::scare2:

I thought I was the only one for whom the Darkmatters and Wiki page didn't respond anymore the previous weekend. So it wasn't a Germany issue, then. Well that's odd. Why on earth should a random wiki page attack your servers, and then even so 'successfully'? I sincerely hope that the system I have is not infested with some sort of malicious software and now infested your infrastructure. That would be worst case scenario. Windows Defender says I'm alright, but who knows.

 

 

For the kind words:

I'm anxiously grateful. If I were you, I'd suspect that Lindor guy might've something to do with the attacks. He seems to have the skills and can be quite temperamentfull at times.

After the two pages went down, and right after it was back you removed the wiki page I created, I suspicioned something like that but I thought it was just 'normal' paranoia. Can't believe that it actually turned out to be true. If you or schot need something from me in order to find *The Pattern*, let me know. I have no intention to do any harm, my intention is to bring in new modders creating interesting new mods which I may wanna try out myself, like Vishanka, secondly I wanna make it easier for myself completing my own mod and finally -can't really deny that- I love when my work gets admired a little bit.:blush::wub: Believe it or not, the experiences I made here with all of you literally saved my life.

@Flix @Dax @gogoblender @dimitrius154 @Vishanka @idbeholdME

You all don't know how important you had become to me. It feels so good to finally be appreciated. That's something which from the moment I was born up to the moment I joined the darkmatters community, nobody ever gave to me. Now that my personal life has finally become important to me and I have things and people to care about, naturally the time I spend here somewhat diminishes. But I will never forget what you mean to me and how you were the candlelight in my darkest time. Maybe I can share some of my personal story with some of you via PM if you're interested. Be warned that it's quite an emotional rollercoaster.

So yeah, thanks for being so nice to me. Hope the wiki is back up and running soon.

  • Like! 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...
Please Sign In or Sign Up