How ME RPG abilities are made
Posted: Sun May 04, 2014 4:54 pm
First- how it works:
You buy abilities in RPG menu. They are activated at the start of the match / join and (should be) when bought. Abilities are responsible for passive effects and giving you artifacts (those thingies you activate :stongue: ).
RPG menu lets you buy abilities it finds in 'MonsterAssaultRPG.ini' (that's standard for UT2k4 RPG systems). Classes and Promote Ranking count as (special) abilities. Lets see that list:
As we can see when you want to add new Ability to use, you create new line (wherever in list) like that:
Abilities=Class'PackageName.AbilityName'
Obviously "PackageName" is the name of package (.u) in which your ability is.
E.G. " Abilities=Class'SillyRPG.AbilityCraftAutoTurret' "
"AbilityCraftAutoTurret" is the name of ability ("Ability" isn't added) and it's inside file 'SillyRPG.u'
Where are your purchased abilities stored? - In the same file (server-side). Every character has its own 'character sheet' at the bottom of this .ini , that looks like this:
Class is always ability number 0 , Promote Ranking number 1(When you have it, meaning you are R2).
First "AbilityLevels=" describes first "Abilities=" , etc.
[/color]Warning: If Parent ability is listed after ability extending it, the Parent will derp. This can be avoided by requiring in ability to buy its Parent first. (Warning: the same goes for artifacts with their Parent artifacts and abilities order decides artifacts order ).
BTW: If stats cost for ability changes, RPG system should recount how much stats points chars have (It seems to really like recounting that XD).
Artifacts are activated with commands 'InventoryActivate' and 'AltActivateItem' . Those actually call respective functions in artifact class.
(yay we have name clash. lets say that you have rocket launcher, it's one of many rocket launchers, so it's an object of given type (rocket launcher). Class is what that type is. Artifacts and Abilities have classes while RPG classes are Abilities. :banana:
e.g. there is Artifact class called 'ArtifactExample' , It has variables: 'AbilityLevel' and 'ManaCost' , also functions: 'GetManaCost' and 'Activate'.
On match start one of your abilities gives you this artifact: creates an object of the class 'ArtifactExample' belonging to you and sets its 'AbilityLevel' to the level of Ability you have.
Some time later you select 'ArtifactExample' and activate it: that calls function 'Activate' in it and that function does something it was supposed to do :stongue: and calls function 'GetManaCost' which sets 'ManaCost' of your artifact, then function 'Activate' continues and charges you mana using recently set variable 'ManaCost' (//And I know it can be done with GetManaCost without ManaCost)).
You buy abilities in RPG menu. They are activated at the start of the match / join and (should be) when bought. Abilities are responsible for passive effects and giving you artifacts (those thingies you activate :stongue: ).
RPG menu lets you buy abilities it finds in 'MonsterAssaultRPG.ini' (that's standard for UT2k4 RPG systems). Classes and Promote Ranking count as (special) abilities. Lets see that list:
Code: Select all
Abilities=Class'MonsterAssaultRPG.AbilityClassPaladin'
Abilities=Class'MonsterAssaultRPG.AbilityClassSupport'
Abilities=Class'MonsterAssaultRPG.AbilityClassBerserk'
Abilities=Class'MonsterAssaultRPG.AbilityPromoteRanking'
Abilities=Class'MonsterAssaultRPG.AbilityAdvancedMedkit'
Abilities=Class'MonsterAssaultRPG.AbilityAggravator'
Abilities=Class'MonsterAssaultRPG.AbilityAirborne'
Abilities=Class'MonsterAssaultRPG.AbilityEnhancedHealthPickup'
Abilities=Class'MonsterAssaultRPG.AbilityMedicAwareness'
Abilities=Class'MonsterAssaultRPG.AbilityMedkit'
Abilities=Class'MonsterAssaultRPG.AbilityPersonalMedkit'
Abilities=Class'MonsterAssaultRPG.AbilitySpiritMastery'
Abilities=Class'MonsterAssaultRPG.AbilitySummonSpirit'
Abilities=Class'MonsterAssaultRPG.AbilityArmorSupremacy'
Abilities=Class'MonsterAssaultRPG.AbilityReinforcedArmor'
Abilities=Class'MonsterAssaultRPG.AbilitySummonGuardian'
Abilities=Class'MonsterAssaultRPG.AbilityExperiencedHealing'
Abilities=Class'MonsterAssaultRPG.AbilityLifeCord'
Abilities=Class'MonsterAssaultRPG.AbilityHighMetabolism'
Abilities=Class'MonsterAssaultRPG.AbilityLoadedMedic'
Abilities=Class'MonsterAssaultRPG.AbilityRegeneration'
Abilities=Class'MonsterAssaultRPG.AbilitySummonOakSage'
Abilities=Class'MonsterAssaultRPG.AbilityAegis'
Abilities=Class'MonsterAssaultRPG.AbilityEnhancedArmor'
Abilities=Class'MonsterAssaultRPG.AbilityFieldMedic'
Abilities=Class'MonsterAssaultRPG.AbilitySummonSpecter'
Abilities=Class'MonsterAssaultRPG.AbilityAdrenalDrip'
Abilities=Class'MonsterAssaultRPG.AbilityAdrenalSurge'
Abilities=Class'MonsterAssaultRPG.AbilityAdrenalSyringe'
Abilities=Class'MonsterAssaultRPG.AbilityAmmoDump'
Abilities=Class'MonsterAssaultRPG.AbilityEnergyLeech'
Abilities=Class'MonsterAssaultRPG.AbilityEnergyTransfer'
Abilities=Class'MonsterAssaultRPG.AbilityEnhancedAdrenalinePickups'
Abilities=Class'MonsterAssaultRPG.AbilityTransMechanic'
Abilities=Class'MonsterAssaultRPG.AbilityLoadedEnforcer'
Abilities=Class'MonsterAssaultRPG.AbilityCompanionSacrifice'
Abilities=Class'MonsterAssaultRPG.AbilityVigor'
Abilities=Class'MonsterAssaultRPG.AbilityImplosion'
Abilities=Class'MonsterAssaultRPG.AbilityReadiness'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsFeralBranch'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsSkaarjBranch'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsFeralAirGasbag'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsFeralAirRazorFly'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsFeralAirDragon'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsFeralLandShrike'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsFeralLandRaptor'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsFeralLandTitan'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsSkaarjSlith'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsSkaarjSkaarjWarrior'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsSkaarjQueen'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsWarSkaarjSkaarjTrooper'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsWarSkaarjBrute'
Abilities=Class'MonsterAssaultRPG.AbilitySummonsWarSkaarjWarlord'
Abilities=Class'MonsterAssaultRPG.AbilityAmmoPouch'
Abilities=Class'MonsterAssaultRPG.AbilityEnhancedAmmoPickups'
Abilities=Class'MonsterAssaultRPG.AbilityFury'
Abilities=Class'MonsterAssaultRPG.AbilityLifeSiphon'
Abilities=Class'MonsterAssaultRPG.AbilityLoadedBerserker'
Abilities=Class'MonsterAssaultRPG.AbilityRetaliation'
Abilities=Class'MonsterAssaultRPG.AbilityShout'
Abilities=Class'MonsterAssaultRPG.AbilityTriggerHappy'
Abilities=Class'MonsterAssaultRPG.AbilityVengeance'
Abilities=Class'MonsterAssaultRPG.AbilityCryofRepulsion'
Abilities=Class'MonsterAssaultRPG.AbilityPerpetuatingSoul'
Abilities=Class'MonsterAssaultRPG.AbilitySeekingRevenge'
Abilities=Class'MonsterAssaultRPG.AbilityWeaponSmithing'
Abilities=Class'MonsterAssaultRPG.AbilityFrenzy'
Abilities=Class'MonsterAssaultRPG.AbilityLockedAndLoaded'
Abilities=Class'MonsterAssaultRPG.AbilityCriticalShot'
Abilities=Class'MonsterAssaultRPG.AbilitySacrifice'
Abilities=Class'MonsterAssaultRPG.AbilityMonsterResistances'
Abilities=Class'MonsterAssaultRPG.AbilityMonsterVitality'
Abilities=Class'MonsterAssaultRPG.AbilityAirMaster'
Abilities=Class'MonsterAssaultRPG.AbilityAuthoritativeKeeper'
Abilities=Class'MonsterAssaultRPG.AbilityHaste'
Abilities=Class'MonsterAssaultRPG.AbilityIronLegs'
Abilities=Class'MonsterAssaultRPG.AbilityPowerJump'
Abilities=Class'MonsterAssaultRPG.AbilityShieldsUp'
Abilities=Class'MonsterAssaultRPG.AbilityLungCapacity'
Abilities=Class'MonsterAssaultRPG.AbilityRecall'
Abilities=Class'MonsterAssaultRPG.AbilitySpeedSwitcher'
Abilities=Class'MonsterAssaultRPG.AbilityCautiousness'
Abilities=Class'MonsterAssaultRPG.AbilityHighRankBonus'
Abilities=Class'MonsterAssaultRPG.AbilityTreasureHunter'
Abilities=Class'MonsterAssaultRPG.AbilityAuraFX'
Abilities=Class'ME_RPGExpansion.AbilityClassNecromancer'
Abilities=Class'ME_RPGExpansion.AbilityClassMechanic'
Abilities=Class'ME_RPGExpansion.AbilityHallowedWarrior'
Abilities=Class'ME_RPGExpansion.AbilityAgonizingDemise'
Abilities=Class'ME_RPGExpansion.AbilityArcaneReclamation'
Abilities=Class'ME_RPGExpansion.AbilityCarrionMetamorphosis'
Abilities=Class'ME_RPGExpansion.AbilityCarrionStores'
Abilities=Class'ME_RPGExpansion.AbilityDeathWard'
Abilities=Class'ME_RPGExpansion.AbilityDecay'
Abilities=Class'ME_RPGExpansion.AbilityExtendedRetention'
Abilities=Class'ME_RPGExpansion.AbilityPrematureBurial'
Abilities=Class'ME_RPGExpansion.AbilityRehabilitatingMucus'
Abilities=Class'ME_RPGExpansion.AbilitySoulTransfer'
Abilities=Class'ME_RPGExpansion.AbilitySummonMastery'
Abilities=Class'ME_RPGExpansion.AbilitySummonRegeneration'
Abilities=Class'ME_RPGExpansion.AbilityUnnaturalShout'
Abilities=Class'ME_RPGExpansion.AbilityVenomContainment'
Abilities=Class'ME_RPGExpansion.AbilityFatigue'
Abilities=Class'ME_RPGExpansion.AbilityGhostsofAnguish'
Abilities=Class'ME_RPGExpansion.AbilityPlague'
Abilities=Class'ME_RPGExpansion.AbilityPreservation'
Abilities=Class'ME_RPGExpansion.AbilityPutridExpiration'
Abilities=Class'ME_RPGExpansion.AbilityReapingEnergy'
Abilities=Class'ME_RPGExpansion.AbilityTaintedSummons'
Abilities=Class'ME_RPGExpansion.AbilityToxicProficiency'
Abilities=Class'ME_RPGExpansion.AbilityWraith'
Abilities=Class'ME_RPGExpansion.AbilityBloodFrenzy'
Abilities=Class'ME_RPGExpansion.AbilityIronMaiden'
Abilities=Class'ME_RPGExpansion.AbilityPoisonSupremacy'
Abilities=Class'ME_RPGExpansion.AbilityImmortality'
Abilities=Class'ME_RPGExpansion.AbilityPierceArmor'
Abilities=Class'ME_RPGExpansion.AbilityPoisonMastery'
Abilities=Class'ME_RPGExpansion.AbilitySummonSkeleton'
Abilities=Class'ME_RPGExpansion.AbilitySummonZombie'
Abilities=Class'ME_RPGExpansion.AbilityRevivification'
Abilities=Class'ME_RPGExpansion.AbilitySummonForgotten'
Abilities=Class'ME_RPGExpansion.AbilitySummonDemon'
Abilities=Class'ME_RPGExpansion.AbilitySummonSkeletalMage'
Abilities=Class'ME_RPGExpansion.AbilitySummonChampion'
Abilities=Class'ME_RPGExpansion.AbilityArmorShards'
Abilities=Class'ME_RPGExpansion.AbilityCraftSpiderMines'
Abilities=Class'ME_RPGExpansion.AbilityGrenadeBundles'
Abilities=Class'ME_RPGExpansion.AbilityHauler'
Abilities=Class'ME_RPGExpansion.AbilityRecycle'
Abilities=Class'ME_RPGExpansion.AbilitySentinel'
Abilities=Class'ME_RPGExpansion.AbilityStockpile'
Abilities=Class'ME_RPGExpansion.AbilityWeaponCraftsman'
Abilities=Class'SillyRPG.AbilityCraftAutoTurret'
Abilities=Class'ME_RPGExpansion.AbilityAmplifyDamage'
Abilities=Class'ME_RPGExpansion.AbilityMonsterRegeneration'
Abilities=Class'ME_RPGExpansion.AbilityMonsterStrength'
Abilities=Class'MonsterAssaultRPG.AbilityVehicleVitality'
Abilities=Class'MonsterAssaultRPG.AbilityVehicleArmory'
Abilities=Class'MonsterAssaultRPG.AbilityVehicleMastery'
Abilities=Class'ME_RPGExpansion.AbilityEnforcedHull'
Abilities=Class'ME_RPGExpansion.AbilityResurgence'
Abilities=Class'PackageName.AbilityName'
Obviously "PackageName" is the name of package (.u) in which your ability is.
E.G. " Abilities=Class'SillyRPG.AbilityCraftAutoTurret' "
"AbilityCraftAutoTurret" is the name of ability ("Ability" isn't added) and it's inside file 'SillyRPG.u'
Where are your purchased abilities stored? - In the same file (server-side). Every character has its own 'character sheet' at the bottom of this .ini , that looks like this:
Code: Select all
[Mechanic RPGPlayerDataObject]
OwnerID=xxx //Game ID
Level=200
Experience=5
WeaponSpeed=0
HealthBonus=100
AdrenalineMax=800
AmmoMax=50
Physical=-25
Fire=0
Cold=-25
Lightning=0
Poison=-25
Explosive=-25
CloseQuarters=-25
RapidFire=-25
Rifle=-25
Sharpshooter=-25
Deployment=-25
HealthCap=500
AdrenalineCap=800
AmmoCap=500
ResistanceCap=60
WeaponMasteryCap=155
PointsAvailable=730
NeededExp=10
ExperienceFraction=0.091683
ExplosiveExp=0.000000
CloseQuartersExp=1.587629
RapidFireExp=0.000000
RifleExp=0.000000
SharpshooterExp=0.000000
DeploymentExp=0.000000
LastPlayDate=5-3-2014
NextRankNameExp=3000
ClassPrefixName=Beginner
BotAbilityGoal=None
BotGoalAbilityCurrentLevel=0
TotalExperienceEarned=5
Kills=55
Deaths=3
Objectives=0
Victories=0
Matches=1
Time=4227
Donations=0
Flawless=0
CriticalPlayer=0
LastManStanding=0
TeamPlayer=0
Headhunter=0
Contributor=0
Abilities=Class'ME_RPGExpansion.AbilityClassMechanic'
Abilities=Class'MonsterAssaultRPG.AbilityPromoteRanking'
Abilities=Class'ME_RPGExpansion.AbilityRecycle'
Abilities=Class'ME_RPGExpansion.AbilityHauler'
Abilities=Class'ME_RPGExpansion.AbilityStockpile'
Abilities=Class'ME_RPGExpansion.AbilitySentinel'
Abilities=Class'ME_RPGExpansion.AbilityCraftSpiderMines'
Abilities=Class'SillyRPG.AbilityCraftAutoTurret'
Abilities=Class'MonsterAssaultRPG.AbilityShieldsUp'
Abilities=Class'ME_RPGExpansion.AbilityWeaponCraftsman'
AbilityLevels=1
AbilityLevels=3
AbilityLevels=1
AbilityLevels=2
AbilityLevels=6
AbilityLevels=10
AbilityLevels=1
AbilityLevels=4
AbilityLevels=2
AbilityLevels=10
Relics=21
First "AbilityLevels=" describes first "Abilities=" , etc.
[/color]Warning: If Parent ability is listed after ability extending it, the Parent will derp. This can be avoided by requiring in ability to buy its Parent first. (Warning: the same goes for artifacts with their Parent artifacts and abilities order decides artifacts order ).
BTW: If stats cost for ability changes, RPG system should recount how much stats points chars have (It seems to really like recounting that XD).
Artifacts are activated with commands 'InventoryActivate' and 'AltActivateItem' . Those actually call respective functions in artifact class.
(yay we have name clash. lets say that you have rocket launcher, it's one of many rocket launchers, so it's an object of given type (rocket launcher). Class is what that type is. Artifacts and Abilities have classes while RPG classes are Abilities. :banana:
e.g. there is Artifact class called 'ArtifactExample' , It has variables: 'AbilityLevel' and 'ManaCost' , also functions: 'GetManaCost' and 'Activate'.
On match start one of your abilities gives you this artifact: creates an object of the class 'ArtifactExample' belonging to you and sets its 'AbilityLevel' to the level of Ability you have.
Some time later you select 'ArtifactExample' and activate it: that calls function 'Activate' in it and that function does something it was supposed to do :stongue: and calls function 'GetManaCost' which sets 'ManaCost' of your artifact, then function 'Activate' continues and charges you mana using recently set variable 'ManaCost' (//And I know it can be done with GetManaCost without ManaCost)).