# WoD13 Rebase to latest /tg/ :::info This document details the progress of the ongoing rebase project. ::: ## :information_source: Introduction Long story short, the semi-automatic rebasing process we tried to do simply did not work due to how outdated our original codebase is and how nonsensical the original code was scattered around the place. It means that the rebase has to be done manually. What it entails is that the parts we do not need have to be removed one by one and then our custom features and tweaks added on top of them. How much work is this? A colossal amount. For now, Miraviel is cutting away all the code/maps we do not need, while the others either handle our current repository (your PRs) or rewrite some existing code to integrate into the rebase. You can see [the actual progress here (GitHub)](https://github.com/tgstation/tgstation/compare/master...Miraviel:wod13-rebase:rebase). This branch always compiles in case you want to test it yourself. ## :heavy_check_mark: Checklist :::success Here is the progress and what still needs to be done. ::: ### :small_orange_diamond: Minimum playability These steps are necessary to have the basic WoD13 experience up and running. - [ ] Remove all maps unrelated to WoD13 (shuttles & shuttle system left) - [ ] Remove all jobs and their related objects/procs - [ ] Remove all extra species but humans - [ ] Add the Kindred as a species - [ ] Add Ghouls as a species - [ ] Add Werewolves as a species - [ ] Add the Kuei-Jin as a species - [ ] Add factions - [ ] Add our own jobs - [ ] Add our own maps and their related objects - [ ] Turn off atmospherics - [ ] Remove all random events, keep the event manager* - [ ] Adjust the shuttle cargo system to our warehouse one* - [ ] Add our UI* - [ ] Add disciplines - [ ] Add werewolf gifts - [ ] Add NPCs - [ ] Add phones* - [ ] P25 radios, the Police and the Dispatchers - [ ] The Masquerade system* - [ ] Adjust the crafting system* - [ ] Add the EXP system* - [ ] Add debug verbs* - [ ] Adjust the preferences menu - [ ] Adjust our database to the new schema - [ ] Port savefiles ### :small_orange_diamond: Extra features These steps are for ironing out already existing features that could be simply made better, but are not integral for testing the base gameplay loop. - [ ] Add our onfloor sprite system - [ ] The dice roll system - [ ] Shops - [ ] The simplified APC system - [ ] Keys, locks, and lockpicks - [ ] Clone damage and max health - [ ] Weapons - [ ] Bouncers - [ ] Cars - [ ] The Graveyard - [ ] Mannequins - [ ] The inventory grid system - [ ] Occult fetishes - [ ] Medical system adjustments - [ ] Growing cannabis - [ ] The stock market - [ ] Blood hunts - [ ] Blood bonding - [ ] Boxes - [ ] Nuke centcomm - [ ] Roundend screen - [ ] Lost features ## :blue_book: Further instructions :::info Further explanation on what needs to be done about the above-mentioned steps. ::: ### Add the Kindred as a species We need to ensure they do not actually process reagents or are influenced by bloodloss (given they will be using disciplines with their blood). ### Add Werewolves as a species Make sure they spawn at the caern associated with their tribe. ### Add factions We need to add the following factions to player characters: - For the Kindred, Kuei-Jin, and Ghouls: Camarilla, Anarch Movement, Sabbat, Autarkis, Giovanni, Triad - For mortals (citizens, doctors, police, etc.): City, Triad (repeated) This should be done now to save a lot of headache with jobs later on. On paper, mortals should also work for the Giovanni, but I have not seen a single case where they were not Embraced on the spot once a Giovanni sneezed nearby, so it would be just code bloat. ### Add our own jobs The new jobs have to have generation and species requirements. They currently track departmental time vs our on-role tracking, this needs to be adjusted (to our old system). We need to make sure taxi drivers do not spawn at special locations (the sewers or werewolf totems). We need to ensure Nosferatu or Gargoyle taxi drivers do not immediately cause a Masquerade breach (make them spawn inside the car??). ### Add our own maps and their related objects San Francisco will have 7 z-levels to better accomodate the Tower. We should consider adding a second, one-z level map, the Wilderness, for the Tzimisce Manor, the Wendigo Caern, and the Graveyard. This map needs to always load with San Francisco. ### Turn off atmospherics We do not need all those fancy gases and expensive calculations, but we need to ensure that fire can spread. ### Adjust the shuttle cargo system to our warehouse one The train should come and go like the shuttle does (with a timer, but preferably, keeping the actual movement). Instead of gibbing, it should deal enough damage to kill the person, but not to round-remove them. ### Add our UI Our UI needs to be re-added and ensured that all the buttons work. Some parts of it, like the intent wheel needs to be removed. ### Add disciplines This is largely done by Lucia already, but we need to ensure it works with the new action buttons. We need to ensure disciplines are flagged "common" and "uncommon", and that Kindred can pick a fourth discipline from the "common" category during character creation. ### Add werewolf gifts They should function similarily to disciplines, with obvious changes to their cost and requirements. This includes transformations. God save us from the old system, we need to create our own. ### Add NPCs Our NPCs did not work with 515 properly, they did not walk around with our current code. Instead of porting them 1:1, we might want to check if /tg/ has an already better system in place and adjust our NPCs to that. ### Add phones This should come before P25 radios. The system is fine for now as it is, with two notable changes to be made: - Talking through the phone should be the same as talking through P25 radios (currently, people talking into the P25 radio cannot be heard vs people who talk to the phone. This should be universal.) - Add a TODO here that people can receive each others' phone numbers based on their factions later. ### P25 radios, the Police and the Dispatchers P25 radios need to be ported as they serve as the core of our police/dispatcher gameplay. This has to be done after having NPCs up and running. ### The Masquerade system This should be rather simple at first but flexible enough to be expanded upon. We need an adminverb to adjust it and a related function for players to report Masquerade breaches (sending a message to admins who can then click a button to adjust the Masquerade then and there). Disciplines and being too ugly in the public should invoke breaches as before. ### Adjust the crafting system Triple check that players cannot craft anything strange or funny. /tg/'s crafting is rather extensive. ### Add the EXP system The rebase is not the time for us to move on from the EXP system, so just readd it as is. An important change should be that EXP should be rewarded immediately, not accumulated and then given out at roundend: so even if the player dies, their progress is not lost. ### Add debug verbs We need the following adminverbs ported (I probably forgot some of them so just port whatever you see): - Add/Remove discipline - Add/Remove experience - Add/Remove whitelist (/tg/ should have this, double-check it) - Adjust the Masquerade level ### Adjust our database to the new schema Our current data should be compatible with the new schema in the sql folder, so any new contributor setting up a local database would have our existing schema. ### Port savefiles We need to make sure at least playtimes are carried over. This is also our chance to nuke all non-clan disciplines from all savefiles in the wake of the planned discipline trading removal. --- ### Add our onfloor sprite system We have separate icons for items dropped on the floor to avoid the good old ss13 sprite clutter. This should be ported 1:1 with the addition of a default "ICON MISSING" sprite if one is not declared (currently, the item just becomes invisible if there is none). ### The dice roll system We have something in place already (two, actually), we need the better one ported over. The displayal of dice rolls needs to be a toggleable preference, turned on by default. Disciplines should use this system instead of flat statchecks. The player should see the result of their own roll (how many dice were rolled by them) but they should only see the number of successes from their target (to avoid knowing how many dice they had to resist/defend). ### Shops Shops are almost integral to our gameplay, we should aim at porting them as soon as possible. We probably should not adjust anything about them at this point, other than making their paths less cursed. This includes adding the black market where players can sell objects that have the sellable flag (preliminary work on this [has been done here](https://github.com/WorldOfDarknessXIII/World-of-Darkness-13/pull/608)). ### The simplified APC system Base ss13 APCs are needlessly complicated for what we need. I do think fuseboxes are enough for the level of engineering we are supposed to have. ### Keys, locks, and lockpicks We need to get rid of all airlocks and only keep the depowered versions. Keys should become a modular item, where each key stores an access (the /tg/ ones, not our weird secondary door accesses), but can be combined into a keychain (click one key with another) that then inherits all accesses from both sides. There should be two icon states, individual keys and keychains (the latter being the current sprites). Locks should use defines instead of magic numbers. I have already done some preliminary calculations for this (search for `LOCKPICK_DIFFICULTY_MAXIMUM` in our internal chat, but feel free to adjust/expand on it). Potence should scale with this value (high lockpick difficulty doors cannot be potenced, we want to keep this feature). Lockpicks need to be able to unlock doors with a dex + lockpicking roll and its timer should be dependent on the difference between the lockpicker's skill and the target difficulty (currently, this is a mess). This roll should be visible. Lockpicking an unlocked door should check if it has an access requirement and if it does, after a `do_after`, it should re-lock it (get rid of the immediate locking). ### Clone damage and max health Modern /tg/ removed clone damage and we only used it to basically influence the max health of the target (as it cannot be healed with the usual powers). Whatever has dealt clone damage before now has to temporarily(?) adjust max health instead. In the same vein, we have to ensure that this max health adjustment cannot reduce someone's health to 0. Having blood cursed or similar to permadeath from across the map is as engaging as writing these documents. ### Weapons We need to remove all the base weaponry and add our custom ones. We do not want an accidental pulse rifle appear out of nowhere. Their values can be adjusted later, though it would be helpful if whoever added weapons made a sheet of their firerate/damage/force for balance reasons later down the line. ### Bouncers Hex' bouncer system is neat and we should port it over, but it is not integral to the core gameplay loop. ### Cars 2cents has been reworking cars for a while now, hopefully, they can be added to the rebase, even if they are still a bit jank. ### The Graveyard The zombie mobs will definitely need to be rewritten somewhat, but it should be an easy port. The waves and the exp reward should be adjusted somewhat. ### Mannequins Don't forget about these little guys in the strip club. They have a fairly simple code, but they should not be drainable (as they are now). ### The Umbra The current Umbra is just Lavaland except for a rename. This part of the game is exclusively(?) used by Theurge werewolves, so while it is not integral, it would be nice to have it again. It requires the Umbra map to be adjusted to our current one (should be just a copypaste with some new o bjects added), adding some portals to the SF/exterior maps, and ensuring no lavaland-specific hijinks appear there (I already turned off ashstorms). ### The inventory grid system This is something that sets apart this server from a lot of other ones, we should definitely keep it. The question is if we could port this in a reasonable amount of time. ### Occult fetishes These fetishes are currently either useless or super broken combat-wise. They need to be rewritten from the ground up and they need to be added to a proper spawner, scattered all around the map (the Tremere should still have guaranteed spawns). ### Medical system adjustments We need to ensure our vampires cannot be fixed with medical stuff. In the future, we need to tone down the sci-fi part of medical (health analyzers immediately telling someone is a vampire, what organ damages one has, etc.). ### Growing cannabis For some reason, weed is an integral part of our gameplay, so we need to ensure players can still grow this. ### The stock market I believe modern /tg/ still has this, we should spend as little energy on this as possible. If we cannot just slot it into our current gameplay, this can become a later todo. ### Blood Hunts I vehemently hate this jank system, but we need to add it as it is, with a big TODO on it to make it better. The only two adjustments we have to do is that not all Kindred should be notified: only those who belong to the factions Camarilla, Anarchs, and Giovanni. These ones communicate with each other and it is reasonable to assume the news would spread (over the nights, but our actual game lasts for 2 hours, so this system speeds it up). The Autarkis decided they are too cool for belonging to any kind of a system (if they want no responsibility, they get no free ifnormation) and the Sabbat is busy with world domination, so they are left out of this fun. An addition: Ghouls with the Camarilla, Anarchs, and Giovanni factions should also be notified (their masters would tell them). ### Blood bonding One vampire drinking from another needs to bond them, whether they are forcing them to drink (Give Vitae) or they bite them on the neck (which is not the case right now). Add a TODO here to remove blood bond if the regnant dies a final death and to revisit this system later (one drink from another vampire should not fully enslave you, that is just stupid). ### Boxes Crawling around in boxes, bringing 30 sharks to the black market in a box, transporting corpses around in a box is peak jank but it is our jank. We should keep it. ### Nuke centcomm The admin_z map should have nothing on it for now, but the lobby art. ### Roundend screen Make sure the emergency shuttle does not try to spawn. The roundend screen should reflect our actual round, not the BSA not being built and how much credit people have. When the round ends, we should also turn all exterior areas immediately lethal for vampires as the sun came up as opposed to the lazy check now (if you are outside, you die, otherwise you can walk around). Being in a container (body bag, box... car?) should negate this. ### Lost features Lost but not forgotten, some features might not be added during the rebase. For now, these are: - The old mail system: What we have on the current server is a weird cousin to an already functioning mail system /tg/ has. We will need to adjust that one later down the line instead of building on top of it.