• Howdy, Freund! Du scheinst neu hier zu sein. Warum erstellst du dir nicht einen Forenaccount, um mitdiskutieren zu können? Du kannst dich hier registrieren.
    Du hast schon einen Forenaccount? Dann kannst du dich hier einloggen. Viel Spaß!

    Was denkst du zum Beispiel über diese Themen?

Bestätigt ItemSet.getMergedBonus arbeitet fehlerhaft

xyzabcd

Entdecker
Hallo,

In tw2game.js gibt es im eine Funktion west.item.ItemSet.getMergedBonus, die etwas fehlerhaft ist.
Texte in Fettschrift sind Kommentare von mir.

JavaScript:
    getMergedBonus: function() {
        if (this._mergedBonus)
            return this._mergedBonus;
[B]// das ist die Initialisierung. Man achte darauf, dass "dollar" nicht da ist, oder auch "damage".[/B]
        var bonus = {
            attribute: {},
            skill: {},
            job: {},
            speed: 0,
            regen: 0,
            luck: 0,
            pray: 0,
            fortbattle: {},
            experience: 0
        }, bonusObjects = this.getMergedStages(), i, b, bonusExtractor = new west.item.BonusExtractor(Character);
        var merge = function(b, value) {
            switch (b.type) {
            case 'skill':
            case 'attribute':
            case 'fortbattle':
                bonus[b.type][b.name] = (bonus[b.type][b.name] || 0) + value;
                break;
            case 'job':
                bonus.job[b.job] = (bonus.job[b.job] || 0) + value;
                break;
            case 'speed':
            case 'regen':
            case 'luck':
            case 'pray':
            case 'experience':
[B]// die nächsten beiden fehlen oben in der Initialisierung.[/B]
           [B] case 'damage': [/B]
            [B]case 'dollar':[/B]
                bonus[b.type] += value;
                break;
            case 'character':
                merge(b.bonus, bonusExtractor.getCharacterItemValue(b));
                break;
            default:
                if (window.DEBUG)
                    console.log('ItemSet: unknown bonus to merge: ', b.type);
                break;
            }
        };
        for (i = 0; i < bonusObjects.length; i++) {
            b = bonusObjects[i];
            merge(b, b.value);
        }
Wenn man die Funktion jetzt benutzt, weil man gerade eine Funktion basteln will, die eine Ausrüstung mit maximalem Dollar-Bonus liefert, bekommt man halt ein NaN zurück ("dies ist keine Zahl" - undefiniert plus X ist halt definitiv keine Zahl), was den armen Programmierer, der gerade versucht, sich mit möglichst wenig Aufwand durch's Leben zu schlagen, und hofft, möglichst viele sowieso schon vorhandene Funktionen benutzen zu können, 60 Minuten kostet.

Das hat für das Spiel selbst keine Auswirkungen, glaube ich, weil von der Ausgabe von getMergedBonus nur job (=Arbeitspunktbonus), skills und attributes genutzt werden.

Gruß, Uwe
 
Oben