Collection of modding questions and answers

Freeform discussion about anything related to modding Transcendence.
User avatar
Blinzler
Commonwealth Pilot
Commonwealth Pilot
Posts: 75
Joined: Sat Feb 17, 2007 9:28 pm
Location: yah man, where di sun is shining

For notes see the end of the post. This is a work in progress.

Open questions: (If you know something - let us know it)
Is it possible to get what something will take for a hit?
Such as particle resisting paste on various types of armor? (is it added or multiplied?)
Also is there a way of viewing the resistance in code of various things?


For the shpEnhanceItem, when adjusting damage above 100% - what is the formula? (100%, 111%, 125%, 143%... )



Tips, Hints and Q&A:

What is weaponintensity?
Weapon intensity increase the graphical size of the shots the weapon fires.

What does the frequency tag of an item and what are possible values
The game uses frequency values to say how often something appears in the game. The known values are:
* Common
* Uncommon
* Rare
* VeryRare
* Notrandom


What are all the different beam types and how does the game apply the colors?
Known types:
* laser
* blaster
* lightning
* greenparticle
* heavyblaster
* starblaster
* blueparticle


Links to bring color to your game:
HTML Colors
Color Picker - also as download (7kb)
A different Color Picker

Does techorder of a ship have any bearing on the game at all?
Not at the present time.

Whats is first plural?
This is used in the description.
For example
barrels of radioactive waste
vs.
Ares Archcannons

The default is to pluralize the last word in the description, but firstPlural and secondPlural can override it.

What are bullet speed & life time and what do they do?
The actual formula is (Speed * Lifetime)/50 = range

How does combatstyle affect the AI? What are the styles?
a) standard - If you omit the combatStyle attribute you get "standard" combat; most ships use it.
b) standOff - Used by missileship and capital ships. The ship will move out to mid-range away from the target and fire from there. This style works best when the ship has omnidirectional weapons.
c) flyby - Used by Himal interceptors. Not sure if this is an interesting style--it doesn't feel much different.
d) noRetreat - Used by Urak ships. This is the same as "standard" except that the ship will not retreat if it is too close to its target.

What is WMD and what does it do?
WMD = Weapon of mass destruction

1. When hitting a large station, only WMD counts. WMD is some percentage of normal weapon damage, using this table:
* WMD0 = 0%
* WMD1 = 4%
* WMD2 = 10%
* WMD3 = 20%
* WMD4 = 34%
* WMD5 = 52%
* WMD6 = 74%
* WMD7 = 100%


For example, if 10 points of WMD3 damage hit a station, then the station only takes 20% of the damage or 2 points. Regardless of the above, any hit on a station causes at least 1 point of damage, so even weapons with no WMD do some damage (this may or may not change in the future).

Note that only stations with multiHull="true" count as "large stations"

2. Ships generally take full damage (regardless of WMD) but for ships that have "non critical" armor segments, WMD comes into play. The chance that a hit to a non critical segment will destroy the ship increases for WMD weapons.

3. When hitting wrecks, etc. only WMD counts.

List of functions

ArmorClass functions
(armGetName type) -> Name of the armor
(armIsRadiationImmune type) -> True/Nil
(armGetRepairCost type) -> Cost to repair 1 hit point
(armGetRepairTech type) -> Tech level required to repair

Item functions
(itmCreate type count) -> itemStruct
(itmEnumTypes criteria item-var exp)
(itmGetArmorInstalledLocation itemStruct) -> segment #
(itmGetArmorType itemStruct)
(itmGetCategory itemStruct)
(itmGetCharges itemStruct) -> charges
(itmGetCount itemStruct)
(itmGetInstallCost itemStruct) -> cost
(itmGetLevel itemStruct) -> level
(itmGetMass itemStruct) -> mass of single item in Kg
(itmGetName itemStruct flags)
* flag 1 = capitalize
* flag 2 = pluralize
* flag 4 = prefix with 'the' or 'a'
* flag 8 = prefix with count

(itmGetPrice itemStruct) -> price of a single item
(itmGetTypeData itemStruct)
(itmGetUNID itemStruct) -> UNID
(itmGetUseScreen itemStruct)
(itmHasModifier itemStruct modifier)
(itmIsDamaged itemStruct)
(itmIsEnhanced itemStruct) -> Nil or enhancement counts
(itmIsInstalled itemStruct)
(itmIsKnown itemStruct)
(itmMatches itemStruct criteria)
(itmSetKnown {itemStruct | type})
(itmSetReference itemStruct)
(itmHasReference itemStruct)

Miscellaneous functions
(rollDice count sides bonus)
(itmAtCursor itemListCursor) -> itemStruct

Ship functions
(shpAddArmorSpecialAbility ship armorSegment ability) -> True/Nil
(shpAddEnergyField ship fieldUNID lifetime)
(shpCancelOrders ship)
(shpCanInstallDevice ship itemListCursor/itemStruct) ->
* 0 = OK
* 1 = Not a device
* 2 = No slots
* 3 = Already installed
* 4 = Shields already installed
* 5 = Drive already installed
* 6 = Missile launcher already installed

(shpConsumeFuel ship fuel)
(shpDamageArmor obj armorSegment damageType damage)
(shpDecontaminate ship)
(shpIsRadioactive ship)
(shpGetArmorCount ship) -> number of armor segments
(objGetArmorType obj armorSegment) -> CArmorClass *
(objGetArmorDamage obj armorSegment) -> damage to armor segment
(shpGetArmorMaxHitPoints obj armorSegment) -> damage to armor segment
(shpGetClass ship) -> class UNID
(shpGetCargoSpaceLeft ship) -> space left in Kg
(shpGetDirection ship) -> angle
(shpGetEngineCore ship) -> EngineCoreTypes
(shpGetFuelNeeed ship itemStruct) -> items needed
(shpGetFuelLeft ship) -> fuel left
(shpGetItemCharges ship itemListCursor) -> charges
(shpGetItemDeviceName ship itemStruct) -> device name of item (or -1)
(shpGetShieldItemUNID ship) -> UNID (or Nil)
(shpGetShieldDamage ship) -> damage to shields
(shpGetShieldMaxHitPoints ship) -> max hp of shields
(shpInstallArmor ship itemListCursor armorSegment)
(shpInstallAutopilot ship)
(shpInstallTargetingComputer ship)
(shpInstallDevice ship itemListCursor)
(objIsAbandoned obj) -> True/Nil
(shpIsAutopilotInstalled ship)
(shpIsTargetingComputerInstalled ship)
(shpIsSRSEnhanced ship)
(objIsDeviceSlotAvailable ship) -> True/Nil
(objIsShip obj) -> True/Nil
(objIsUnderAttack obj) -> True/Nil
(shpEnhanceItem ship itemListCursor enhanceCode)
Note(v.97): This function currently only works with armor and shields, but you might call it inside a ship's OnCreate (like a Luminous drone) to randomly enhance a ship's armor/shields.
* enhanceCodes (always starts with 0x*Value*, e.g. 0x0101):
* 010X For enhancing hitpoint; 10% hp multiplied with X (e.g., 0101 = +10% hp, 0102 = +20% hp, etc.)
* 810X for reducing hitpoints;-10% hp multiplied with X (e.g., 8101 = -10% hp, 8102 = -20% hp, etc.)
* 0200 Regenerate (like Duralloy, only applies to armor)
* 8200 Decay (like Transuranic, only applies to armor)
* 03YX Reflect damage type Y with X effectiveness (X{effectiveness} starts with 0=50% and rises in 5% steps; Y{dam type} is listed further down)
* 83Y0 Transparency to damage Y, applies only to shields (e.g., 8300 = shield does not absorb laser damage, 8310 = shield does not reflect kinetic damage).
* 050X reduce damage to armor/shield (e.g., 0500 = armor/shield takes 100% of damage; 0501 = 90% of damage; 0502 = 80% of damage, etc.)
* 850X enhance damage to armor/shield (e.g., 8500 = armor/shield takes 100% of damage; 8501 = 111% damage; 8502 = 125% damage; 8503 = 143% damage, etc.)
* 060X reduce ENERGY damage (e.g., laser, particle, etc.). % is same as 050X.
* 860X enhance ENERGY damage. % is same as 850X.
* 070X reduce MATTER damage (e.g., kinetic, blast, etc.). % is same as 050X.
* 870X enhance MATTER damage. % is same as 850X.
* 08YX reduce damage when damage is of type Y or of type Y+1. For example, 080X adjusts damage to armor/shield when hit by either laser or kinetic damage. % is same as 050X.
* 88YX enhance damage when damage is of type Y or of type Y+1. % is same as 850X.
* 09YX reduce damage when damage is of type Y (e.g., 0901 = armor/shield takes 90% damage from laser; 0911 = armor/shield takes 90% damage from kinetic). % is same as 050X.
* 89YX enhance damage when damage is of type Y. % is same as 850X.
* 0AYX reduce damage with % same as 050X. If damage is of type Y+2, adjusts damage with % equal to 1.5 times 050X. (e.g., 0A05: For laser damage, adjustment is 50%; for particle damage, adjustment is 75%.)
* 8AYX If damage is of type Y, enhance damage with % same as 050X. If damage is of type Y+2, adjusts damage with % equal to 1.5 times 850X.
* 0B00 Armor is immune to radiation.
* 0B10 Armor is immune to blinding.
* 0B20 Armor is immune to EMP.
* 0B30 Armor is immune to device damage.
* 0B40 Armor is immune to disintegration.
* 0C00 Armor is immune to blinding/EMP/device damage.
* 8C00 Armor interferes with shields (like meteorsteel) - no shields.
* 0D00 Armor regenerates near sun - solar regeneration.
* 0E00 Armor refuels reactor near sun - solar power.
* 0F0X Shield consumes less power (X values: 0=100%, 1=90% etc. of original value).
* 8F0X Shield consumes more power (8F00 = shield consumes 100% of rated power, 8F01 = consumes 111% of rated power, 8F02 = consumes 125% of rated power, 8F03 = consumes 143% of rated power).
* Reducing: changes by 10% -> x/% 0/100 1/90 2/80 3/70 4/60 5/50 6/40 7/30 8/20 9/10 (A/0?)
* Enhancing: changes by ??? -> x/% 0/100 1/111 2/125 3/143 4/ 5/ 6/ 7/ 8/ 9/ (A/)

(shpEnhanceSRS ship)
(shpMakeBlind ship blindTime)
(shpMakeRadioactive ship)
(shpOrderAttack ship target) -> True/Nil
(shpOrderDock ship destination) -> True/Nil
(shpOrderEscort ship protect [formation]) -> True/Nil
(shpOrderGate ship [gate]) -> True/Nil
(shpOrderLoot ship station) -> True/Nil
(shpOrderPatrol ship center dist) -> True/Nil
(shpOrderWait ship waitTime) -> wait time in seconds (real time)
(shpRechargeItem ship itemListCursor charges)
(shpRechargeShield ship hpToRecharge)
(shpRefuelFromItem ship itemStruct) -> True/Nil
(shpRemoveDevice ship itemListCursor)
(shpSetEngineCore ship EngineCoreTypes)
(objRepairArmor ship armorSegment [hpToRepair])

SpaceObject functions
(objAddItem obj itemStruct)
(objAddRandomItems obj table count)
(objCommunicate obj senderObj msg [obj] [data])
(objEnumItems obj criteria item-cursor-var exp)
(objGateTo obj node entrypoint [effectID])
(objGetCargoSpaceLeft obj) -> space left in Kg
(objGetDamageType obj) -> damage type
(objGetData obj attrib) -> data
(objGetDistance obj destObj) -> distance in light-seconds
(objGetGlobalData obj attrib) -> data
(objGetItems obj criteria) -> list of itemStructs
(objGetName obj flags) -> Name of the object
* flag 1 = capitalize
* flag 2 = pluralize
* flag 4 = prefix with 'the' or 'a'
* flag 8 = prefix with count

(objGetNearestStargate obj) -> obj
(objGetObjRefData obj attrib) -> obj
(objGetPos obj) -> vector
(objGetStaticData obj attrib) -> data
(objGetTarget obj) -> obj
(objGetVisibleDamage obj) -> damage %
(objIncData obj attrib increment)
(objIsKnown obj)
(objJumpeTo obj posVector)
(objLowerShields obj)
(objMakeParalyzed obj time)
(objMoveTo obj posVector)
(objProgramDamage obj hacker progName aiLevel code)
(objRegisterForEvents target obj)
(objRemoveItem obj itemStruct [count]) -> itemStruct
(objSendMessage obj sender msg)
(objSetData obj attrib data)
(objSetGlobalData obj attrib data)
(objSetKnown obj)
(objSetName obj name)
(objSetObjRefData obj attrib obj)
(objUnregisterForEvents target obj)

Station functions
(staClearFireReconEvent station)
(staClearReconned station)
(staGetDockedShips station) -> list of docked ships
(staGetGlobalData type attrib) -> data
(staGetSubordinates station) -> list of subordinates (e.g., guardians)
(staGetType station) -> UNID
(staIsReconned station) -> True/Nil
(staSetActive station)
(staSetFireReconEvent station)
(staSetGlobalData type attrib data)
(staSetImageVariant station variant)
(staSetInactive station)

System functions
(sysAddEncounterEvent delay target encounterID gate)
(sysAddEncounterEventAtDist delay target encounterID distance)
(sysAddObjTimerEvent delay obj event) -> delay in ticks
(sysAddObjRecurringTimerEvent interval obj event) -> interval in ticks
(sysCreateEffect effectID anchor posVector) -> effect
(sysCreateShip classID pos sovereignID [controller]) -> ship
* pos is either a position vector or a gate object
* controller

. "" = standard
. "auton" = auton controller
. "fleet" = fleet controller
(sysCreateStation classID posVector) -> station
(sysFindObject source filter) -> list of objects
* G -> Stargates only
* s -> Include ships
* t -> Include stations (including planets)
* T -> Include structure-scale stations
* T:xyz -> Include stations with attribute 'xyz'
* A -> Active objects only (i.e., objects that can attack)
* B:xyz -> Only objects with attribute 'xyz'
* D:xyz -> Only objects with data 'xyz'
* E -> Enemy objects only
* F -> Friendly objects only
* M -> Manufactured objects only (i.e., no planets or asteroids)
* N -> Return only the nearest object to the source
* N:nn -> Return only objects within nn light-seconds
* O:escort -> Ships ordered to escort source
* R:nn -> Return only objects greater than nn light-seconds away

(sysGetName) -> name
(sysGetObjectByName source name) -> obj
(sysStopTime duration except)
(sysVectorPolarOffset obj angle radius) -> vector, radius in light-seconds
(sysVectorAdd vector vector) -> vector
(sysVectorDivide vector scalar) -> vector
(sysVectorMultiply vector scalar) -> vector
(sysVectorSubtract vector vector) -> vector
(unvGetTick) -> time

Dock Screen functions
(scrEnableAction screen action enabled)
(scrExitDock screen)
(scrGetCounter screen)
(scrGetItem screen) => itemStruct
(scrGetItemListCursor screen) => itemListCursor
(scrRemoveItem screen count) => itemStruct
(scrSetActionLabel screen action label)
(scrSetCounter screen counter)
(scrSetDesc screen description)
(scrSetListFilter screen filter)
(scrShowPane screen pane)
(scrShowPane screen screen [pane])

Player functions
(plyCharge player charge)
(plyComposeString player string)
(plyCredit player credit)
(plyDestroyed player destroyed-text)
(plyGetCredits player) -> Credits left
(plyGetInsuranceClaims player) -> No of insurance claims
(plyIncreaseDominaRel player change)
(plyIncreaseOracusRel player change)
(plyInsure player)
(plyIsInsured player) -> True if insured
(plyMessage player message)


Events in TranscendenceSource:
<OnCreate>
<OnDestroy>
<OnInit>
<OnRefuel>
<OnShieldDown>
<OnShow>
<OnObjDestroyed>
<OnObjDocked>
<OnObjEnteredGate>
<OnObjJumped>
<OnObjReconned>
<OnOrderChanged>


Damage types in order:
0. laser
1. kinetic
2. particle
3. blast
4. ion
5. thermo
6. positron
7. plasma
8. antimatter
9. nano
A. graviton
B. singularity
C. dark acid
D. dark steel
E. dark lightning
F. dark fire

----Notes----
The above is a collection from various threads and serves only as a easy-to-view reminder or help. Should any of the above statements prove incorrect of incomplete please message me and I'll add/change.

Just in case someone wonders - I didn't use the list function because of the linebreaks.

Thanks to everyone contributing and of course to George for providing the platform to mod on. :wink:
Last edited by Blinzler on Sat Mar 17, 2007 8:28 pm, edited 12 times in total.
User avatar
goat not sheep
Militia Captain
Militia Captain
Posts: 669
Joined: Fri May 19, 2006 8:36 pm
Location: ...
Contact:

Oh...fine. It is weapon of mass destruction. Erase the brackets and the question mark. I forgot to put the 'of'.Stupid little words.
>.<
Sponge
Militia Commander
Militia Commander
Posts: 250
Joined: Sun Jan 28, 2007 7:51 pm

Very nice!
I find this color picker to be MUCH better. It even breaks it into sets. All you have to do is add an 0x and copy-paste. This applet better for getting a color fast, as you can pretty much just click the color you wanr and adjust the darkness, but it doesn't break up the HEX code into RBG values, so you have to pick the six digits apart yourself. If you have any idea of how to do HEX colors, it's not even remotely problematic, but nonetheless, it's a bit less user friendly.

George posted a thread a while back detailing out a bunch of cool stuff about enhancements. Maybe you could include some here. Click.
User avatar
Blinzler
Commonwealth Pilot
Commonwealth Pilot
Posts: 75
Joined: Sat Feb 17, 2007 9:28 pm
Location: yah man, where di sun is shining

Been already going through some of the post, but then my computer bonked out on me and I'm just in the process of reinstalling EVERYTHING *mumble*

Added your links, though. And the rest will come, too.
Any more useful links for Transcendence?
Burzmali
Militia Commander
Militia Commander
Posts: 395
Joined: Tue Aug 15, 2006 12:14 am

You can remove:

<OnTimer>
<OnCheckRevenge>
<OnConstruction>
<OnBountyHunterCheck>

They do not exist independently of the sysAddObjTimerEvent function.
User avatar
Blinzler
Commonwealth Pilot
Commonwealth Pilot
Posts: 75
Joined: Sat Feb 17, 2007 9:28 pm
Location: yah man, where di sun is shining

:?:What's the correct list for damagetypes? Seems useful to add this. 0=laser, 1=kinetic, 4=ion, rest =?:?:
:?:Also - is A=100 the largest value or goes it further? (yeah, I know it's kinda stupid to ask, but I want to make sure. Applies to hp and other modifiers, too.):?:
:?:Question: Is this correct? Laser *absorb*, kinetic *reflect*?:?:
:?:Whats the formula behind enhancements (+100% values)?:?:
Yugi
Fleet Officer
Fleet Officer
Posts: 1027
Joined: Sun Mar 05, 2006 8:21 am

DAMAGE TYPES

laser
kinetic
particle
blast
ion
thermo
positron
plasma
antimatter
nano
graviton
singularity
dark acid
dark steel
dark lightning
dark fire
Blinzler wrote:Question: Is this correct? Laser *absorb*, kinetic *reflect*?
Makes no sense to me (most likely a no, then).
Blinzler wrote:Whats the formula behind enhancements (+100% values)?
Please rephrase.
User avatar
Blinzler
Commonwealth Pilot
Commonwealth Pilot
Posts: 75
Joined: Sat Feb 17, 2007 9:28 pm
Location: yah man, where di sun is shining

the line as it now goes:

100%, 111%, 125%, 142%...

Well, seems like my math really sucks these days, 'cos I couldn't find the formula behind it.
User avatar
Betelgeuse
Fleet Officer
Fleet Officer
Posts: 1920
Joined: Sun Mar 05, 2006 6:31 am

is it possible to get what something will take for a hit?
Such as particle resisting paste on various types of armor? (is it added or multiplied?)

also is there a way of viewing the resistance in code of various things?
Crying is not a proper retort!
User avatar
Blitz
Militia Commander
Militia Commander
Posts: 342
Joined: Wed Mar 07, 2007 7:29 am

How does combatstyle affect the AI? I've seen three so far - noretreat, flyby and standoff. Are there any others?
george moromisato
Developer
Developer
Posts: 2997
Joined: Thu Jul 24, 2003 9:53 pm
Contact:

Blitz wrote:How does combatstyle affect the AI? I've seen three so far - noretreat, flyby and standoff. Are there any others?
The other one is, of course, "standard". If you omit the combatStyle attribute you get "standard" combat. The combat styles are basically:

standard: The usual; most ships fight this way.

standOff: Used by missileship and capital ships. The ship will move out to mid-range away from the target and fire from there. This style works best when the ship has omnidirectional weapons.

flyby: Used by Himal interceptors. Not sure if this is an interesting style--it doesn't feel much different.

noRetreat: Used by Urak ships. This is the same as "standard" except that the ship will not retreat if it is too close to its target.
User avatar
Blitz
Militia Commander
Militia Commander
Posts: 342
Joined: Wed Mar 07, 2007 7:29 am

Could this thread be made a sticky? I find it very handy.
Yugi
Fleet Officer
Fleet Officer
Posts: 1027
Joined: Sun Mar 05, 2006 8:21 am

I have a list of bookmarks of handy topics. An entire bookmark folder.
User avatar
Blitz
Militia Commander
Militia Commander
Posts: 342
Joined: Wed Mar 07, 2007 7:29 am

Well, I saved it to my drive. I'll just update it manually if anything new is added. I still think this should be made sticky though. Or maybe George could make a page about modding on the site and put this info and anything else that may be important (like the stuff in the beginning of Transcendence.xml)
User avatar
goat not sheep
Militia Captain
Militia Captain
Posts: 669
Joined: Fri May 19, 2006 8:36 pm
Location: ...
Contact:

This should definatly be a sticky. I looked all over for this!

Anyways, i bookmarked it.
>.<
Post Reply