I'm starting with the main type hierarchy: GameObject. I wanted to know, assuming inheritance as a valid form of polymorphism, what is the type hierarchy of GameObject, and to which types each field belong? I have an approximation here, but I'd like to know if anyone has narrowed it down to perfection:
---------------------------------------
-- Fields I don't know where to fit: --
---------------------------------------
.owner
.hudAmmo
.hudMaxAmmo --used for Jhin/Graves bullets or Annie stun or even Kled mount health; use with caution on other champs because it's not always 0 by default
.isTargetableToTeam --works for turrets
.posTo
.dir --I would assume it's the unit's facing vector - the way it's turned to?
.distance --is this a field at all?
.isCampUp --no idea where Jungle Camps fit in the hierarchy! To think of it, if the Obj_* constants are all the possible
--values of GameObject.type, and considering each of those should or at least could have their own separate C++ type,
--then I have much more to understand about the GameObject type hierarchy than I thought, mainly that most of the fields
--that I wrote under the root class do not belong to it.
.activeSpellSlot
.isChanneling
.missileData
----------------------------------------
-- Data types related by composition: --
----------------------------------------
AttackState (enum class)
{ STATE_UNKNOWN, STATE_ATTACK, STATE_WINDUP, STATE_WINDDOWN }
struct Vector
.x
.y
.z
struct AttackData
.state (AttackState, view enum class type above)
.windUpTime
.windDownTime
.animationTime
.endTime
.castFrame
.projectileSpeed
.target //NOT SURE WHO HAS THIS FIELD.
struct LevelData
.exp
.lvl
.lvlPts
struct ActiveSpell
.valid --always use this to check if it's casting
.name
.startPos
.placementPos
.target
.windup
.animation
struct MissileData
.name -- string
.owner -- GameObject handle
.target -- GameObject handle
.startPos -- Vector
.endPos -- Vector
.placementPos -- Vector
.range
.delay
.speed
.width
.manaCost
struct SpellData
.name
.level
.castTime
.cd
.currentCd
.ammo
.ammoTime
.ammoCd
.ammoCurrentCd
.toggleState
.range
.mana
.width
.speed
.targetingType
.coneAngle
.coneDistance
.acceleration
.castFrame
.maxSpeed
.minSpeed
struct ItemData
.itemID
.stacks
.ammo
struct Buff
.type
.name
.startTime
.expireTime
.duration
.stacks
.count
.sourcenID
.sourceName
----------------------------------------
-- Data types related by inheritance: --
----------------------------------------
GameObject --(root type)
functional properties:
.buffCount
.isMe
.isAlly
.isEnemy
.pos2D
.posMM
fields:
.networkID
.handle -- use for missile owner/target check
.chnd --use for camp handle
.team
.type
.name
.charName
.health
.maxHealth
.baseDamage
.bonusDamage
.totalDamage
.attackSpeed
.armor
.bonusArmor
.magicResist
.bonusMagicResist
.hpRegen
.mpRegen
.range
.boundingRadius
.dead
.visible
.isImmortal -- NOT SURE IF THIS IS A FIELD OR FUNCTIONAL PROPERTY, BUT I WOULD GUESS FUNCTIONAL PROPERTY
.isTargetable
.pos
.attackData (AttackData, view struct type above)
.activeSpell (ActiveSpell, view struct type above)
Unit : GameObject
fields:
.mana
.maxMana
.shieldAD
.shieldAP
.cdr
.armorPen
.armorPenPercent
.bonusArmorPenPercent
.magicPen
.magicPenPercent
.ms
.ap
.valid --IS THIS A FUNCTIONAL PROPERTY? HOW DOES IT WORK?
methods:
:GetSpellData(iSlot) --(SpellData, view struct type above)
:GetItemData(index) --(ItemData, view struct type above)
:GetBuff(index) --(Buff, view struct type above)
:GetPrediction(speed,delay) --(Vector, view struct type above)
:GetCollision(width,speed,delay) --(int, DON'T KNOW WHAT THIS RETURNS)
:IsValidTarget(range,team check,source or pos)
Minion : Unit --(According to the documentation, only these 2 fields.)
.bonusDamagePercent
.flatDamageReduction
Hero : Unit
fields:
.lifeSteal
.spellVamp
.critChance
.gold
.totalGold
.levelData
Turret : GameObject
fields:
.targetID
Sign In
Create Account

Back to top
Report







