Advertisement
Guest User

Untitled

a guest
Jan 5th, 2014
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. local PopulationFaction = class()
  2. local personality_service = require("services.personality.personality_service")
  3. function PopulationFaction:__init(faction, kingdom)
  4. self._faction = faction
  5. self._data = radiant.resources.load_json(kingdom)
  6. self._faction_name = faction
  7. end
  8. function PopulationFaction:create_new_citizen()
  9. local gender
  10. if not self._always_one_girl_hack then
  11. gender = "female"
  12. self._always_one_girl_hack = true
  13. elseif math.random(2) == 1 then
  14. gender = "male"
  15. else
  16. gender = "female"
  17. end
  18. local entities = self._data[gender .. "_entities"]
  19. local kind = entities[math.random(#entities)]
  20. local citizen = radiant.entities.create_entity(kind)
  21. citizen:add_component("unit_info"):set_faction(self._faction_name)
  22. self:_set_citizen_initial_state(citizen, gender)
  23. return citizen
  24. end
  25. function PopulationFaction:_set_citizen_initial_state(citizen, gender)
  26. local name = self:generate_random_name(gender)
  27. radiant.entities.set_display_name(citizen, name)
  28. local personality = personality_service:get_new_personality()
  29. citizen:add_component("stonehearth:personality"):set_personality(personality)
  30. radiant.entities.set_attribute(citizen, "hunger", math.random(1, 30))
  31. radiant.entities.set_attribute(citizen, "sleepiness", math.random(1, 30))
  32. end
  33. function PopulationFaction:create_entity(uri)
  34. local entity = radiant.entities.create_entity(uri)
  35. entity:add_component("unit_info"):set_faction(self._faction_name)
  36. return entity
  37. end
  38. function PopulationFaction:promote_citizen(citizen, profession)
  39. local profession_api = radiant.mods.require(string.format("stonehearth.professions.%s.%s", profession, profession))
  40. profession_api.promote(citizen)
  41. end
  42. function PopulationFaction:get_home_location()
  43. return self._town_location
  44. end
  45. function PopulationFaction:set_home_location(location)
  46. self._town_location = location
  47. end
  48. function PopulationFaction:generate_random_name(gender)
  49. local first_names
  50. if gender == "female" then
  51. first_names = self._data.given_names.female
  52. else
  53. first_names = self._data.given_names.male
  54. end
  55. local first = first_names[math.random(#first_names)]
  56. local surname = self._data.surnames[math.random(#self._data.surnames)]
  57. return first .. " " .. surname
  58. end
  59. return PopulationFaction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement