YesNoOk
avatar

How to make A.I do the second state immediately (Read 194 times)

Started by Jadeeye, December 08, 2012, 05:17:50 pm
Share this topic:
How to make A.I do the second state immediately
#1  December 08, 2012, 05:17:50 pm
  • **
  • KATO KATO KATO KATO KATOOOOOOOOO......!!!!
Hi guys,

I'm editing an A.I's char. He has State 3000 for holding until he stop to do State 3010. This State 3000 like Power Charge.
I want him stop Statedef 3000 immediately when he just start and State 3010 will happen after, but I don't know how. He just do state 3010 in random time.

This is .cns code of Statedef 3000 and Statedef 3010:

Code:
[Statedef 3000]
type = S
movetype = I
physics = S
velset = 0,0
ctrl = 0
anim = 3000

[State 3000, PowerDrain]
type = PowerAdd
trigger1 = time = 5
value = -1000 + ((life <= 200) * 1000)

[State 3000, SparkSound]
type = PlaySnd
trigger1 = time = 5
value = S8,8

[State 3000, SuperSpark]
type = Explod
trigger1 = time = 5
postype = p1
pos = -10, -50
ownpal = 1
anim = 4800
supermove = 1
ontop = 1
bindtime = 40

[State 3000, Voice]
type = PlaySnd
trigger1 = animelem = 3
value = S10,7
channel = 0

[State 3000, Execute]
type = ChangeState
trigger1 = animtime = 0
trigger2 = animelem = 9, >= 0
trigger2 = command != "hold_a"
trigger2 = command != "hold_b"
value = 3010

;Super Cancel Startup
[Statedef 3001]
type = S
movetype = I
physics = S
velset = 0,0
ctrl = 0
anim = 3000

[State 3001, SuperPause]
type = SuperPause
trigger1 = time = 5
anim = -1
movetime = 15
darken = 0
time = 30

[State 3000, SparkSound]
type = PlaySnd
trigger1 = time = 5
value = S8,8

[State 3001, PowerDrain]
type = PowerAdd
trigger1 = time = 5
value = -1000 + ((life <= 200) * 1000)

[State 3000, Voice]
type = PlaySnd
trigger1 = animelem = 3
value = S10,7
channel = 0

[State 240, SuperSpark]
type = Explod
trigger1 = time = 5
postype = p1
pos = -10, -50
ownpal = 1
anim = 4800
supermove = 1
ontop = 1
bindtime = 40

[State 3001, SuperPortrait]
type = Explod
trigger1 = time = 5
anim = 4815;4810
postype = back
pos = 0,0
ownpal = 1
scale = 1.09, 1.09
bindtime = 31
removetime = 30
sprpriority = -6
supermove = 1

[State 3001, BlankOut]
type = AssertSpecial
trigger1 = time = [5,35]
flag = NoBG
flag2 = NoFG
supermove = 1
supermovetime = 30
ignorehitpause = 1

[State 3001, Execute]
type = ChangeState
trigger1 = animtime = 0
trigger2 = time >= 21
trigger2 = command != "hold_a"
trigger2 = command != "hold_b"
value = 3010

;Execute
[Statedef 3010]
type = S
movetype = A
physics = S
anim = 3010
velset = 0,0
ctrl = 0
juggle = 0

[State 3000, Voice]
type = PlaySnd
trigger1 = time = 0
value = S10,8
channel = 0

[State 210, SoundVar]
type = VarRandom
trigger1 = time >= 0
v = 6
range = 0,5

[State 3020, HighSlash]
type = HitDef
trigger1 = AnimElem = 5
trigger2 = AnimElem = 20
trigger3 = AnimElem = 35
trigger4 = AnimElem = 50
trigger5 = AnimElem = 65
attr = S, HA
damage = 6,1
animtype = Heavy
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 5,1
getpower = 0,0
sparkno = S4840
guard.sparkno = S4855
sparkxy = -10,-70
hitsound = S2,(var(6))
guardsound = S6, (0+(random < 500))
ground.type = High
air.animtype = Low
ground.slidetime = 28
ground.hittime = 28
ground.velocity = -1.7
air.velocity = -3,-3
air.fall = 1

[State 3020, MidSlash]
type = HitDef
trigger1 = AnimElem = 10
trigger2 = AnimElem = 25
trigger3 = AnimElem = 40
trigger4 = AnimElem = 55
trigger5 = AnimElem = 70
attr = S, HA
damage = 6,1
animtype = Heavy
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 5,1
getpower = 0,0
sparkno = S4835
guard.sparkno = S4855
sparkxy = -10,-45
hitsound = S2,(var(6))
guardsound = S6, (0+(random < 500))
ground.type = High
air.animtype = Low
ground.slidetime = 28
ground.hittime = 28
ground.velocity = -1.7
air.velocity = -3,-3
air.fall = 1

[State 3020, LowSlash]
type = HitDef
trigger1 = AnimElem = 15
trigger2 = AnimElem = 30
trigger3 = AnimElem = 45
trigger4 = AnimElem = 60
trigger5 = AnimElem = 75
attr = S, HA
damage = 6,1
animtype = Heavy
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 5,1
getpower = 0,0
sparkno = S4830
guard.sparkno = S4855
sparkxy = -10,-7
hitsound = S2,(var(6))
guardsound = S6, (0+(random < 500))
ground.type = High
air.animtype = Low
ground.slidetime = 28
ground.hittime = 28
ground.velocity = -1.7
air.velocity = -3,-3
air.fall = 1

[State 3010, Flash]
type = EnvColor
trigger1 = movehit = 1
trigger1 = time >= 0
trigger1 = random < 400
value = 255,0,0
ignorehitpause = 1
time = 1
under = 1

[State 3010, Reset]
type = MoveHitReset
trigger1 = AnimElem = 5, =1
trigger2 = AnimElem = 10, =1
trigger3 = AnimElem = 15, =1
trigger4 = AnimElem = 20, =1
trigger5 = AnimElem = 25, =1
trigger6 = AnimElem = 30, =1
trigger7 = AnimElem = 35, =1
trigger8 = AnimElem = 40, =1
trigger9 = AnimElem = 45, =1
trigger10 = AnimElem = 50, =1
trigger11 = AnimElem = 55, =1
trigger12 = AnimElem = 60, =1
trigger13 = AnimElem = 65, =1
trigger14 = AnimElem = 70, =1
trigger15 = AnimElem = 75, =1
trigger16 = AnimElem = 80, =1

[State 3010, Finalhit]
type = Hitdef
trigger1 = AnimElem = 80
attr = S, HA
damage = 6,1
animtype = Back
guardflag = M
hitflag = MAF
priority = 4, Hit
pausetime = 4,4
getpower = 20,5
sparkno = S4835
guard.sparkno = S4855
sparkxy = -20,-45
hitsound = S5,2
guardsound = S5,7
ground.type = High
air.animtype = Low
ground.slidetime = 28
ground.hittime = 28
ground.velocity = -4,-6
air.velocity = -3,-3
fall = 1
air.fall = 1
fall.recover = 0

[State 3010, Move]
type = PosAdd
trigger1 = animelem = 3
trigger2 = animelem = 8
trigger3 = animelem = 13
trigger4 = animelem = 18
trigger5 = animelem = 23
trigger6 = animelem = 28
trigger7 = animelem = 33
trigger8 = animelem = 38
trigger9 = animelem = 43
trigger10 = animelem = 48
trigger11 = animelem = 53
trigger12 = animelem = 58
trigger13 = animelem = 63
trigger14 = animelem = 68
trigger15 = animelem = 73
trigger16 = animelem = 78
x = 2

[State 3010, SFX]
type = PlaySnd
trigger1 = animelem = 3
trigger2 = animelem = 8
trigger3 = animelem = 13
trigger4 = animelem = 18
trigger5 = animelem = 23
trigger6 = animelem = 28
trigger7 = animelem = 33
trigger8 = animelem = 38
trigger9 = animelem = 43
trigger10 = animelem = 48
trigger11 = animelem = 53
trigger12 = animelem = 58
trigger13 = animelem = 63
trigger14 = animelem = 68
trigger15 = animelem = 73
trigger16 = animelem = 78
;trigger1 = animelem = 3
;trigger2 = animelem = 13
;trigger3 = animelem = 23
;trigger4 = animelem = 33
;trigger5 = animelem = 43
;trigger6 = animelem = 53
;trigger7 = animelem = 63
;trigger8 = animelem = 73
value = S8,1
volume = -50

[State 3010, HighSlash]
type = Explod
trigger1 = AnimElem = 3
trigger2 = AnimElem = 18
trigger3 = AnimElem = 33
trigger4 = AnimElem = 48
trigger5 = AnimElem = 63
trigger6 = AnimElem = 78
postype = p1
id = 3000
anim = 1080
pos = 10,0
bindtime = 20
sprpriority = 5
ownpal = 1

[State 3010, MidSlash]
type = Explod
trigger1 = AnimElem = 8
trigger2 = AnimElem = 23
trigger3 = AnimElem = 38
trigger4 = AnimElem = 53
trigger5 = AnimElem = 68
postype = p1
id = 3000
anim = 1085
pos = 20,0
bindtime = 20
sprpriority = 5
ownpal = 1

[State 3010, LowSlash]
type = Explod
trigger1 = AnimElem = 13
trigger2 = AnimElem = 28
trigger3 = AnimElem = 43
trigger4 = AnimElem = 58
trigger5 = AnimElem = 73
postype = p1
anim = 1090
pos = 20,0
id = 1000
bindtime = 20
sprpriority = 5
ownpal = 1

[State 3010, State]
type = ChangeState
trigger1 = animtime = 0
value = 0
ctrl = 1

And .cmd of Statedef 3000:

Code:
[State -1]
type = ChangeState
value = 3000
triggerall = var(59) = 0
triggerall = statetype != A
triggerall = power >= (1000 * (life > 200))
triggerall = command = "KassatsuIzayoiGekka"
trigger1 = ctrl = 1
trigger2 = stateno = 200
trigger2 = movecontact = 1
trigger3 = stateno = 205
trigger3 = movecontact = 1
trigger4 = stateno = 210
trigger4 = movecontact = 1
trigger5 = stateno = 220
trigger5 = movecontact = 1
trigger6 = stateno = 240
trigger6 = movecontact = 1
trigger7 = stateno = 250
trigger7 = movecontact = 1
trigger8 = stateno = 260
trigger8 = movecontact = 1
trigger9 = stateno = 410
trigger9 = movecontact = 1
trigger9 = animelem = 12, < 0
trigger10 = stateno = 420
trigger10 = movecontact = 1

Please help me, thanks.
Last Edit: December 08, 2012, 05:25:28 pm by Jadeeye
Re: How to make A.I do the second state immediately
#2  December 08, 2012, 05:38:03 pm
  • ***
  • "I am all that is touched by none."
    • USA
There are two ways ive gone about doing this, though im not sure if they are the best way since im not exactly a master coder.

Method one is simply to do this in the changstate for 3000:

[State 3000, Execute]
type = ChangeState
trigger1 =(ai trigger variable, yours seems to be var(59)=1) && time >= (whatever time you want)
value = 3010

Alternatively you could set an ai state for state 3010 and make 3000 naturally flow to it by setting it in such a way as this:

[State -1]
type = ChangeState
value = 3010
triggerall = var(59) = 1
triggerall = stateno = 3000
trigger1 = anim = 3000 && time >= (whatever time you set)

Also both of these are possible together to safety valve one another.
Re: How to make A.I do the second state immediately
#3  December 09, 2012, 02:38:00 am
  • **
  • KATO KATO KATO KATO KATOOOOOOOOO......!!!!
Thanks bro, that's working with the second method.