I need someone who knows MKP Season 2.9 / final MKP codes work, as I need to add the missing thing.
I am trying to do 2 things as I want to use some non-MKP characters as well:
1) Make the non-MK character finishable - for now leaving aside adding specific animations for each finisher, just to make them finishable by MKP chars, so the non-MK chars do not fight after entering Finish Him/Her
2) Add some basic finishing move to the non-MK character, for now I will just repeat the same type of move and code shared by these non-MK characters. But most importantly - have the non-MK character cause enemy to go Dizzy and Finish Him code. This is exactly what I am having trouble with and I will expand below:
1) More or less I have done that, so I will also post this as tutorial because lots of the knowledge is nowhere to be found I just come across my threads when I google.
Let's take Captain America but I am trying with simpler chars that will use less states.
-------------------------- The CMD
MKP uses 2 specific commands in the char's CMD so why not add things in CMD first as they are the frame of where other things go further.
I start with adding the Remap keys that are often seen in MKP char's CMD:
[Remap]
c = y
z = b
b = c
y = z
Then the 2 important MKP commands are in ;-| Hold Dir |-------------------------------------------------------------- where it has ;Required (do not remove) commands, so I add there among the others:
[Command]
name = "run" ;Required (do not remove)
command = /c
time = 1
[Command]
name = "blok" ;Required (do not remove)
command = /z
time = 1
Then a non-MK char CMD will not have, it has a section for the Finisher command, I am planning for basic finishers: mercy (I don't care if that works). 1 fatality, stage because I use stage finishers.
So right below the above 2 commands, can add this:
[Command]
name = "fatal3"
command = F,F,F
time = 50
[Command]
name = "mercy"
command = D,D,D,~c
time = 50
buffer.time = 14
[Command]
name = "stage"
command = /$D,x
time = 40
This means that I will have a fatal made with F,F,F to work. I took Riuky's uppercut fatal where he explodes the enemy and this will be the common fatal I will use for such non-MK chars, has the name "fatal3".
So next you need to tell what this command will do, so in CMD's [Statedef -1] add:
(I have some stage code here to send to some state number too)
---------------
Since the goal is "fatal3", what is this statedef 3200 it wants to go to?
MKP Chars have the Finishers.st file listed in their .def, that contain the Statedef's for each finisher, what happens to maker and what happens to the loser, so I separated the file as NonMKCharsFinishers.st that contains only this fatal and it will be used by others non-MK as well. I tested already with Riuky - the code that it has is enough to run, so I separated correct amount of code. So this NonMKCharsFinishers.st would have:
;-------FATAL 3
[Statedef 3200]
type = S
movetype = A
physics = S
juggle = 2
ctrl = 0
velset = 0,0
..etc.
In this way CMD has everything needed.
-------------------------- The DEF & Char's CNS
MKP Chars have their Win states (180-185) shared in MKP's COMMON1.CNS and Win sounds/state are often removed from their main CNS.
Unlike them, the non-MK chars often have not only Win states but also Statedef -3 still in their main (CharName).cns.
This means often code needed for some things from MKP's COMMON1.CNS will have to be copied to the char's CNS in its own Statedef -3. Forcing a non-MK char to use the MKP's COMMON1.CNS is not needed it can even use their own Mugen default Common1.cns.
in DEF file, adding these to a non-MK char's def file
st2 = ../../Data/MKP/Bmoves.st ;----May not be needed at all
st3 = ../../Data/MKP/Pit.st ;----Can be needed if it contains stage-specific states
st4 = ../../Data/MKP/Fatality.st ;----Best to be listed as it may use finish sound
st5 = ../../Data/MKP/NonMKCharsFinishers.st
stcommon = ../../Data/Common1.cns
Since a char will keep their Statedef -3 in their own CNS no need to use MKP's COMMON1.CNS and instead Mugen default Common1.cns with which they normally work.
Thanks to adding the "blok" and "run" in CMD the Char will not crash but let's see what works:
1) A non-MK char does become dizzy on finish (I think that is why you need Fatality.st to be linked and for sure the code hidden below is needed for the losing Char that will be finished) and does not go on fighting, so my 1) is complete, unpolished but works.
MKP's COMMON1.CNS uses a code in Statedef -3 that tells it directly to check some Var's, Explods and based on them run the Finish Him/Her Text Effect, sound and causes P2 to enter Dizzy and what happens if finisher is made or just falls:
[State -2, hit];friendship/babality si esta en cero se puede hacer
type = VarSet
trigger1 = roundstate = 2
trigger1 = command = "blok"
v = 54
value = 1
[State -2, air hit]
type = targetvelset
trigger1 = target,stateno = [5000,5012]
trigger1 = stateno = 601 || stateno = 611
x = -1
;Cosas de Danger
[State -3, variable danger]
type = varset
trigger1 = life > 60
trigger1 = var(44) = 1
v = 44
value = 0
[State -3, if p2 dead]
type = null;selfstate
trigger1 = p2stateno = 9001 && (statetype = S || statetype = C) && (ctrl = 1 || (stateno = [0,430]))
value = 0
ctrl = 0
[State -3, can not see]
type = varset
trigger1 = var(50) = 1 && life < 2
v = 50
value = 0
ignorehitpause = 1
persistent = 1
[State -3, can not see]
type = varset
triggerall = var(50) = 1
trigger1 = enemy,var(17) = 1
v = 50
value = 2
ignorehitpause = 1
persistent = 1
[State -3, can see though]
type = varset
triggerall = var(50) = 2
trigger1 = p2stateno = 52
trigger2 = p2movetype = H
trigger3 = enemy,movecontact
trigger4 = p2bodydist x < 3
trigger5 = p2stateno = 107
trigger6 = movetype = H
trigger7 = random > 994 && random%28 < AILevel
trigger8 = var(17) != 0 && random%7 = 0
v = 50
value = 1
ignorehitpause = 1
persistent = 1
The problem is that the non-MK char does not trigger P2's Dizzy Finish Him/Her at all - and that is what I'm trying to make, I excluded code in Riuky and saw if I delete
[State -2, 0]
type = varset
triggerall = Win = 1
triggerall = NumHelper(9010) = 0
trigger1 = teammode = single
trigger2 = teammode = simul
trigger3 = teammode = turns
v = 59
value = 1
he will win without finish text so if that code matters, not enough because a non-MK char will not make P2 dizzy even with all that code added in their own Statedef -3. I may be missing some anims 888, 9000 ? I added these dummies but again not sure what else to make the non-MK char make enemy in Finish Him / Dizzy.
Question
MKImpc7R
I need someone who knows MKP Season 2.9 / final MKP codes work, as I need to add the missing thing.
I am trying to do 2 things as I want to use some non-MKP characters as well:
1) Make the non-MK character finishable - for now leaving aside adding specific animations for each finisher, just to make them finishable by MKP chars, so the non-MK chars do not fight after entering Finish Him/Her
2) Add some basic finishing move to the non-MK character, for now I will just repeat the same type of move and code shared by these non-MK characters. But most importantly - have the non-MK character cause enemy to go Dizzy and Finish Him code. This is exactly what I am having trouble with and I will expand below:
1) More or less I have done that, so I will also post this as tutorial because lots of the knowledge is nowhere to be found I just come across my threads when I google.
Let's take Captain America but I am trying with simpler chars that will use less states.
-------------------------- The CMD
MKP uses 2 specific commands in the char's CMD so why not add things in CMD first as they are the frame of where other things go further.
I start with adding the Remap keys that are often seen in MKP char's CMD:
[Remap]
c = y
z = b
b = c
y = z
Then the 2 important MKP commands are in ;-| Hold Dir |-------------------------------------------------------------- where it has ;Required (do not remove) commands, so I add there among the others:
[Command]
name = "run" ;Required (do not remove)
command = /c
time = 1
[Command]
name = "blok" ;Required (do not remove)
command = /z
time = 1
Then a non-MK char CMD will not have, it has a section for the Finisher command, I am planning for basic finishers: mercy (I don't care if that works). 1 fatality, stage because I use stage finishers.
So right below the above 2 commands, can add this:
;-[Finishers]----------------------------------------------------
[Command]
name = "fatal3"
command = F,F,F
time = 50
[Command]
name = "mercy"
command = D,D,D,~c
time = 50
buffer.time = 14
[Command]
name = "stage"
command = /$D,x
time = 40
This means that I will have a fatal made with F,F,F to work. I took Riuky's uppercut fatal where he explodes the enemy and this will be the common fatal I will use for such non-MK chars, has the name "fatal3".
So next you need to tell what this command will do, so in CMD's [Statedef -1] add:
;~~~~Finishers~~~~
;Based On Raiden Uppercut
[State -1,fatal]
type = ChangeState
value = 3200
triggerall = p2bodydist X < 30
trigger1 = command = "fatal3"
triggerall = p2stateno = 9010
triggerall = statetype = S||statetype = C
triggerall = ctrl = 1||stateno = 10
trigger1 = command != "run"
trigger1 = var(50) = 0
trigger2 = enemy,time > 60
trigger2 = var(50) = 1 && random%40 < AILevel&& AILevel > 1+random%2
[State -1,mercy]
type = ChangeState
value = 3997
triggerall = ctrl = 1||stateno = [10,12]
triggerall = RoundNo >= 3
triggerall = numexplod(3800) = 0
triggerall = p2stateno = 9010
triggerall = statetype = S || statetype = C
trigger1 = command = "mercy"
triggerall = p2bodydist X >= 100
trigger2 = enemy,time > 60
trigger2 = var(50) = 1 && random%21 < AILevel
trigger2 = random + 600 < life || random%6 > AILevel
;~~~~Stage~~~~
(I have some stage code here to send to some state number too)
---------------
Since the goal is "fatal3", what is this statedef 3200 it wants to go to?
MKP Chars have the Finishers.st file listed in their .def, that contain the Statedef's for each finisher, what happens to maker and what happens to the loser, so I separated the file as NonMKCharsFinishers.st that contains only this fatal and it will be used by others non-MK as well. I tested already with Riuky - the code that it has is enough to run, so I separated correct amount of code. So this NonMKCharsFinishers.st would have:
;-------FATAL 3
[Statedef 3200]
type = S
movetype = A
physics = S
juggle = 2
ctrl = 0
velset = 0,0
..etc.
In this way CMD has everything needed.
-------------------------- The DEF & Char's CNS
MKP Chars have their Win states (180-185) shared in MKP's COMMON1.CNS and Win sounds/state are often removed from their main CNS.
Unlike them, the non-MK chars often have not only Win states but also Statedef -3 still in their main (CharName).cns.
This means often code needed for some things from MKP's COMMON1.CNS will have to be copied to the char's CNS in its own Statedef -3. Forcing a non-MK char to use the MKP's COMMON1.CNS is not needed it can even use their own Mugen default Common1.cns.
in DEF file, adding these to a non-MK char's def file
st2 = ../../Data/MKP/Bmoves.st ;----May not be needed at all
st3 = ../../Data/MKP/Pit.st ;----Can be needed if it contains stage-specific states
st4 = ../../Data/MKP/Fatality.st ;----Best to be listed as it may use finish sound
st5 = ../../Data/MKP/NonMKCharsFinishers.st
stcommon = ../../Data/Common1.cns
Since a char will keep their Statedef -3 in their own CNS no need to use MKP's COMMON1.CNS and instead Mugen default Common1.cns with which they normally work.
Thanks to adding the "blok" and "run" in CMD the Char will not crash but let's see what works:
https://streamable.com/eq2qq3
1) A non-MK char does become dizzy on finish (I think that is why you need Fatality.st to be linked and for sure the code hidden below is needed for the losing Char that will be finished) and does not go on fighting, so my 1) is complete, unpolished but works.
2) THE PROBLEM
https://streamable.com/8vy8g4
(where is Cap Am's Finish, P2 Dizzy?)
MKP's COMMON1.CNS uses a code in Statedef -3 that tells it directly to check some Var's, Explods and based on them run the Finish Him/Her Text Effect, sound and causes P2 to enter Dizzy and what happens if finisher is made or just falls:
;fuera sonidos en fatales o mercy
[State -2, fgnd]
type = Stopsnd
trigger1 = (((stateno%100 = 0) || (stateno = 3997) || (stateno = 3503)) && stateno = [3000, 3999])
triggerall = prevstateno != [3000, 3999]
triggerall = time = 1
channel = -1
;arregla el bug del tiempo
[State -2, 1]
type = AssertSpecial
trigger1 = stateno = [3000,4999]
trigger2 = stateno = [9000,9999]
flag = timerfreeze
[State -3, Go2]
type = POSFREEZE
triggerall = P2STATENO = 1610
triggerall = p2bodydist X < 2
trigger1 = stateno = 20
trigger2 = stateno = 107
triggerall = Anim != 21
VALUE = 1
[State -3, Landing Sound]
type = PlaySnd
triggerall = Time = 1
trigger1 = stateno = 52 ;Jump land
value = F20, 0
[State -3, hara]
type = selfstate
triggerall = pos y < var(57)
trigger1 = stateno != [3501,3599]
trigger1 = p2stateno = [3500,3503]
value = 52
[State -2, Check Fatal]
type = VarSet
trigger1 = p2Name != "Shao Kahn"
trigger1 = p2life <= 1
trigger1 = p2MoveType = H
trigger1 = p2stateno != 1020
trigger1 = stateno != 1020
trigger1 = p2stateno != 1021
trigger1 = stateno != 1021
trigger1 = Var(9) = 1
triggerall = p2stateno != [3500,3599]
v = 3
value = 1
[State -2, 7.644]
type = Varset
trigger1 = p2stateno = 9010
v = 19
value = 1
[state -2, 1]
type = null;Helper
trigger1 = NumHelper(9007) = 0
trigger1 = var(3) = 1
ID = 9007
stateno = 9000
ownpal = 1
ignorehitpause = 1
[State -2, 5.999]
type = Playsnd
trigger1 = p2life = 1 && var(9) = 1 && numexplod(9007) = 0 && roundstate = 2 && p2stateno != [120,159]
trigger1 = enemy,authorname != "boss"
value = F5, 7 + 18*(enemy,const(data.KO.echo) = 0)
Channel = 4
persistent = 0
volumescale = 200
[State 181, FinishHim]
type = Explod
trigger1 = p2life = 1 && var(9) = 1 && numexplod(9007) = 0 && roundstate = 2 && p2stateno != [120,159]
trigger1 = enemy,authorname != "boss"
anim = F5 + 3*(enemy,const(data.KO.echo) = 0)
ID = 9007
pos = var(22)/2,80
scale = 0.0025*var(22), 0.0025*var(22)
postype = left
bindtime = -1
removetime = -1
sprpriority = -3
ownpal = 1
persistent = 0
[State -2, 0]
type = varset
triggerall = Win = 1
triggerall = NumHelper(9010) = 0
trigger1 = teammode = single
trigger2 = teammode = simul
trigger3 = teammode = turns
v = 59
value = 1
[State -2, 1]
type = varset
trigger1 = Win = 1
trigger1 = NumHelper(9010) = 1
trigger1 = p2life != 0
trigger2 = teammode = simul
trigger3 = NumEnemy = 2
v = 59
value = 0
[State -2,9459]
type = Lifeset
trigger1 = life <= 1
trigger1 = p2life <= 1
trigger1 = MoveType = H
trigger1 = p2MoveType = H
value = 2
[State -2, fgnd]
type = Stopsnd
trigger1 = time = 1
trigger1 = p2stateno = [5000,5200]
trigger1 = life <= 1
trigger2 = RoundState = 4
channel = 1
[State -2, 7.6]
type = Varset
trigger1 = Var(59) = 1
v = 9
value = 1
[State -2, 7.7]
type = Varset
trigger1 = Var(59) = 0
v = 9
value = 0
[State -2, 7.9]
type = Varset
trigger1 = p2stateno = 9010
trigger2 = p2stateno = 9111
trigger3 = numexplod(9011) > 0 || numhelper(9011) > 0
;trigger4 = var(19) = 1
v = 9
value = 0
[State -2, NoBGM]
type = AssertSpecial
trigger1 = Var(17) = 1
flag = invisible
ignorehitpause = 1
[State -2, Tripped]
type = VarSet
trigger1 = anim = 5070
v = 15
value = 1000
[State -2, notTripped]
type = VarSet
trigger1 = anim = [5000, 5040]
trigger2 = anim = 5120
trigger3 = anim = 5200
trigger4 = anim = 5210
;trigger1 = power >= 1500
v = 15
value = 0
[State -2, 100]
type = VarSet
triggerall = var(13) = 1
trigger1 = Time >= 6
trigger1 = (stateno = 0) || (stateno = 11)
v = 13
value = 0
[State -2, hit]
type = VarSet
triggerall = var(17) = 1
trigger1 = movetype = H
trigger1 = stateno != [5110,5120]
trigger1 = stateno != 32 && gethitvar(isbound) = 0
trigger1 = gethitvar(damage) > 0 || pos y = var(57)
var(17) = 0
[State -2, hit];friendship/babality si esta en cero se puede hacer
type = VarSet
trigger1 = roundstate = 2
trigger1 = command = "blok"
v = 54
value = 1
[State -2, air hit]
type = targetvelset
trigger1 = target,stateno = [5000,5012]
trigger1 = stateno = 601 || stateno = 611
x = -1
;Cosas de Danger
[State -3, variable danger]
type = varset
trigger1 = life > 60
trigger1 = var(44) = 1
v = 44
value = 0
[State -3, sonido danger]
type = PlaySnd
triggerall = numexplod(11012) = 0 && var(48) = 0
trigger1 = life <= 60
trigger1 = alive = 1
trigger1 = var(44) = 0
trigger1 = fvar(5) != 124
value = F5, 44
[State -3]
type = Explod
triggerall = numexplod(11012) = 0 && var(48) = 0
trigger1 = life <= 60
trigger1 = alive = 1
trigger1 = var(44) = 0
trigger1 = fvar(5) != 124
anim = F27
;Postype = left
;pos = var(22)/2 +0.125*var(22)*ifelse(teamside = 1,-1,1),40
pos = 0,0
bindtime = -1
;scale = 0.0025*var(22), 0.0025*var(22)
removetime = 100
ontop = 1
[State -3, variable danger]
type = varset
triggerall = numexplod(11012) = 0
trigger1 = life <= 60
trigger1 = alive = 1
trigger1 = var(44) = 0
v = 44
value = 1
[State -3, anti-throw]
type = Explod
triggerall = life > 1
triggerall = alive = 1
trigger1 = command = "holdback"||(p2dist x < 0 && command = "holdfwd")
trigger1 = p2bodydist x < 3
trigger1 = var(50) = 0
trigger2 = random%21 < AILevel && var(50) = 1
trigger2 = p2bodydist x < 6
trigger3 = fvar(5) = 102 || fvar(5) = 104
anim = 888
ID = 24
removetime = 7
[State -3, if dead]
type = selfstate
triggerall = life < 2 && alive = 1 && var(26) = 0
triggerall = enemy,var(9) != 0
triggerall = statetype = S || statetype = C
triggerall = ctrl = 1||(stateno = [107,139])||stateno = 24||(stateno = [200,430])
triggerall = stateno != [9000,9010]
triggerall = prevstateno != [9000,9010]
trigger1 = numpartner = 0
value = 9001
ctrl = 0
ignorehitpause = 1
[State -3, if very dead]
type = lifeadd
triggerall = enemy,var(4) = -99
trigger1 = numpartner = 0
value = -99999
kill = 1
[State -2,fall after dizzy]
type = selfstate
trigger1 = p2stateno = [200,221]
trigger2 = p2stateno = 400 || p2stateno = 420
trigger3 = p2stateno = 400 || p2stateno = 420
trigger4 = p2stateno = 600
trigger5 = gethitvar(yvel) = 0 && p2stateno = [8000,8099]
triggerall = ((stateno = [5000,5017])||stateno = 5030) && alive = 0
triggerall = prevstateno != 21239
triggerall = selfanimexist(21234) = 1
value = 21239
ignorehitpause = 1
persistent = 1
[State -3, if p2 dead]
type = null;selfstate
trigger1 = p2stateno = 9001 && (statetype = S || statetype = C) && (ctrl = 1 || (stateno = [0,430]))
value = 0
ctrl = 0
[State -3, can not see]
type = varset
trigger1 = var(50) = 1 && life < 2
v = 50
value = 0
ignorehitpause = 1
persistent = 1
[State -3, can not see]
type = varset
triggerall = var(50) = 1
trigger1 = enemy,var(17) = 1
v = 50
value = 2
ignorehitpause = 1
persistent = 1
[State -3, can see though]
type = varset
triggerall = var(50) = 2
trigger1 = p2stateno = 52
trigger2 = p2movetype = H
trigger3 = enemy,movecontact
trigger4 = p2bodydist x < 3
trigger5 = p2stateno = 107
trigger6 = movetype = H
trigger7 = random > 994 && random%28 < AILevel
trigger8 = var(17) != 0 && random%7 = 0
v = 50
value = 1
ignorehitpause = 1
persistent = 1
The problem is that the non-MK char does not trigger P2's Dizzy Finish Him/Her at all - and that is what I'm trying to make, I excluded code in Riuky and saw if I delete
[State -2, 0]
type = varset
triggerall = Win = 1
triggerall = NumHelper(9010) = 0
trigger1 = teammode = single
trigger2 = teammode = simul
trigger3 = teammode = turns
v = 59
value = 1
he will win without finish text so if that code matters, not enough because a non-MK char will not make P2 dizzy even with all that code added in their own Statedef -3. I may be missing some anims 888, 9000 ? I added these dummies but again not sure what else to make the non-MK char make enemy in Finish Him / Dizzy.
0 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now