Kraeuter: age raus, stateflag rein
Der Timer age in den Kraeutern ist als Zeitinfo
ueberfluessig, da die Erschaffungszeit per
object_time() ermittelbar ist.
Gleichzeitig wurde age als Statusflag fuer den
Getrocknetzustand genutzt.
Daher jetzt age entfernt und object_time() benutzen
und den Status in der Variable state ablegen.
Change-Id: Ied8e8743329316ce6a353230df074760f1481b7a
diff --git a/std/items/kraeuter/kraut.c b/std/items/kraeuter/kraut.c
index 0669b8d..87adfb3 100644
--- a/std/items/kraeuter/kraut.c
+++ b/std/items/kraeuter/kraut.c
@@ -12,7 +12,7 @@
// Die plantID wird fuer ungueltig erschaffene Kraeuter auf -1 gesetzt.
#define DRIED_PLANT -1
-private int age=time();
+private int state;
// enthaelt die Nummer des Krauts
private int plantId;
// enthaelt den Pfad des clonenden Objekts
@@ -60,9 +60,9 @@
return 0;
if (plantId==-1)
return str+" (unwirksam).\n";
- else if (age==DRIED_PLANT)
+ else if (state==DRIED_PLANT)
return str+" (getrocknet).\n";
- else if (age+FRESH_TIME+PLANT_LIFETIME<time())
+ else if (object_time() + FRESH_TIME + PLANT_LIFETIME < time())
return str+" (verfault).\n";
return str+".\n";
}
@@ -77,16 +77,15 @@
{
int factor;
// schon getrocknet oder nicht aelter als 6 h?
- // Dann keine weitere Reduktion.
- if ( age == DRIED_PLANT || age+FRESH_TIME > time())
+ // Dann keine (weitere) Reduktion.
+ if ( state == DRIED_PLANT || object_time() + FRESH_TIME > time())
factor = 100;
// >30 Stunden nach dem Pfluecken ist das Kraut verschimmelt.
- else if ( age + FRESH_TIME + PLANT_LIFETIME < time() )
- factor = 1;
+ else if ( object_time() + FRESH_TIME + PLANT_LIFETIME < time() )
// Zeit zwischen 6 und 30 Stunden nach dem Pfluecken in 99 gleichmaessige
// Abschnitte unterteilen. 24 h sind 86400 s, 86400/99 = 873.
else
- factor=(time()-age-FRESH_TIME)/873;
+ factor=(time() - object_time() - FRESH_TIME)/873;
return QueryProp(P_QUALITY)*factor/100;
}
@@ -94,7 +93,7 @@
// Wie lange (in Sekunden) ist das Kraut noch haltbar?
public int TimeToLive()
{
- if ( age == DRIED_PLANT )
+ if ( state == DRIED_PLANT )
return __INT_MAX__;
return object_time() + FRESH_TIME + PLANT_LIFETIME - time();
}
@@ -110,7 +109,7 @@
static string _query_nosell()
{
- if (age != DRIED_PLANT)
+ if (state != DRIED_PLANT)
return "Mit ungetrockneten Kraeutern handele ich nicht. Die verderben "
"immer so schnell im Lager, und dann werde ich sie nicht wieder los.";
return 0;
@@ -139,9 +138,9 @@
public void DryPlant(int qual)
{
// Keine mehrfache Trocknung zulassen.
- if ( age == DRIED_PLANT )
+ if ( state == DRIED_PLANT )
return;
-
+
// Nur bestimmte Objekte duerfen Trocknungen ausloesen.
if ( member(DRYING_ALLOWED, load_name(previous_object())) == -1 )
return;
@@ -149,10 +148,10 @@
// Qualitaet auf 100 deckeln.
if ( qual>100 )
qual = 100;
-
+
// Qualitaet mittels PlantQuality() runterskalieren.
qual = PlantQuality()*qual/100;
-
+
if ( qual < 1 ) {
if(objectp(this_player()))
tell_object(this_player(),
@@ -161,7 +160,7 @@
return;
}
// Kraut als getrocknet kennzeichnen.
- age=DRIED_PLANT;
+ state=DRIED_PLANT;
quality = qual;
}
@@ -173,7 +172,6 @@
if (plantId != 0)
return -1;
cloner=0;
- age=time();
if (catch(cloner=call_other(PLANTMASTER, "CheckPlant", new_id)) || !cloner)
new_id = -1;
return (plantId=new_id);
@@ -189,7 +187,7 @@
return cloner;
}
-nomask int QueryDried()
+nomask int QueryDried()
{
- return (age == DRIED_PLANT);
+ return (state == DRIED_PLANT);
}