Loading

person-graphics-updates

  1. diff --git doc/data_format.rst doc/data_format.rst
  2. index 1595824..c949b15 100644
  3. --- doc/data_format.rst
  4. +++ doc/data_format.rst
  5. @@ -1442,7 +1442,7 @@ Persons
  6.  =======
  7.  Persons are an important concept in the game. Their properties are defined in
  8.  the game blocks below.
  9. -FreeRCT can read blocks with version 1.
  10. +FreeRCT can read blocks with version 1 or 2.
  11.  
  12.  ======  ======  ==========================================================
  13.  Offset  Length  Description
  14. @@ -1472,8 +1472,11 @@ Offset  Length  Description
  15.  A person type defines the kind of persons:
  16.  
  17.  - *Any* (0) Any kind of person (eg persons are not shown).
  18. -- *Pillar* (8) Guests from the Pillar Planet (test graphics).
  19. -- *Earth* (16) Earth-bound persons.
  20. +- *Guest* (8) Guests.
  21. +- *Handyman* (17) Handymen.
  22. +- *Mechanic* (18) Mechanics.
  23. +- *Guard* (19) Security guards.
  24. +- *Entertainer* (20) Entertainers.
  25.  
  26.  The *any* kind is used as fall back.
  27.  
  28. @@ -1490,6 +1493,8 @@ Version history
  29.  ...............
  30.  
  31.  - 1 (20120708) Initial version.
  32. +- 2 (20141230) Renamed type 'Pillar' to 'Guest', removed type 'Earth', and
  33. +  added staff types (Handyman, Mechanic, Guard, Entertainer).
  34.  
  35.  
  36.  Animation
  37. diff --git graphics/rcd/freerct.txt graphics/rcd/freerct.txt
  38. index 10ff505..36f424d 100644
  39. --- graphics/rcd/freerct.txt
  40. +++ graphics/rcd/freerct.txt
  41. @@ -651,7 +651,7 @@ file("freerct.rcd") {
  42.     // Person type graphics.
  43.     PRSG {
  44.         person_graphics {
  45. -           person_type: pillar;
  46. +           person_type: guest;
  47.             recolour {
  48.                 original: grey;
  49.                 replace: bitset(yellow, green, blue, orange, pink);
  50. @@ -661,14 +661,14 @@ file("freerct.rcd") {
  51.  
  52.     // NE walking.
  53.     ANIM {
  54. -       person_type: pillar;
  55. +       person_type: guest;
  56.         anim_type: walk_ne;
  57.  
  58.         frame_data { duration: 40; change_x: -4; change_y: 0; }
  59.     }
  60.     ANSP {
  61.         tile_width: 64;
  62. -       person_type: pillar;
  63. +       person_type: guest;
  64.         anim_type: walk_ne;
  65.  
  66.         sprite {
  67. @@ -679,14 +679,14 @@ file("freerct.rcd") {
  68.  
  69.     // SE walking.
  70.     ANIM {
  71. -       person_type: pillar;
  72. +       person_type: guest;
  73.         anim_type: walk_se;
  74.  
  75.         frame_data { duration: 40; change_x: 0; change_y: 4; }
  76.     }
  77.     ANSP {
  78.         tile_width: 64;
  79. -       person_type: pillar;
  80. +       person_type: guest;
  81.         anim_type: walk_se;
  82.  
  83.         sprite {
  84. @@ -697,14 +697,14 @@ file("freerct.rcd") {
  85.  
  86.     // SW walking.
  87.     ANIM {
  88. -       person_type: pillar;
  89. +       person_type: guest;
  90.         anim_type: walk_sw;
  91.  
  92.         frame_data { duration: 40; change_x: 4; change_y: 0; }
  93.     }
  94.     ANSP {
  95.         tile_width: 64;
  96. -       person_type: pillar;
  97. +       person_type: guest;
  98.         anim_type: walk_sw;
  99.  
  100.         sprite {
  101. @@ -715,14 +715,346 @@ file("freerct.rcd") {
  102.  
  103.     // NW walking.
  104.     ANIM {
  105. -       person_type: pillar;
  106. +       person_type: guest;
  107.         anim_type: walk_nw;
  108.  
  109.         frame_data { duration: 40; change_x: 0; change_y: -4; }
  110.     }
  111.     ANSP {
  112.         tile_width: 64;
  113. -       person_type: pillar;
  114. +       person_type: guest;
  115. +       anim_type: walk_nw;
  116. +
  117. +       sprite {
  118. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  119. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  120. +       }
  121. +   }
  122. +
  123. +   // Handyman - person type graphics.
  124. +   PRSG {
  125. +       person_graphics {
  126. +           person_type: handyman;
  127. +           recolour {
  128. +               original: grey;
  129. +               replace: bitset(grey);
  130. +           }
  131. +       }
  132. +   }
  133. +
  134. +   // NE walking.
  135. +   ANIM {
  136. +       person_type: handyman;
  137. +       anim_type: walk_ne;
  138. +
  139. +       frame_data { duration: 40; change_x: -4; change_y: 0; }
  140. +   }
  141. +   ANSP {
  142. +       tile_width: 64;
  143. +       person_type: handyman;
  144. +       anim_type: walk_ne;
  145. +
  146. +       sprite {
  147. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  148. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  149. +       }
  150. +   }
  151. +
  152. +   // SE walking.
  153. +   ANIM {
  154. +       person_type: handyman;
  155. +       anim_type: walk_se;
  156. +
  157. +       frame_data { duration: 40; change_x: 0; change_y: 4; }
  158. +   }
  159. +   ANSP {
  160. +       tile_width: 64;
  161. +       person_type: handyman;
  162. +       anim_type: walk_se;
  163. +
  164. +       sprite {
  165. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  166. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  167. +       }
  168. +   }
  169. +
  170. +   // SW walking.
  171. +   ANIM {
  172. +       person_type: handyman;
  173. +       anim_type: walk_sw;
  174. +
  175. +       frame_data { duration: 40; change_x: 4; change_y: 0; }
  176. +   }
  177. +   ANSP {
  178. +       tile_width: 64;
  179. +       person_type: handyman;
  180. +       anim_type: walk_sw;
  181. +
  182. +       sprite {
  183. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  184. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  185. +       }
  186. +   }
  187. +
  188. +   // NW walking.
  189. +   ANIM {
  190. +       person_type: handyman;
  191. +       anim_type: walk_nw;
  192. +
  193. +       frame_data { duration: 40; change_x: 0; change_y: -4; }
  194. +   }
  195. +   ANSP {
  196. +       tile_width: 64;
  197. +       person_type: handyman;
  198. +       anim_type: walk_nw;
  199. +
  200. +       sprite {
  201. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  202. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  203. +       }
  204. +   }
  205. +
  206. +   // Mechanic - person type graphics.
  207. +   PRSG {
  208. +       person_graphics {
  209. +           person_type: mechanic;
  210. +           recolour {
  211. +               original: grey;
  212. +               replace: bitset(grey);
  213. +           }
  214. +       }
  215. +   }
  216. +
  217. +   // NE walking.
  218. +   ANIM {
  219. +       person_type: mechanic;
  220. +       anim_type: walk_ne;
  221. +
  222. +       frame_data { duration: 40; change_x: -4; change_y: 0; }
  223. +   }
  224. +   ANSP {
  225. +       tile_width: 64;
  226. +       person_type: mechanic;
  227. +       anim_type: walk_ne;
  228. +
  229. +       sprite {
  230. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  231. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  232. +       }
  233. +   }
  234. +
  235. +   // SE walking.
  236. +   ANIM {
  237. +       person_type: mechanic;
  238. +       anim_type: walk_se;
  239. +
  240. +       frame_data { duration: 40; change_x: 0; change_y: 4; }
  241. +   }
  242. +   ANSP {
  243. +       tile_width: 64;
  244. +       person_type: mechanic;
  245. +       anim_type: walk_se;
  246. +
  247. +       sprite {
  248. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  249. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  250. +       }
  251. +   }
  252. +
  253. +   // SW walking.
  254. +   ANIM {
  255. +       person_type: mechanic;
  256. +       anim_type: walk_sw;
  257. +
  258. +       frame_data { duration: 40; change_x: 4; change_y: 0; }
  259. +   }
  260. +   ANSP {
  261. +       tile_width: 64;
  262. +       person_type: mechanic;
  263. +       anim_type: walk_sw;
  264. +
  265. +       sprite {
  266. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  267. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  268. +       }
  269. +   }
  270. +
  271. +   // NW walking.
  272. +   ANIM {
  273. +       person_type: mechanic;
  274. +       anim_type: walk_nw;
  275. +
  276. +       frame_data { duration: 40; change_x: 0; change_y: -4; }
  277. +   }
  278. +   ANSP {
  279. +       tile_width: 64;
  280. +       person_type: mechanic;
  281. +       anim_type: walk_nw;
  282. +
  283. +       sprite {
  284. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  285. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  286. +       }
  287. +   }
  288. +
  289. +   // Security guard - person type graphics.
  290. +   PRSG {
  291. +       person_graphics {
  292. +           person_type: guard;
  293. +           recolour {
  294. +               original: grey;
  295. +               replace: bitset(grey);
  296. +           }
  297. +       }
  298. +   }
  299. +
  300. +   // NE walking.
  301. +   ANIM {
  302. +       person_type: guard;
  303. +       anim_type: walk_ne;
  304. +
  305. +       frame_data { duration: 40; change_x: -4; change_y: 0; }
  306. +   }
  307. +   ANSP {
  308. +       tile_width: 64;
  309. +       person_type: guard;
  310. +       anim_type: walk_ne;
  311. +
  312. +       sprite {
  313. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  314. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  315. +       }
  316. +   }
  317. +
  318. +   // SE walking.
  319. +   ANIM {
  320. +       person_type: guard;
  321. +       anim_type: walk_se;
  322. +
  323. +       frame_data { duration: 40; change_x: 0; change_y: 4; }
  324. +   }
  325. +   ANSP {
  326. +       tile_width: 64;
  327. +       person_type: guard;
  328. +       anim_type: walk_se;
  329. +
  330. +       sprite {
  331. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  332. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  333. +       }
  334. +   }
  335. +
  336. +   // SW walking.
  337. +   ANIM {
  338. +       person_type: guard;
  339. +       anim_type: walk_sw;
  340. +
  341. +       frame_data { duration: 40; change_x: 4; change_y: 0; }
  342. +   }
  343. +   ANSP {
  344. +       tile_width: 64;
  345. +       person_type: guard;
  346. +       anim_type: walk_sw;
  347. +
  348. +       sprite {
  349. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  350. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  351. +       }
  352. +   }
  353. +
  354. +   // NW walking.
  355. +   ANIM {
  356. +       person_type: guard;
  357. +       anim_type: walk_nw;
  358. +
  359. +       frame_data { duration: 40; change_x: 0; change_y: -4; }
  360. +   }
  361. +   ANSP {
  362. +       tile_width: 64;
  363. +       person_type: guard;
  364. +       anim_type: walk_nw;
  365. +
  366. +       sprite {
  367. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  368. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  369. +       }
  370. +   }
  371. +
  372. +   // Entertainer - person type graphics.
  373. +   PRSG {
  374. +       person_graphics {
  375. +           person_type: entertainer;
  376. +           recolour {
  377. +               original: grey;
  378. +               replace: bitset(grey);
  379. +           }
  380. +       }
  381. +   }
  382. +
  383. +   // NE walking.
  384. +   ANIM {
  385. +       person_type: entertainer;
  386. +       anim_type: walk_ne;
  387. +
  388. +       frame_data { duration: 40; change_x: -4; change_y: 0; }
  389. +   }
  390. +   ANSP {
  391. +       tile_width: 64;
  392. +       person_type: entertainer;
  393. +       anim_type: walk_ne;
  394. +
  395. +       sprite {
  396. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  397. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  398. +       }
  399. +   }
  400. +
  401. +   // SE walking.
  402. +   ANIM {
  403. +       person_type: entertainer;
  404. +       anim_type: walk_se;
  405. +
  406. +       frame_data { duration: 40; change_x: 0; change_y: 4; }
  407. +   }
  408. +   ANSP {
  409. +       tile_width: 64;
  410. +       person_type: entertainer;
  411. +       anim_type: walk_se;
  412. +
  413. +       sprite {
  414. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  415. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  416. +       }
  417. +   }
  418. +
  419. +   // SW walking.
  420. +   ANIM {
  421. +       person_type: entertainer;
  422. +       anim_type: walk_sw;
  423. +
  424. +       frame_data { duration: 40; change_x: 4; change_y: 0; }
  425. +   }
  426. +   ANSP {
  427. +       tile_width: 64;
  428. +       person_type: entertainer;
  429. +       anim_type: walk_sw;
  430. +
  431. +       sprite {
  432. +           x_base: 0; y_base: 0;  width: 10; height: 27;
  433. +           x_offset: -5; y_offset: -27; file: "../sprites/gui/pillar.png";
  434. +       }
  435. +   }
  436. +
  437. +   // NW walking.
  438. +   ANIM {
  439. +       person_type: entertainer;
  440. +       anim_type: walk_nw;
  441. +
  442. +       frame_data { duration: 40; change_x: 0; change_y: -4; }
  443. +   }
  444. +   ANSP {
  445. +       tile_width: 64;
  446. +       person_type: entertainer;
  447.         anim_type: walk_nw;
  448.  
  449.         sprite {
  450. diff --git src/people.cpp src/people.cpp
  451. index 7696121..3c47535 100644
  452. --- src/people.cpp
  453. +++ src/people.cpp
  454. @@ -86,7 +86,7 @@ Guests::~Guests()
  455.  void Guests::Initialize()
  456.  {
  457.     this->valid_ptypes = 0;
  458. -   for (PersonType pertype = PERSON_MIN_GUEST; pertype <= PERSON_MAX_GUEST; pertype++) {
  459. +   for (PersonType pertype = PERSON_GUEST; pertype <= PERSON_GUEST; pertype++) {
  460.         bool usable = true;
  461.         for (AnimationType antype = ANIM_BEGIN; antype <= ANIM_LAST; antype++) {
  462.             if (_sprite_manager.GetAnimation(antype, pertype) == nullptr) {
  463. @@ -94,7 +94,7 @@ void Guests::Initialize()
  464.                 break;
  465.             }
  466.         }
  467. -       if (usable) this->valid_ptypes |= 1u << (pertype - PERSON_MIN_GUEST);
  468. +       if (usable) this->valid_ptypes |= 1u << (pertype - PERSON_ANY);
  469.     }
  470.  }
  471.  
  472. @@ -105,8 +105,8 @@ void Guests::Initialize()
  473.   */
  474.  bool Guests::CanUsePersonType(PersonType ptype)
  475.  {
  476. -   if (ptype < PERSON_MIN_GUEST || ptype > PERSON_MAX_GUEST) return false;
  477. -   return (this->valid_ptypes & (1 << (ptype - PERSON_MIN_GUEST))) != 0;
  478. +   if (ptype < PERSON_GUEST || ptype > PERSON_GUEST) return false;
  479. +   return (this->valid_ptypes & (1 << (ptype - PERSON_ANY))) != 0;
  480.  }
  481.  
  482.  /**
  483. @@ -196,7 +196,7 @@ void Guests::DoTick()
  484.   */
  485.  void Guests::OnNewDay()
  486.  {
  487. -   PersonType ptype = PERSON_PILLAR;
  488. +   PersonType ptype = PERSON_GUEST;
  489.     if (!this->CanUsePersonType(ptype)) return;
  490.     if (this->CountActiveGuests() >= _scenario.max_guests) return;
  491.     if (!this->rnd.Success1024(_scenario.GetSpawnProbability(512))) return;
  492. diff --git src/people.h src/people.h
  493. index de3fa27..a9c1ced 100644
  494. --- src/people.h
  495. +++ src/people.h
  496. @@ -113,7 +113,7 @@ private:
  497.     void AddFree(Guest *g);
  498.     Guest *GetFree();
  499.  };
  500. -assert_compile(PERSON_MAX_GUEST - PERSON_MIN_GUEST + 1 <= 16); ///< Verify that all person types fit in #Guests::valid_ptypes
  501. +assert_compile(PERSON_GUEST + 1 <= 16); ///< Verify that all person types fit in #Guests::valid_ptypes
  502.  
  503.  extern Guests _guests;
  504.  
  505. diff --git src/person.cpp src/person.cpp
  506. index d19d514..89d6548 100644
  507. --- src/person.cpp
  508. +++ src/person.cpp
  509. @@ -58,7 +58,7 @@ PersonTypeData &ModifyPersonTypeData(PersonType pt)
  510.  bool LoadPRSG(RcdFileReader *rcd_file)
  511.  {
  512.     uint32 length = rcd_file->size;
  513. -   if (rcd_file->version != 1 || length < 1) return false;
  514. +   if (rcd_file->version < 1 || length < 1) return false;
  515.     uint8 count = rcd_file->GetUInt8();
  516.     length--;
  517.  
  518. @@ -71,8 +71,14 @@ bool LoadPRSG(RcdFileReader *rcd_file)
  519.  
  520.         PersonType pt;
  521.         switch (ps) {
  522. -           case  8: pt = PERSON_PILLAR;  break;
  523. -           case 16: pt = PERSON_EARTH;   break;
  524. +           case  8:
  525. +           case 16:
  526. +               pt = PERSON_GUEST;
  527. +               break;
  528. +           case 17: pt = PERSON_HANDYMAN; break;
  529. +           case 18: pt = PERSON_MECHANIC; break;
  530. +           case 19: pt = PERSON_GUARD; break;
  531. +           case 20: pt = PERSON_ENTERTAINER; break;
  532.             default: pt = PERSON_INVALID; break;
  533.         }
  534.  
  535. diff --git src/person.h src/person.h
  536. index 4485913..b7a9058 100644
  537. --- src/person.h
  538. +++ src/person.h
  539. @@ -121,7 +121,7 @@ public:
  540.      */
  541.     bool IsGuest() const
  542.     {
  543. -       return this->type >= PERSON_MIN_GUEST && this->type <= PERSON_MAX_GUEST;
  544. +       return this->type == PERSON_GUEST;
  545.     }
  546.  
  547.     void SetName(const char *name);
  548. diff --git src/person_type.h src/person_type.h
  549. index 20d25d2..51496b7 100644
  550. --- src/person_type.h
  551. +++ src/person_type.h
  552. @@ -19,15 +19,18 @@ class RcdFileReader;
  553.  
  554.  /** Types of persons. */
  555.  enum PersonType {
  556. -   PERSON_ANY    = 0, ///< No people displayed in the animation.
  557. -   PERSON_PILLAR = 1, ///< %Guests from the planet of Pillars (test graphics).
  558. -   PERSON_EARTH  = 2, ///< Earth-bound guests.
  559. +   PERSON_ANY         = 0, ///< No people displayed in the animation.
  560. +   PERSON_GUEST       = 1, ///< %Guests.
  561. +   PERSON_HANDYMAN    = 2, ///< %Staff handymen.
  562. +   PERSON_MECHANIC    = 3, ///< %Staff mechanics.
  563. +   PERSON_GUARD       = 4, ///< %Staff security guards.
  564. +   PERSON_ENTERTAINER = 5, ///< %Staff entertainers.
  565.     PERSON_TYPE_COUNT, ///< Number of known types of persons.
  566.  
  567.     PERSON_INVALID = 0xFF, ///< Invalid person type.
  568.  
  569. -   PERSON_MIN_GUEST = PERSON_ANY,   ///< First value of a guest.
  570. -   PERSON_MAX_GUEST = PERSON_EARTH, ///< Last value of a guest.
  571. +   PERSON_MIN_STAFF = PERSON_HANDYMAN,    ///< First value of an employee.
  572. +   PERSON_MAX_STAFF = PERSON_ENTERTAINER, ///< Last value of an employee.
  573.  };
  574.  DECLARE_POSTFIX_INCREMENT(PersonType)
  575.  
  576. diff --git src/rcdgen/check_data.cpp src/rcdgen/check_data.cpp
  577. index 260441c..e2a5e86 100644
  578. --- src/rcdgen/check_data.cpp
  579. +++ src/rcdgen/check_data.cpp
  580. @@ -1071,12 +1071,15 @@ static std::shared_ptr<PRSGBlock> ConvertPRSGNode(std::shared_ptr<NodeGroup> ng)
  581.  
  582.  /** Symbols for an ANIM and ANSP blocks. */
  583.  static const Symbol _anim_symbols[] = {
  584. -   {"pillar",  8},
  585. -   {"earth",  16},
  586. -   {"walk_ne", 1}, // Walk in north-east direction.
  587. -   {"walk_se", 2}, // Walk in south-east direction.
  588. -   {"walk_sw", 3}, // Walk in south-west direction.
  589. -   {"walk_nw", 4}, // Walk in north-west direction.
  590. +   {"guest",        8},
  591. +   {"handyman",     17},
  592. +   {"mechanic",     18},
  593. +   {"guard",        19},
  594. +   {"entertainer",  20},
  595. +   {"walk_ne",      1}, // Walk in north-east direction.
  596. +   {"walk_se",      2}, // Walk in south-east direction.
  597. +   {"walk_sw",      3}, // Walk in south-west direction.
  598. +   {"walk_nw",      4}, // Walk in north-west direction.
  599.     {nullptr, 0}
  600.  };
  601.  
  602. @@ -1501,8 +1504,11 @@ static std::shared_ptr<BitMask> ConvertBitMaskNode(std::shared_ptr<NodeGroup> ng
  603.  
  604.  /** Names of person types and colour ranges. */
  605.  static const Symbol _person_graphics_symbols[] = {
  606. -   {"pillar",  8},
  607. -   {"earth",  16},
  608. +   {"guest",        8},
  609. +   {"handyman",     17},
  610. +   {"mechanic",     18},
  611. +   {"guard",        19},
  612. +   {"entertainer",  20},
  613.     {"grey",         COL_GREY},
  614.     {"green_brown",  COL_GREEN_BROWN},
  615.     {"orange_brown", COL_ORANGE_BROWN},
  616. diff --git src/rcdgen/nodes.cpp src/rcdgen/nodes.cpp
  617. index 4295917..fb00cb6 100644
  618. --- src/rcdgen/nodes.cpp
  619. +++ src/rcdgen/nodes.cpp
  620. @@ -493,7 +493,7 @@ bool PersonGraphics::AddRecolour(uint8 orig, uint32 replace)
  621.     return false;
  622.  }
  623.  
  624. -PRSGBlock::PRSGBlock() : GameBlock("PRSG", 1)
  625. +PRSGBlock::PRSGBlock() : GameBlock("PRSG", 2)
  626.  {
  627.  }
  628.  
  629. diff --git src/sprite_store.cpp src/sprite_store.cpp
  630. index cea7fd4..893e47f 100644
  631. --- src/sprite_store.cpp
  632. +++ src/sprite_store.cpp
  633. @@ -605,8 +605,13 @@ static PersonType DecodePersonType(uint8 pt)
  634.  {
  635.     switch (pt) {
  636.         case  0: return PERSON_ANY;
  637. -       case  8: return PERSON_PILLAR;
  638. -       case 16: return PERSON_EARTH;
  639. +       case  8:
  640. +       case 16:
  641. +           return PERSON_GUEST;
  642. +       case 17: return PERSON_HANDYMAN;
  643. +       case 18: return PERSON_MECHANIC;
  644. +       case 19: return PERSON_GUARD;
  645. +       case 20: return PERSON_ENTERTAINER;
  646.         default: return PERSON_INVALID;
  647.     }
  648.  }
  649. @@ -1139,6 +1144,8 @@ void SpriteStorage::RemoveAnimations(AnimationType anim_type, PersonType pers_ty
  650.             ++iter2;
  651.             this->animations.erase(iter);
  652.             iter = iter2;
  653. +       } else {
  654. +           ++iter;
  655.         }
  656.     }
  657.  }

Comments