Feature #1399
closed
Lua API: specialists control
Added by Alexandr Ignatiev 29 days ago.
Updated 4 days ago.
Description
Continuation of #1375. The following methods are needed:
* (City):settle_specialist(Specialist s, int num = 1)
- adds a specialist or several; for normal specialist, also increases city size. Respects s's reqs. Returns number of specialists added.
* (City):num_specialists(Specialist s?)
- counts specialists of given type in the city, without parameter, counts all specialists (normal and super). Maybe add functions for counting all normal and all super specialists?
* (City):reduce_specialist(Specialist s, int num = 1)
- for superspecialist, just removes them, for normal specialist, toggles them cyclically (does not place workers or change city size), returns number of toggled/removed ones.
* (City):can_use(Specialist s)
- checks reqs (specialist can be still not addable due to 255 limit)
* Player:can_use(Specialist s)
- checks Player+-ranged reqs. Maybe rename these functions to sth more specific like can_employ
but actually we have polymorphism.
Files
also bool (Specialist).is_super
I think we should split this to two parts. First introduce lua methods that deal with normal specialists, and that patch would go to S3_3 too. Second patch to add super specialist handling would go to main branch only.
- Target version changed from 3.3.0-d3f to 3.4.0-d3f
- Related to Feature #1464: Lua API: minimal specialist control added
Patch for S3_4 ready (applied upon #1464).
- Related to deleted (Feature #1464: Lua API: minimal specialist control)
- Blocked by Feature #1464: Lua API: minimal specialist control added
- Status changed from New to In Review
- Assignee set to Marko Lindqvist
I am actually in doubt of should (City):num_specialists(nil) be also changed. The name does not suggest we count only normal specialists; but counting all specialists is needed much more rarely and some backward compatibility with 3.3 scripts tgat rely on "specialists == citizens that are not workers" may effectively be lost.
Alexandr Ignatiev wrote in #note-11:
I am actually in doubt of should (City):num_specialists(nil) be also changed. The name does not suggest we count only normal specialists; but counting all specialists is needed much more rarely and some backward compatibility with 3.3 scripts tgat rely on "specialists == citizens that are not workers" may effectively be lost.
Maybe we should have num_specialists() that count just normal specialists and num_superspecialists() that counts just superspecialists, and people wanting the sum of the two can add them themselves. Would also avoid changing the num_specialists() semantics from S3_3.
Whatever we decide to do with num_specialists(), it can happen in a separate future ticket. Pushing this one in now.
- Status changed from In Review to Closed
Also available in: Atom
PDF