Question: A1 odf command

The best Modding forum in the Armada community, some of the best modders come here.

Moderators: MrVulcan, thunderchero

Post Reply
User avatar
pepperman
Lieutenant
Lieutenant
Posts: 775
Joined: Fri Oct 17, 2003 2:00 am
Location: Cloaked in the Neutral Zone

Question: A1 odf command

Post by pepperman » Tue Sep 11, 2012 3:50 pm

Hypothesis: Similar to Armada 2, there exists a upgrade function in Armada 1.

Evidence to support the theory: Within the stock set of object definition files exists a file called bupgrade.odf. Within this file, the following odf command exists: isUpgrade. In context, it appears this command is associated with the pod classLabel.

//*************************************************************
//PROGRAMMING PARAMETERS WHICH SHOULD NOT BE CHANGED & UNUSED PARAMETERS

//programming thing DO NOT CHANGE
classLabel = "pod"

// Mark as special upgrade pod.
isUpgrade = 1

//**************************************************************

Note the similarity to the A2 command extracted from one of the A2 upgrade files.

isShipUpgrade = 1
upgradeLevel = 3
upgradeMultiplier = 1.50
upgradeSystem = "engines"

Using a HEX editor, it is clear that isUpgrade is in the A1 code in some form or fashion. The question that I have for you is whether or not anyone has experimented with this and figured out how it works and what does it upgrade or how one specifies which system to upgrade.

//** BUPGRADE.ODF FROM A1 **********************************************************
//MAIN DESIGN PARAMETERS

//Name of Ship class in Ship Display window & in edit mode & tooltip
unitName = "Research Upgrade"

//Base name for upgrade.
baseName = "bresear2"

//Race which can build ship & starting race of ship
race = "borg"

//Amount of time required to build ship
buildTime = 30.0

//Number of officers required to build this ship
officerCost = 0

//Number of crew required to build ship & Starting crew
crewCost = 0

//Dilithium Cost to build
dilithiumCost = 400

//Max Shield Strength & Begining Shield Strength <1000
maxHealth = 500

//Rate at which shield recharges (points per second... we think)
shieldRate = 15

//Delay before shield begins recharging once it has reached zero (secs)
shieldDelay = 3.0f

//Maximum Value of Special Energy
maxSpecialEnergy = 0

//Rate at which special energy recharges (points per second... we think)
specialEnergyRate = 5

//This is the range in meters which the ships sensors can see (LOS)
rangeScan = 700.0f

//This is the range in meters which the ships sensors can see when destroyed
damagedScan = 100.0f



//************************************************************
//CREW STATUS MULTIPLIERS
//The percentage at which the crew enters yellow status (ex. 0.75f)
crewYellowStatus = 0.75f

//The percentage at which the crew enters red status (ex. 0.25f)
crewRedStatus = 0.25f

//The multiplier for the repair time while in yellow status
repairYellow = 2.0f

//The multiplier for the repair time while in red status
repairRed = 4.0f

//The multiplier for the delay between shots for weapons while in yellow status
weaponYellow = 1.5f

//The multiplier for the delay between shots for weapons while in red status
weaponRed = 2.5f
//**********************************************************************
//**********************************************************************
//SYSTEM HITPOINTS
//These values are the hitpoint values of the systems
//If the value is set to zero the ship does not have that system
enginesHitPoints = 0
lifeSupportHitPoints = 0
weaponsHitPoints = 0
shieldGeneratorHitPoints = 0
sensorsHitPoints = 0
//**********************************************************************
//**********************************************************************
//SYSTEM DAMAGE DISTRIBUTION
//The following section's values should add up to 100
//Percent Chance out of 100 of engines being destroyed
enginesHitPercent = 0.0f

//Percent Chance out of 100 of life support being destroyed
lifeSupportHitPercent = 0.0f

//Percent Chance out of 100 of weapons being destroyed
weaponsHitPercent = 0.0f

//Percent Chance out of 100 of shields being destroyed
shieldGeneratorHitPercent = 0.0f

//Percent Chance out of 100 of sensors being destroyed
sensorsHitPercent = 0.0f

//Percent Chance out of 100 of hull being hit (crew dying)
hullHitPercent = 0.0f

//Percent Chance out of 100 of entire ship exploding
criticalHitPercent = 100.0f
//**********************************************************************


//**********************************************************************
//SYSTEM REPAIR RATES
//This is the amount of time in seconds to repair ONE hitpoint of damage
//modified by race and crew status
enginesRepairTime = 10.0f
lifeSupportRepairTime = 10.0f
weaponsRepairTime = 10.0f
shieldGeneratorRepairTime = 10.0f
sensorsRepairTime = 10.0f
//**********************************************************************
//**********************************************************************
//CREW CASUALTY FOR SYSTEM DESTRUCTION
//The percentage of crew killed when the engines are destroyed
enginesCrewLoss = 15.0f

//The percentage of crew killed when the lifesupport is destroyed
lifeSupportCrewLoss = 10.0f

//The percentage of crew killed when the weapons are destroyed
weaponsCrewLoss = 5.0f

//The percentage of crew killed when the shields are destroyed
shieldGeneratorCrewLoss = 15.0f

//The percentage of crew killed when the sensors are destroyed
sensorsCrewLoss = 5.0f

//The percentage of crew lost every second while life support is disabled
lifeSupportLoss = 5.0f
//**********************************************************************
//**********************************************************************
//MESSAGE & SOUND PARAMETERS
diedMsg = "abetty3.wav"
soundDeploy = "avsave5.wav"
soundUndeploy = "avsave6.wav"
soundThrust = "avsave0.wav"
//**********************************************************************
//**********************************************************************
//PHYSICS PARAMETERS

physicsFile = "destphys.odf"
//**********************************************************************
//**********************************************************************
//PROGRAMMING PARAMETERS WHICH SHOULD NOT BE CHANGED & UNUSED PARAMETERS

//programming thing DO NOT CHANGE
classLabel = "pod"

//This tells the program that this object is a starbase
is_starbase = 1

// Mark as special upgrade pod.
isUpgrade = 1

//NOT USED CURRENTLY
periodScan = 0.0f

//Not USED CURRENTLY
velocJam = 5.0f


//***************************************************************

//AI stuff
aiName = "CraftProcess"

User avatar
fuller
Cadet 4th Year
Cadet 4th Year
Posts: 137
Joined: Fri Sep 23, 2011 2:00 am

Post by fuller » Wed Sep 12, 2012 1:47 pm

I'm not 100% sure but i think it was something brought in for A2 and wasnt on A1. Again, not sure, but i think thats what happened.

User avatar
Tommygun_BoG
Cadet 3rd Year
Cadet 3rd Year
Posts: 92
Joined: Mon Apr 20, 2009 2:00 am
Contact:

Post by Tommygun_BoG » Thu Sep 13, 2012 7:12 am

fuller wrote:I'm not 100% sure but i think it was something brought in for A2 and wasnt on A1. Again, not sure, but i think thats what happened.
Don't get me wrong, but as I remember A1 was released before A2. So why is the command already available in A1? ;-)

My question is (as I never modded A2): How is it used or what does it do in A2?

User avatar
MrVulcan
Site Administrator aka Fleet Admiral
Site  Administrator aka Fleet Admiral
Posts: 660
Joined: Fri Apr 25, 2003 2:00 am
Location: TO CA

Post by MrVulcan » Thu Sep 13, 2012 10:41 am

There are a lot of commands that seem to do nothing at all. I'm not sure if this is one such command. In A2 it is used to upgrade ship systems, but I'm not sure exactly how that happens and what is the effect.

Might do some testing when I get around to some modding again. Any ideas for what it might do? Will be easier to test if I'm looking for something specific.

Would be nice if it improved the station that built it (replaced its stats for example).

User avatar
Dominus_Noctis
Cadet 3rd Year
Cadet 3rd Year
Posts: 59
Joined: Mon Nov 22, 2010 3:00 am
Contact:

Post by Dominus_Noctis » Thu Sep 13, 2012 12:59 pm

As I said on fo.net, this precise command is referenced in A2 as well. As in A1, it appears to have no function associated with it. In all likelihood it's just a remnant that was forgotten by the programmers.

There are only about 40 commands (out of hundreds) that have no apparent functionality: most are related to planned render functionality and a few are holdovers from battlezone and dark reign that just appear never to have been cleaned up.

User avatar
pepperman
Lieutenant
Lieutenant
Posts: 775
Joined: Fri Oct 17, 2003 2:00 am
Location: Cloaked in the Neutral Zone

Post by pepperman » Thu Sep 13, 2012 5:02 pm

Just as a real quick test I placed the command isUpgrade = 1 into one of the stock Romulan pods and didn't change anything else. I tested it to see what it would do and when I researched that particular pod. It researched as you might have expected however the sod for the pod wasn't observable. In other words, during the research phase there was no evidence of the pod sod being "built" and when the research was complete the pod's sod file wasn't present on the research station. The functionality of the pod (special weapon) wasn't affected and it was availbel on the particualar ship. I couldn't tell if anything was upgraded or not.

User avatar
Tommygun_BoG
Cadet 3rd Year
Cadet 3rd Year
Posts: 92
Joined: Mon Apr 20, 2009 2:00 am
Contact:

Post by Tommygun_BoG » Fri Sep 14, 2012 2:28 am

pepperman wrote:Just as a real quick test I placed the command isUpgrade = 1 into one of the stock Romulan pods and didn't change anything else. I tested it to see what it would do and when I researched that particular pod. It researched as you might have expected however the sod for the pod wasn't observable. In other words, during the research phase there was no evidence of the pod sod being "built" and when the research was complete the pod's sod file wasn't present on the research station. The functionality of the pod (special weapon) wasn't affected and it was availbel on the particualar ship. I couldn't tell if anything was upgraded or not.
Well, then the isUpgrade = 1 command is identical with the hidden = 1 command. I'm using the hidden = 1 command on several pods that I don't want to be observable. They show the same behavior you described.

User avatar
pepperman
Lieutenant
Lieutenant
Posts: 775
Joined: Fri Oct 17, 2003 2:00 am
Location: Cloaked in the Neutral Zone

Post by pepperman » Fri Sep 14, 2012 9:18 pm

I was quasi successful in getting this to work.

1. Took a research station and added an pod node to the hierarchy and centered it at 0, 0, 0.
2. Created a pod odf which used the research station as its sod and included the isUpgrade = 1 command in this odf.
3. Changed the maxHealth and rangeScan values in this pods odf to something more significant than those in the research odf.
4. Added the upgrade = 2 command into the respective research odf. The hypothesis being that this command governs the number of upgradeable thing.
5. Tested

Was able to research the upgrade pod at the research station. When complete the research station seemed to inherit the increased values (maxHealth and rangeScan ) from the pod.
Now, it is still unclear what exactly can be upgraded or what effect this might have in game against an AI player.

User avatar
MrVulcan
Site Administrator aka Fleet Admiral
Site  Administrator aka Fleet Admiral
Posts: 660
Joined: Fri Apr 25, 2003 2:00 am
Location: TO CA

Post by MrVulcan » Sun Sep 16, 2012 12:24 am

Very interesting. I am very surprised that this actually worked. My suggestion was just a shot in the dark. Have been a little busy to try this out myself unfortunately.

Range scan might be a little misleading as it might be the "hidden" pod that's giving you increased sensor range, and not the upgraded sensor range on the original station... although the effect is the same I suppose.

If the shield values were upgraded, that's really awesome. :)

My guess is that any ship/station is just an instance of a a particular class of game object (wingman for ships for example). Each instance comes with its own properties which are set in the ODFs. Theoretically, any one of those properties should be upgradable.

Really excited about this one :)

User avatar
fuller
Cadet 4th Year
Cadet 4th Year
Posts: 137
Joined: Fri Sep 23, 2011 2:00 am

Post by fuller » Mon Sep 17, 2012 11:47 am

Yeah, good point. my mistake

User avatar
Tommygun_BoG
Cadet 3rd Year
Cadet 3rd Year
Posts: 92
Joined: Mon Apr 20, 2009 2:00 am
Contact:

Post by Tommygun_BoG » Sun Oct 28, 2012 8:13 am

I know that this topic seems to be a dead end, but I was looking through all button graphics and found the files gbbrupgrd00.tga, gbfrupgrd00.tga, gbkrupgrd00.tga and gbrrupgrd00.tga.
Now those are also listed in the gui_global.spr.
Taking a closer look at the buttons I made out some similarities to the officer's quarters on starbases: It seems like those upgrades need to be separate meshes which are parented to a special node in the hierarchy.

I wasn't able to find out if there is a node called "upgrade", but maybe this will work without crashing the game when the station is destroyed.

Post Reply

Who is online

Users browsing this forum: No registered users