function go_to($exit)
 {
     $obj = $this->exits;
     // Si no hay una salida definida...
     if (!property_exists($obj, $exit)) {
         return array('goto', 'FAIL');
     }
     // Hay una salida definida...
     $data = $obj->{$exit};
     // ** Simple format
     if (is_string($data)) {
         return $this->check_visited_and_goto($data);
     }
     // ** Complex format
     if (property_exists($data, 'required')) {
         $required = new Required();
         if ($required->check($data->required)) {
             return $this->check_visited_and_goto($data->target);
         }
         // No se cumplen requisitos
         if (property_exists($data, 'else')) {
             return $this->check_visited_and_goto($data->else);
         } else {
             return array('goto', $data->excuse);
         }
     }
     if (property_exists($data, 'target')) {
         return $this->check_visited_and_goto($data->target);
     }
     // BAD FORMAT JSON
 }
 function take($words)
 {
     //$words = find_synonyms($words);
     $obj = load(ITEMFILE, $words);
     // If object not exist
     if ($obj === NULL) {
         return array("coger", "FAIL");
     }
     $objinv = load(USERFILE, 'inventory', $words);
     // Si el objeto está en la room inicial, lo procesa
     if ($objinv == NULL && $obj->room == CURRENT_ROOM) {
         // Ya lo tengo
         if ($objinv == "1") {
             return array("coger", __('INVENTORY_ITEM_ALREADY'));
         }
         // ** Complex format
         // No hay restricciones
         if (!property_exists($obj, 'required')) {
             if (!$objinv) {
                 $this->check_optional_param($obj);
                 save(USERFILE, 'inventory', $words, "1");
                 return array("coger", $obj->message);
             }
             return array("coger", "FAIL");
         }
         // ¿Se cumplen las restricciones?
         $required = new Required();
         if ($required->check($obj->required)) {
             // Only first time
             if (!$objinv) {
                 $this->check_optional_param($obj);
                 save(USERFILE, 'inventory', $words, "1");
                 return array("coger", $obj->message);
             }
         }
         return array("coger", property_exists($obj, 'excuse') ? $obj->excuse : "FAIL");
     }
     // Caso especial: El objeto se ha dejado en una room (no procesar restricciones)
     if ($objinv == CURRENT_ROOM) {
         save(USERFILE, 'inventory', $words, "1");
         return array("coger", '-' . $words);
     }
     // No se cumplen las restricciones
     // Si no hay excusa definida => objeto no encontrado
     return array("coger", "FAIL");
     //return (property_exists($obj, 'excuse') ? $obj->excuse : "FAIL");
 }
Exemple #3
0
 /**
  * @param mixed $value
  * @param null  $field
  * @param null  $allFields
  *
  * @return bool
  *
  * @since 2.0
  */
 public function validate($value, $field = null, $allFields = null)
 {
     $requiredField = $this->getParameter();
     if ($allFields !== null and array_key_exists($requiredField, $allFields)) {
         return parent::validate($value, $field, $allFields);
     }
     return true;
 }
 function check()
 {
     // typecast fix for reverse order object (???)
     // (object)array_reverse((array)$this->ends)
     foreach ((object) $this->ends as $k => $v) {
         // No se cumplen los requisitos para este final
         if (property_exists($v, 'required')) {
             $required = new Required();
             if (!$required->check($v->required)) {
                 continue;
             }
         }
         save(USERFILE, 'info', 'end', $k);
         return TRUE;
     }
     return FALSE;
     // No hay final
 }
Exemple #5
0
 public function __construct($message = null, $code = null, $previous = null)
 {
     parent::__construct('No APItoken is set, use \\Paynl\\Config::setApiToken() to set the API token');
 }