]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/secret.qc
Merge branch 'master' into Mario/buff_updates
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / secret.qc
index e5486ac755a6b8cf39aa9d9043e2580485686ba6..30fbedc4948a27187949b09a43348ed7fe5c9040 100644 (file)
@@ -1,29 +1,34 @@
-entity secret_counter;
+#if defined(CSQC)
+#elif defined(MENUQC)
+#elif defined(SVQC)
+       #include "../dpdefs/progsdefs.qh"
+    #include "../common/util.qh"
+    #include "defs.qh"
+    #include "secret.qh"
+#endif
 
-/*
-.count - total number of secrets to find
-.cnt - number of secrets found
-*/
-void secret_counter_create() {
-       secret_counter = spawn();
-       secret_counter.classname = "secret_counter";
-       secret_counter.count = 0;
-       secret_counter.cnt = 0;
+void secrets_setstatus() {
+       self.stat_secrets_total = secrets_total;
+       self.stat_secrets_found = secrets_found;
 }
 
-/*
-A secret has been found!
-*/
+/**
+ * A secret has been found (maybe :P)
+ */
 void trigger_secret_touch() {
        // only a player can trigger this
-       if (other.classname != "player")
+       if (!IS_PLAYER(other))
                return;
-       
+
        // update secrets found counter
-       secret_counter.cnt += 1;
+       secrets_found += 1;
        //print("Secret found: ", ftos(secret_counter.cnt), "/");
        //print(ftos(secret_counter.count), "\n");
-       
+
+       // centerprint message (multi_touch() doesn't always call centerprint())
+       centerprint(other, self.message);
+       self.message = "";
+
        // handle normal trigger features
        multi_touch();
        remove(self);
@@ -44,39 +49,35 @@ Trigger secret can only be trigger by a player's touch and can not be a target i
 */
 void spawnfunc_trigger_secret() {
        // FIXME: should it be disabled in most modes?
-       
-       // create secret counter
-       if not(secret_counter)
-               secret_counter_create();
-       
+
        // update secrets count
-       secret_counter.count += 1;
-       
+       secrets_total += 1;
+
        // add default message
        if (self.message == "")
                self.message = "You found a secret!";
-       
+
        // set default sound
        if (self.noise == "")
-       if not(self.sounds)
+       if (!self.sounds)
                self.sounds = 1; // misc/secret.wav
-       
+
        // this entity can't be a target itself!!!!
        self.targetname = "";
-       
+
        // you can't just shoot a room to find it, can you?
        self.health = 0;
-       
+
        // a secret can not be delayed
        self.delay = 0;
-       
+
        // convert this trigger to trigger_once
        self.classname = "trigger_once";
        spawnfunc_trigger_once();
-       
+
        // take over the touch() function, so we can mark secret as found
        self.touch = trigger_secret_touch;
        // ignore triggering;
-       self.use = SUB_Null;
+       self.use = func_null;
 }