Mantis - X-Force
|
Viewing Issue Advanced Details |
|
ID:
|
Category:
|
Severity:
|
Reproducibility:
|
Date Submitted:
|
Last Update:
|
2101 |
Forschung |
crash |
have not tried |
18.05.09 13:37 |
24.06.09 03:00 |
|
Reporter:
|
LennStar |
Platform:
|
|
|
Assigned To:
|
Natter |
OS:
|
|
|
Priority:
|
normal |
OS Version:
|
|
|
Status:
|
closed |
Product Version:
|
V0.915a05 |
|
Product Build:
|
|
Resolution:
|
fixed |
|
Projection:
|
none |
|
|
|
ETA:
|
none |
Fixed in Version:
|
V0.915b01 |
|
|
Summary:
|
0002101: Autospie-Zeit 0 -> keine Autopsie (Übergangslösung) |
Description:
|
Hab den wilden Bären im Galwar erforschen wollen (Autopsie). Absturz.
Ich denke mal wegen den 0 Forschungsstunden. |
Steps To Reproduce:
|
|
Additional Information:
|
Fehlermeldung: Index des laufenden Projektes konnte nicht ermittelt werden 24377300 (C:\XFQuellcode\v0915\game\source\components\ForschList.pas, Zeile 1516)
procedure TForschList.NextRound(Minuten: Integer);
var
Dummy : Integer;
DummyFortschrittStatus1 : Single;
DummyFortschrittStatus2 : Single;
DummyFortschrittIndex1 : Integer;
DummyFortschrittIndex2 : Integer;
DummyProjektIndex : Integer;
function ForschrittIndex(Rest: Single): Integer;
begin
if Trunc(Rest)>20 then //Wenn noch nicht über 80%, dann 0% Chance
Result := -1
else if Rest<=0 then //Wenn über 100% -> Maximale Chance
Result := 10
else
begin
Result := ((20-Trunc(Rest)) div 2);
end;
end;
begin
// Forschungsprojekte
for Dummy:=0 to ForscherCount-1 do
begin
DummyProjektIndex := GetIndexOfRunningProjectId(fForscher[Dummy].ID);
// Forschung
if DummyProjektIndex >= 0 then
begin
//Dies stimmt nicht ganz, da die Runde länger dauern kann, als Projektrestzeit
Inc(fForscher[Dummy].ForschTime, Minuten);
//Wie viel Prozent blieb übrig? // division durch Null möglich
DummyFortschrittStatus1 := Projekte[DummyProjektIndex].Hour/Projekte[DummyProjektIndex].Gesamt*100;
// Ein Forscher schafft mit Faehigkeit 80 eine Forscher Stunde
Projekte[DummyProjektIndex].Hour:=Projekte[DummyProjektIndex].Hour-((fForscher[Dummy].Sience/80)*(Minuten/60));
//Wie viel Prozent bleiben jetzt übrig?
DummyFortschrittStatus2 := Projekte[DummyProjektIndex].Hour/Projekte[DummyProjektIndex].Gesamt*100;
//80 Prozent schon erreicht?
if DummyFortschrittStatus2<=20 then
begin
DummyFortschrittIndex1 := ForschrittIndex(DummyFortschrittStatus1);
DummyFortschrittIndex2 := ForschrittIndex(DummyFortschrittStatus2);
//Bei überschritten von 80%, bei allen 2% mal würfeln und gucken, ob Durchbruch kommt
while ((DummyFortschrittIndex1<10) and (DummyFortschrittIndex1<>DummyFortschrittIndex2)) or (DummyFortschrittIndex1=10) do
begin
Inc(DummyFortschrittIndex1);
if (Random(100)+1)<=5+(DummyFortschrittIndex1*8.5) then //1..100 < als 5 + (8,5 * Index) (also 5..90)
begin
ProjektEnd(DummyProjektIndex);
// if ProjektCount=0 then exit; //Jim: Ist dies noch richtig? z.B. wegen Patente da unten
if ProjektCount=0 then
break; // break ist besser
DummyFortschrittIndex1 := DummyFortschrittIndex2;
end;
end;
end;
end |
Relationships | related to | 0002163 | closed | Natter | Alle Forschungen werden nacheinander sofort fertiggestellt |
|
Attached Files:
|
error-18-05-2009-13-30.txt [^] (7,544 bytes) 18.05.09 13:37 |
Notes |
|
(0003767)
|
DirkF
|
20.05.09 13:37
|
|
0=automatisch erforscht funktioniert anscheinent nicht bei autopsien.
ich werde das erstmal im spielsatz abfangen, indem ich dem Baer eine Forschungszeit=1 gebe.
eine Korrektur zur 915beta halte ich (noch) nicht fuer sinnvoll, da sich dies eventuell mit einer anderen planung in einer zukuenftigen version automatisch erledigt. |
|
|
(0003768)
|
Natter
|
20.05.09 13:58
|
|
Ich glaube nicht, dass es daran liegt. Der Fehler ist nämlich nicht reproduzierbar. |
|
|
(0003769)
|
Natter
|
20.05.09 14:13
|
|
Hast du den Spielsatz geändert? Die ID gibt es im GalWar glaube garnicht. Und die ID des Spielsatzes ist bei deiner error.txt auch anders als bei mir (letzteres könnte aber auch daran liegen, dass ich den bei mir geändert habe, da bin ich mir nicht mehr ganz sicher). |
|
|
(0003771)
|
LennStar
|
20.05.09 17:20
|
|
Ich bin mir ziemlich sicher, dass ich nichts geändert habe. Und wenn man vom Zeitstempel ausgeht, ist das auch sehr unwahrscheinlich. (Allerdings auch nicht logisch?)
GalWar: 13.5. 8:40Uhr
Da stand DirkFs Post schon, ich habe da aber definitiv noch nichts runtergeladen, habs ja erst am Abend gesehen.
Hast du zufällig das hochgeladen und in DirkFs Post den Link hingesetzt und dann deine Ergänung gepostet? Dann würde der Zeitstempel hinhauen. Und damit ist die Version von dir. Du warst doch der Kompilierer, stimmts? |
|
|
(0003772)
|
Natter
|
20.05.09 17:47
|
|
Wenn du nichts geändert hast, dann war ich das vermutlich (hab die Spielsatz-IDs aus der error.txt verglichen). Das Datum des Posts im Forum stimmt nicht. DirkF hatte den Text Teamintern gepostet, und ich habe ihn später einfach ins Spielsatzerstellerforum verschoben.
Trtzdem ist die ID des Forschungsprojektes merkwürdig, da sie ja im GalWar eigentlich nicht vorkommt. |
|
|
(0003774)
|
LennStar
|
20.05.09 18:08
|
|
Also falls das die ID ist: 24377300 ist sie bei mir beim Bären auch nicht. 2658443849 ist meine Bär-ID
Vielleicht war ja was korrupt und weil ich neu installiert (und auch runtergeladen habe) stimmts jetzt auch bei mir.
Werd beim GalWar noch mal nachsehen, obs wieder auftritt. Hörst dann aber wahrscheinlich erst Montag von mir. |
|
|
(0003781)
|
Natter
|
22.05.09 18:19
|
|
Also eventuell hängt es doch mit der 0 zusammen. Die Autopsien werden ja nicht automatisch erforscht, wenn die Zeit 0 ist, sondern erst, wenn sie in der Forschungsseite dran sind.
Das ist aber ein Problem - denn dort wird nicht mit einer Forschungszeit 0 gerechnet (würde normalerweise schon vorher abgefangen, da solche Forschungen nicht im Labor landen sollten). Es gibt eine Division durch 0. Bei mir hat das gerade dazu geführt, dass alle ausstehenden Forschungsprojekte in der gleichen Runde erforscht wurden.
DummyFortschrittStatus1 := Projekte[DummyProjektIndex].Hour/Projekte[DummyProjektIndex].Gesamt*100;
DummyFortschrittStatus2 := Projekte[DummyProjektIndex].Hour/Projekte[DummyProjektIndex].Gesamt*100; |
|
|
(0003798)
|
DirkF
|
23.05.09 18:44
|
|
Ich habe die Zeit für den Bären jetzt angehoben.
Ansonsten würde ich vorschlagen das im Editor abzufangen (Ticket-Titel entsprechend geändert), da sich das Thema mit einigen Planungen für die nächsten Versionen irgendwann automatisch erledigt, und Änderungen an der Forschungsliste bis dahin problematisch werden könnten... |
|
|
(0003799)
|
Natter
|
23.05.09 19:00
|
|
Ich hab jetzt noch eine andere Variante gewählt. Bei ForschTime=0 wird garkeine Autopsie verfügbar (damit auch kein Eintrag in die UFOPädie). Das ist erstmal eine Übergangslösung, und kann sich nach Überarbeitung der ForschList nochmal ändern. |
|