{"action":"created","issue":{"url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/11415","labels_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/11415/labels{/name}","comments_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/11415/comments","events_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/11415/events","html_url":"https://github.com/CleverRaven/Cataclysm-DDA/pull/11415","id":59338117,"number":11415,"title":"[VERY WIP] Mutation Code backend overhaul","user":{"login":"i2amroy","id":4275617,"avatar_url":"https://avatars.githubusercontent.com/u/4275617?v=3","gravatar_id":"","url":"https://api.github.com/users/i2amroy","html_url":"https://github.com/i2amroy","followers_url":"https://api.github.com/users/i2amroy/followers","following_url":"https://api.github.com/users/i2amroy/following{/other_user}","gists_url":"https://api.github.com/users/i2amroy/gists{/gist_id}","starred_url":"https://api.github.com/users/i2amroy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/i2amroy/subscriptions","organizations_url":"https://api.github.com/users/i2amroy/orgs","repos_url":"https://api.github.com/users/i2amroy/repos","events_url":"https://api.github.com/users/i2amroy/events{/privacy}","received_events_url":"https://api.github.com/users/i2amroy/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-02-28T11:16:56Z","updated_at":"2015-04-23T10:25:37Z","closed_at":"2015-04-23T10:25:37Z","pull_request":{"url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/pulls/11415","html_url":"https://github.com/CleverRaven/Cataclysm-DDA/pull/11415","diff_url":"https://github.com/CleverRaven/Cataclysm-DDA/pull/11415.diff","patch_url":"https://github.com/CleverRaven/Cataclysm-DDA/pull/11415.patch"},"body":"This is more of a \"hey, I've got a bunch of code on this done already\" type of PR at the moment. Possibly supersedes #11311. Fixes #11143. Don't be too freaked out by the line numbers, the has_trait() -> has_mut() rename accounts for almost half of the PR line changes on it's own.\r\n\r\nThis basically takes the pretty bad implementation of the current mutation system, rips it up into tiny pieces, and then puts it back together into a much nicer version. It pulls out mutations and mutation_types into their own classes, moves pretty much all of the mutation code up from the player level to the Character level, and optimizes and condenses a lot of the logic in the mutation stuff. From a players point of view there shouldn't be any difference, but this sets the stage for a fair bit more of the heavier mutation features, as well as being another big step to separating out NPC and player logic. The only noticeable gameplay change this should have is that it now (under fairly rare circumstances) allows for players to temporarily cancel out their traits without instantly overriding them.\r\nPast:\r\n`Flimsy <-> Tough`\r\nFuture:\r\n`Flimsy <-> nothing <-> Tough`\r\nTraits are still pretty tenacious though, and they should come back pretty quickly as well as being one of the last things to be removed when mutating.\r\n\r\nThings that are done/to do:\r\n- [x] Totally redo the entire mutation.cpp and mutation.h framework\r\n- [x] Update Character.h headers\r\n- [x] Update the few remaining Player.h headers\r\n- [ ] Update the remaining mutation.h headers\r\n- [ ] Write some setter & getter functions for mutations\r\n- [ ] Update renamed functions\r\n- [ ] Update Mutagen code\r\n- [ ] Update the Wish code (which appears to be partly broken anyways)\r\n- [ ] Update mutation, Character, and player save/load functions\r\n- [ ] Update the many other places that interact with mutations or traits in some way or another\r\n- [ ] Fix the many horrible compile bugs and typos I'm sure I've introduced\r\n- [ ] Update to mainline\r\n- [ ] Update JSON files\r\n- [ ] Lots of testing\r\n\r\nIf I had to estimate a percentage done I'd say about 50%. The majority of the design work is already done, from here on out it's mostly just the busy work of updating all the various bits of legacy code."},"comment":{"url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/comments/95526585","html_url":"https://github.com/CleverRaven/Cataclysm-DDA/pull/11415#issuecomment-95526585","issue_url":"https://api.github.com/repos/CleverRaven/Cataclysm-DDA/issues/11415","id":95526585,"user":{"login":"i2amroy","id":4275617,"avatar_url":"https://avatars.githubusercontent.com/u/4275617?v=3","gravatar_id":"","url":"https://api.github.com/users/i2amroy","html_url":"https://github.com/i2amroy","followers_url":"https://api.github.com/users/i2amroy/followers","following_url":"https://api.github.com/users/i2amroy/following{/other_user}","gists_url":"https://api.github.com/users/i2amroy/gists{/gist_id}","starred_url":"https://api.github.com/users/i2amroy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/i2amroy/subscriptions","organizations_url":"https://api.github.com/users/i2amroy/orgs","repos_url":"https://api.github.com/users/i2amroy/repos","events_url":"https://api.github.com/users/i2amroy/events{/privacy}","received_events_url":"https://api.github.com/users/i2amroy/received_events","type":"User","site_admin":false},"created_at":"2015-04-23T10:25:37Z","updated_at":"2015-04-23T10:25:37Z","body":"Closing this for now. I still intend to revisit this later, but this has fallen far enough behind to be unmergeable."}}