{"action":"created","issue":{"url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/19437","repository_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA","labels_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/19437/labels{/name}","comments_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/19437/comments","events_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/19437/events","html_url":"https://github.com/CleverRaven/Cataclysm-DDA/issues/19437","id":191498747,"number":19437,"title":"Persistent IDs for game objects","user":{"login":"Coolthulhu","id":1878860,"avatar_url":"https://avatars.githubusercontent.com/u/1878860?v=3","gravatar_id":"","url":"https://api.github.com/users/Coolthulhu","html_url":"https://github.com/Coolthulhu","followers_url":"https://api.github.com/users/Coolthulhu/followers","following_url":"https://api.github.com/users/Coolthulhu/following{/other_user}","gists_url":"https://api.github.com/users/Coolthulhu/gists{/gist_id}","starred_url":"https://api.github.com/users/Coolthulhu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Coolthulhu/subscriptions","organizations_url":"https://api.github.com/users/Coolthulhu/orgs","repos_url":"https://api.github.com/users/Coolthulhu/repos","events_url":"https://api.github.com/users/Coolthulhu/events{/privacy}","received_events_url":"https://api.github.com/users/Coolthulhu/received_events","type":"User","site_admin":false},"labels":[{"id":235184405,"url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/labels/Long-term","name":"Long-term","color":"fbca04","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":18,"created_at":"2016-11-24T11:38:28Z","updated_at":"2016-11-30T01:45:10Z","closed_at":null,"body":"The more I deal with monster-related code, the more obvious it is that a persistent ID system for creatures is mandatory for any sensible behavior to happen. Without it, the creatures can't be remembered, which means that \"grab\" status has to be a broken hack, creatures (and NPCs) can't remember their targets except by position meaning no \"attack this\" orders are possible, monsters can't be vehicle passengers and so on.\r\n\r\nFor items, this means there is a lot of extra code to keep track of items (active items, for example), missions regarding specific items are impossible without hacks, persistent (more than one \"moment\" - less than a single move) multi-item interactions are impossible without turning the items into one or relying solely on their types, and it is impossible for creatures to address items - for example, grappling with player's helmet to pull it off (except doing it all in one move).\r\n\r\nVehicles wouldn't benefit much, but we could still have creatures actually aggro on turreted vehicles if we had IDs here.\r\n\r\nSo, what does an ID system NEED to work?\r\n* Is `long long` good enough or do we need something like generated UUID or `bigint`?\r\n* Do they need to be persistent across \"sessions\" or is it fine if the IDs are reality-bubble only?\r\n* What should happen when ID conflict arises due to save corruption or bugs?\r\n\r\nPrevious attempts:\r\n* Monsters #15682\r\n* Items #16791"},"comment":{"url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/comments/263757996","html_url":"https://github.com/CleverRaven/Cataclysm-DDA/issues/19437#issuecomment-263757996","issue_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/19437","id":263757996,"user":{"login":"saneman226","id":12336871,"avatar_url":"https://avatars.githubusercontent.com/u/12336871?v=3","gravatar_id":"","url":"https://api.github.com/users/saneman226","html_url":"https://github.com/saneman226","followers_url":"https://api.github.com/users/saneman226/followers","following_url":"https://api.github.com/users/saneman226/following{/other_user}","gists_url":"https://api.github.com/users/saneman226/gists{/gist_id}","starred_url":"https://api.github.com/users/saneman226/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/saneman226/subscriptions","organizations_url":"https://api.github.com/users/saneman226/orgs","repos_url":"https://api.github.com/users/saneman226/repos","events_url":"https://api.github.com/users/saneman226/events{/privacy}","received_events_url":"https://api.github.com/users/saneman226/received_events","type":"User","site_admin":false},"created_at":"2016-11-30T01:45:10Z","updated_at":"2016-11-30T01:45:10Z","body":"> then your not yet qualified to have an opinion\r\n\r\nOh. "}}
{"actor":{"display_login":"saneman226"}}