Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: Phoenix Command Playing Aid Thing  (Read 1304 times)

SaintofWar

  • Bay Watcher
    • View Profile
Phoenix Command Playing Aid Thing
« on: October 04, 2016, 12:03:24 am »

I've had this project since March, and have barely touched it since then, working on other things. I have recently decided to finish it in a glorious mega-rush of coding madness, and ended up refactoring half the code.

To be honest, I had at first only wanted to do the simple PCCS ruleset, and designed my architecture for that purpose, but have since switched to the Advanced Rules, and made a huge mess of externs and what not.

If anyone is interested in this, I can probably write up an interface, so you people can enjoy Phoenix Command without.. well, having to spend 2 hours for 2 seconds to pass in game.

Following is a console output:
Spoiler (click to show/hide)

Another one:
Spoiler (click to show/hide)

My other concern is the legality of this. I don't think there should be a problem from a copyright or trademark standpoint, but someone please correct me if I am wrong.
« Last Edit: October 04, 2016, 07:01:58 am by SaintofWar »
Logged

My Name is Immaterial

  • Bay Watcher
    • View Profile
Re: Phoenix Command Playing Aid Thing
« Reply #1 on: October 05, 2016, 12:08:57 am »

Leading Edge Games hasn't published anything since '92. I'd be surprised if there was legal trouble.

SaintofWar

  • Bay Watcher
    • View Profile
Re: Phoenix Command Playing Aid Thing
« Reply #2 on: October 05, 2016, 03:38:12 am »

I think so too. They've been defunct for 10 years, and I couldn't find anything about the trademark. By copyright laws, at least, I should be able to release this play-aid tool with the name 'Phoenix Command' in it, since copyright doesn't cover titles. But trademark is a completely different thing. By trademark law, they would be required (IIRC) to sue me. But I am getting ahead of myself. It's not like I am gonna release it world-wide and have everyone know what they are getting. But if anyone on bay12 plays Phoenix Command, let me know, and I'll see if I can make the interface easy to use and approachable, rather than be a cmd line with arguments.
Logged

exdeath

  • Bay Watcher
    • View Profile
Re: Phoenix Command Playing Aid Thing
« Reply #3 on: October 07, 2016, 08:09:50 am »

This is awsome.
Anyway, I am doing (almost finished) a (python programming language) character generator for their first game called sword path glory.
But my one is just an character generator.

Also, actually writing all those numbers on the tables must be an pain in the ass thing to do. How do you deal with it?
On my generator if the table use one of those huge one with alot of numbers, I tell the user the page of the book the table is located, and the stats/skills he need to use on the table to find the value and then tell him to write the number he found.
Not as fast as if the program did everything by himself, but better than doing the character alone.

Actually writing huge tables is the reason I didnt tried to create a decent character generator for the fatal rpg (the official one dont fully create the character).
« Last Edit: October 07, 2016, 08:32:39 pm by exdeath »
Logged

SaintofWar

  • Bay Watcher
    • View Profile
Re: Phoenix Command Playing Aid Thing
« Reply #4 on: October 07, 2016, 07:07:24 pm »

The tables are the reason why I have been working on this for 7 months. To be honest, I only worked on it like 7 days, and didn't want to touch it the other 7 months. But I eventually just pushed through and did it. Honestly, if I could go back and do it all over again, which I won't, I'd do it all different and save myself the trouble. The range, speed, enc and whatever tables weren't that bad. But the god damn damage locations murdered me. I used structs with a constructor to make all of them. Here is what one of them looks like:
Code: [Select]
damloc NeckSpine(
{ { 3, 4, 5, 2H, 2H, 2H, 2H}, { 5, 17, 6H, 8H, 8H, 8H, 8H}, { 54, 60, 3K, 3K, 3K, 3K, 3K}, { 1H, 5K, 6K, 6K, 6K, 6K},
{ 2H, 9K, 1T, 1T, 1T, 1T}, { 3H, 1T, 1T, 1T, 1T}, { 7H, 3T, 3T, 3T, 3T}, { 1K, 5T, 6T, 6T}, { 2K, 1X, 1X, 1X}, { 3K, 2X, 2X, 2X}},
{ 35, 36}, { 7, 7},
"Neck - Spine", ShockSpine, { 5, 6, 6, 5, 4, 4, 4, 3, 3, 3});

Oh yeah, literals too. Caues I couldn't type that crap out any more.

And I still have to add weapons, at least the most popular ones.

But yeah, I got character generation and the complete rules from firing a weapon to hitting a target, and their recovery roll/death, minus blind fire, but that's just basically burst fire anyway. I'd have to check, but I think I have a semi-complete stub for super long range shots when bullets take a decent amount of time to land.

I might do mechanized combat as well, but I think I just want to put this up on github in some form or another first, so everyone can laugh at my pathetic code. I can't help it. I didn't touch this in so long, and in the time between doing that, I forgot all about it, so I basically started doing macros cause I can't remember what half of the stuff does anyway or how it's supposed to work, unless I think about it too much. And believe me, the last stretch of adding 2/3rds of the damage locations was all 'Just don't think about it, it will soon be over'.

EDIT: A bit more in detail on how exactly I handle the damage locations and the tables. The tables aren't that bad, I basically have 2 arrays/vectors, one which holds the index, let's say range, and the other that holds the value. I have a function that basically retrieves the index of the range that is closest to the number inputted, IE (retrieves the index of range 500, if you put in 450) and then retrieves the value at the other array, using that index.

Damage location was the real bitch, it ended up being a matrix, and that's without counting the tables for the weapon DC and PEN before the bullet hits. So there was only final DC, EPEN, and damage value. Luckily, DC doesn't change and neither does the EPEN index, so all I had to do was plug in the numbers for the damage, and use the earlier described method on a 2D vector, which I initialize in the constructor. If I had to do the advanced damage tables, I would probably just shoot myself in the head twice and end the suffering. But you never know. I used to say 'If I had to code up the advanced rules for Phoenix Command, I'd just shoot myself in the head twice and end the suffering' yet here we are.

EDIT EDIT: I may do some final refactoring of the indexes, so that I can actually reference what the hell is going on with that effective accuracy modifier. Right now, I just plug in a variable that is just a value, so there's no real way to know what exactly the modifier IS, other than it's value. I'll just std::map that, and allow it to be pulled up as a string.
« Last Edit: October 07, 2016, 07:20:45 pm by SaintofWar »
Logged

Vherid

  • Bay Watcher
  • [CREATURE:SLARK]
    • View Profile
Re: Phoenix Command Playing Aid Thing
« Reply #5 on: October 17, 2016, 09:37:30 pm »

This was always an idea I've wanted to finish for a long time as well. I don't know if they'll be any use to you, but I did convert, by hand, the entire AD tables into JSON. I have other tables in other places as well, the app is barely even there though. What language are you coding this with?

https://github.com/BarkBarkUnyu/project-raven/tree/master/js/data/db/tableADT/advancedDamageTables

SaintofWar

  • Bay Watcher
    • View Profile
Re: Phoenix Command Playing Aid Thing
« Reply #6 on: October 18, 2016, 06:42:25 am »

I'm using C++, and I already started work on the AD tables, and the interface is also coming along nicely. I've also been looking at libtcod for maybe trying to do something more than just a play aid, or at least add support for the environment as well, for visualization purposes.
Logged