Zitat von Corti
lesenden [...] Zugriff auf die in der aktuellen Monsterguppe befindlichen Status-Werte
...
input:
EAX = Wert an 4CDE64 EnemyPartyPtr
EDX = EnemyPartySlot
call sub_4BE860 <>GetBattlerData(Enemy)
Lädt ... irgendwas... in ein Array, gibt die Adresse des Arrays in EAX aus. (Wird für die Funktionen unter TLcfgUnitItem verwendet (get Str/Def/Int/Agi/etc.))
Informationen im Array (an Pos +xx):
04 = EnemyPartySlot_ID
08 ?
0C = hidden/escaped_flag
10 = Ptr on ActionList
+4 = Action (0|1|2|3|4|5 = Attack|UseSkill|Transform|UseItem|DoNothing|Random)
+5 = Behavior (0|1|2|3|4 = Atk|DblAtk|Defend|Observe|Charge|SelfDestruct|Esc|None)
+8 = Skill_ID (last used Skill)
+C ?
14 = HP
18 = MP
1C ?
20 ?
24 = NamePtr(?)
28 ?
2C = AttributeAmount
30 = Ptr on Attribute_Array
34 = ConditionAmount
38 = Ptr on Condition_Array
3C ?
...
C0 ?
C4 = ConditionInfo 1
C8 = ConditionInfo 2
CC = ConditionInfo 3
D0 = ConditionInfo 4
D4 = ConditionInfo 5
D8 = Enemy_ID
input:
EAX = Wert an 4CDE0C EnemyParamPtr
EDX = Enemy_ID
call sub_482A80 <>GetEnemyParam
Lädt den Eintrag aus der DB in ein Array, gibt die Adresse des Arrays in EAX aus.
Informationen im Array (an Pos +xx):
04 = Enemy_ID
08 = Enemy_Name
0C = EnemyGraphic_Name
10 = Coloration
14 = Enemy_max.HP
18 = Enemy_max.MP
1C = Enemy_Atk
20 = Enemy_Def
24 = Enemy_Int
28 = Enemy_Agi
2C = Transparency_flag
30 = Drop: Exp
34 = Drop: Gold
38 = Drop: Item_ID
3C = Item_Drop%
40 = Crit_Flag
44 = Crit_Rate
48 = Miss_flag
4C = highest non[C] Condition_ID
50 = Ptr on ConditionArray
54 = highest non[C] Attribute_ID
58 = Ptr on AttributeArray
5C = Ptr on Move Pool(?)
Keine Ahnung, wie man den Zugriff von RT -(read)-> DB auf RT -(write)-> DB umdrehen kann.
Zitat von Corti
*> **>(0x4CDE64 ));
...
Da steht mehr als nur die PartySize drin? Hm...
Zitat von Corti
Monster (TLcfgMonsterItem) erbt von ( TLcfgUnitItem ), die Aufrufe von getMaxHp werden in DynRPG über die vTable gemacht. Was sind das, Funktionszeiger?
...
vTable? Nevermind...
Unter TLcfgMonsterItem und TLcfgUnitItem befinden sich Funktionen zur Vergabe und Berechnung von Werten/Schaden/Logik:
Code:
[...]
47F144(2k)|4BD310(2k3) <>Monster (TLcfgMonsterItem)
47F314(2k)|------(2k3) <>
47F350(2k)|4BD488(2k3) <>
47F3B4(2k)|4BD514(2k3) <>
47F3E4(2k)|4BD550(2k3) <>InitializeBattlerData
47F430(2k)|4BD5DC(2k3) <>
47F44C(2k)|4BD5F8(2k3) <>CreateEnemyBattler
47F520(2k)|4BD74C(2k3) <>SetEnemyName
47F544(2k)|4BD774(2k3) <>SetEnemy_max.HP
47F55C(2k)|4BD790(2k3) <>SetEnemy_max.MP
47F574(2k)|4BD7AC(2k3) <>SetEnemy_Atk
47F58C(2k)|4BD7C8(2k3) <>SetEnemy_Def
47F5A4(2k)|4BD7E4(2k3) <>SetEnemy_Int
47F5BC(2k)|4BD800(2k3) <>SetEnemy_Agi
47F5D4(2k)|4BD81C(2k3) <>SetEnemy_AttributeRes
47F5F4(2k)|4BD840(2k3) <>SetEnemy_ConditionRes
47F614(2k)|4BD864(2k3) <>SetEnemy_Crit
47F664(2k)|4BD8B8(2k3) <>
47F6A0(2k)|4BD900(2k3) <>
47F854(2k)|------(2k3) <>EndEnemyTurn(?)
47F874(2k)|4BDC30(2k3) <>FlashEnemy
47F878(2k)|4BDC38(2k3) <>
47F880(2k)|4BDC44(2k3) <>
47F888(2k)|4BDC50(2k3) <>
47F90C(2k)|4BDCEC(2k3) <>GetExpSpoil
47F924(2k)|4BDD08(2k3) <>GetGoldSpoil
47F93C(2k)|4BDD24(2k3) <>GetItemSpoil(ID)
47F954(2k)|4BDD40(2k3) <>GetItemSpoil(%)
47F96C(2k)|4BDD5C(2k3) <>
47F990(2k)|4BDD84(2k3) <>
47F9B4(2k)|4BDDAC(2k3) <>
47F9DC(2k)|4BDDD8(2k3) <>TransformEnemy
47FAE0(2k)|4BDF6C(2k3) <>EnemyBehavior(?)
------(2k)|4BE6E0(2k3) <>
4801C8(2k)|4BE7B8(2k3) <>
480214(2k)|4BE804(2k3) <>
480244(2k)|4BE834(2k3) <>
480270(2k)|4BE860(2k3) <>GetBattlerData(Enemy)
4802F0(2k)|4BE8E0(2k3) <>LoadEnemyGroup
------(2k)|4BED2C(2k3) <>ReorientateBattler(Enemy)
480394(2k)|4BED9C(2k3) <>
4803DC(2k)|4BEDF4(2k3) <>GetAverageEnemyPartyAgi
480438(2k)|4BEE50(2k3) <>CheckValidEnemyParty
480470(2k)|4BEE88(2k3) <>EnemyAttack(?)
480600(2k)|------(2k3) <>
4807CC(2k)|4BF0D8(2k3) <>EnemyTurn(?)
[...]
4811E0(2k)|4BF140(2k3) <>Action (TLcfgUnitItem)
481338(2k)|4BF29C(2k3) <>
481368(2k)|4BF2CC(2k3) <>
4813AC(2k)|4BF36C(2k3) <>
4813F0(2k)|4BF3B8(2k3) <>
------(2k)|4BF440(2k3) <>GetJobClass
------(2k)|4BF468(2k3) <>
------(2k)|4BF484(2k3) <>
------(2k)|4BF550(2k3) <>ShowMiss
------(2k)|4BF5E4(2k3) <>ShowDamage
------(2k)|4BF694(2k3) <>
481450(2k)|4BF710(2k3) <>RemoveBattleConditions
4814E0(2k)|4BF7A8(2k3) <>
4814E8(2k)|4BF7B0(2k3) <>GetHPColor
48151C(2k)|4BF7E4(2k3) <>GetMPColor
48154C(2k)|4BF814(2k3) <>IncreaseHP
------(2k)|4BF860(2k3) <>
481580(2k)|4BF8D8(2k3) <>DecreaseHP
------(2k)|4BF964(2k3) <>
4815E4(2k)|4BF9C4(2k3) <>IncreaseMP
481608(2k)|4BF9E8(2k3) <>DecreaseMP
481634(2k)|4BFA14(2k3) <>
48172C(2k)|4BFB0C(2k3) <>
481748(2k)|4BFB28(2k3) <>GetStr
4817B8(2k)|4BFBF4(2k3) <>GetDef
481828(2k)|4BFCC0(2k3) <>GetInt
481898(2k)|4BFD5C(2k3) <>GetAgi
481908(2k)|4BFDF8(2k3) <>GetAttributeRes
48192C(2k)|4BFE1C(2k3) <>InitializeAttributeArray
48195C(2k)|4BFE4C(2k3) <>CheckAttribute
4819A4(2k)|4BFE94(2k3) <>SetAttribute
4819EC(2k)|4BFEDC(2k3) <>AttributeRes-1
481A2C(2k)|4BFF1C(2k3) <>AttributeRes+1
481A6C(2k)|4BFF5C(2k3) <>InitializeConditionArray
481A9C(2k)|4BFF8C(2k3) <>CheckCondition
481AE4(2k)|4BFFD4(2k3) <>SetCondition
481B2C(2k)|4C001C(2k3) <>InflictCondition
481C90(2k)|4C019C(2k3) <>RemoveCondition
481D04(2k)|4C02EC(2k3) <>GetHighestPriorityCondition
481D6C(2k)|4C0354(2k3) <>GetCondition
481DB8(2k)|4C03A0(2k3) <>GetConditionColor
------(2k)|4C03CC(2k3) <>SetEnemyConditionInfo
481DF0(2k)|4C04A4(2k3) <>GetConditionHitDeBuff
------(2k)|4C0504(2k3) <>GetEvadeAllAttacksFlag
------(2k)|4C0560(2k3) <>GetReflectSkillsFlag
------(2k)|4C05BC(2k3) <>GetFixEquipFlag
481E50(2k)|4C0618(2k3) <>FullRecovery
481E94(2k)|------(2k3) <>AssignTurnOrder
481EE8(2k)|4C0688(2k3) <>CheckValidTarget
481EFC(2k)|4C069C(2k3) <>GetParalysisFlag
481F4C(2k)|4C06EC(2k3) <>GetBerserkFlag
481F9C(2k)|4C073C(2k3) <>GetConfusionFlag
481FEC(2k)|4C078C(2k3) <>CheckEnemyResponsiveness(?)
482018(2k)|4C07B8(2k3) <>CheckRecovery(?)
4820A8(2k)|4C0848(2k3) <>
482344(2k)|4B9834(2k3) <>CalcPhysDamage
------(2k)|4C0B2C(2k3) <>CalcPhysDamage(Enemy)
48248C(2k)|4C0DBC(2k3) <>CalcSkillDamage
48266C(2k)|4C0FFC(2k3) <>
------(2k)|4C110C(2k3) <>
------(2k)|4C1114(2k3) <>
------(2k)|4C1150(2k3) <>
------(2k)|4C1178(2k3) <>
[...]