[XP] Blizz-ABS

Started by Blizzard, January 09, 2008, 08:21:56 am

Previous topic - Next topic

(Hexamin)

Okay, so here I am setting up skills in my game when I run into an issue.

I'm tying to make a sort of immolate skill, which inflicts burning or constant damage on touch while it lasts.

So what I did was set up a skill that inflicts a custom state "immolate" on target, and set that state to last 10 seconds (as per Blizz ABS) and to dissipate 100% after the 10 seconds is up.  I set the skill to also call a common event that turns on switch "immolate"

I then created a page on the Battler Events that's turned on by the "immolate" switch, and set the player touch trigger using Comment: Trigger:PlayerTouch.  Then I set a call script to execute $BlizzABS.enemy_change_state(@SELF, ADD, 2) which inflicted a burning condition on the battler.

This worked to inflict the condition; however, if I kept on touching the event the battler would freeze, and eventually when the status "immolate" was done, the game would freeze if I was still touching the event.

So I set up a self switch on the event that turns on after the burning status is inflicted on the event.

I then created a new page whose condition was that same self switch.  I set a conditional branch that checked whether or not the event had burning on, by using $BlizzABS.enemy_has_state?(@SELF, 2).  If it's inflicted, nothing happens, if it's not inflicted, the self switch will turn off, and it'll go back to the previous event page and be able to be burned again.  The only problem is that this can only be checked by conditions that don't work.  If I use player touch, then I can freeze the game like I did previously (same with event touch), and the battler remains frozen as long as I'm touching it.

Is there any way to have a parallel process trigger on the event (without making a new event constantly checking all the battlers on the map) that checks if the battler has the burned condition and if not, turns off the self switch so the battler can be burned again?

I know this is complicated... please ask questions if you don't quite follow... I don't know if I even quite follow.  Haha.

Anyway, if I can get this working, it'll just prove that there are some even cooler than expected things you can do with your ABS.

Thanks.
Max 1111101000; characters remaining: 1110111000

G_G

Is it possible for a 3 hit burst? or a 4 hit burst?

Pretty much you equip a certain weapon, a Double Sided Knife for example, and instead of hitting just once, he hits twice.
Is it possible?

winkio

with both common events and scripts.

Blizzard

Quote from: (Hexamin) on February 11, 2010, 03:02:37 pm
Okay, so here I am setting up skills in my game when I run into an issue.

I'm tying to make a sort of immolate skill, which inflicts burning or constant damage on touch while it lasts.

So what I did was set up a skill that inflicts a custom state "immolate" on target, and set that state to last 10 seconds (as per Blizz ABS) and to dissipate 100% after the 10 seconds is up.  I set the skill to also call a common event that turns on switch "immolate"

I then created a page on the Battler Events that's turned on by the "immolate" switch, and set the player touch trigger using Comment: Trigger:PlayerTouch.  Then I set a call script to execute $BlizzABS.enemy_change_state(@SELF, ADD, 2) which inflicted a burning condition on the battler.

This worked to inflict the condition; however, if I kept on touching the event the battler would freeze, and eventually when the status "immolate" was done, the game would freeze if I was still touching the event.

So I set up a self switch on the event that turns on after the burning status is inflicted on the event.

I then created a new page whose condition was that same self switch.  I set a conditional branch that checked whether or not the event had burning on, by using $BlizzABS.enemy_has_state?(@SELF, 2).  If it's inflicted, nothing happens, if it's not inflicted, the self switch will turn off, and it'll go back to the previous event page and be able to be burned again.  The only problem is that this can only be checked by conditions that don't work.  If I use player touch, then I can freeze the game like I did previously (same with event touch), and the battler remains frozen as long as I'm touching it.

Is there any way to have a parallel process trigger on the event (without making a new event constantly checking all the battlers on the map) that checks if the battler has the burned condition and if not, turns off the self switch so the battler can be burned again?

I know this is complicated... please ask questions if you don't quite follow... I don't know if I even quite follow.  Haha.

Anyway, if I can get this working, it'll just prove that there are some even cooler than expected things you can do with your ABS.

Thanks.


Ok, one thing would definitely be that you have 1 switch for all enemies. If a single enemy is inflicted with Immolate, every enemy event will act on touch.
Other than that I don't know what's wrong. A demo would help.

Quote from: game_guy on February 11, 2010, 05:30:19 pm
Is it possible for a 3 hit burst? or a 4 hit burst?

Pretty much you equip a certain weapon, a Double Sided Knife for example, and instead of hitting just once, he hits twice.
Is it possible?


You can do it with a very simple script already. Or you can wait until I finally implement the cluster damage support. :P

Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Jragyn

Blizz ABS part3 line 4270~ Type Error occured.
cannot convert Fixnum into String.

Specifically:
Spoiler: ShowHide
  #----------------------------------------------------------------------------
  # gradient_bar_hud
  #  x          - x-coordinate
  #  y          - y-coordinate
  #  w          - width
  #  rate       - fill rate
  #  image_key  - image key for image used for drawing or two images
  #  change_hue - changing hue on changing fill rate
  #  Draws the HUD gradient bar.
  #----------------------------------------------------------------------------
  def gradient_bar_hud(x, y, w, rate, image_key, change_hue = 0)
    # if own bitmaps used
    if image_key.is_a?(Array)
      # set HUD bitmap
      bitmap = image_key[1]
      # draw stretched bitmap onto HUD
      stretch_blt(Rect.new(x+1, y+1, w, 12), bitmap, Rect.new(0, 0, 1, 12))
      # set HUD bitmap
      bitmap = image_key[0]
    else
      # get empty HUD bitmap
      bitmap = $BlizzABS.cache.image('empty_' + image_key)                       <-----------THIS IS THE LINE
      # draw stretched bitmap onto HUD
      stretch_blt(Rect.new(x+1, y+1, w, 12), bitmap, Rect.new(0, 0, 1, 12))
      # get HUD bitmap
      bitmap = $BlizzABS.cache.image(image_key)
    end
    # if requested hue changing bar
    if change_hue > 0
      # change hue of bitmap according to fill rate
      bitmap.hue_change((change_hue - 1.5).sgn * (1.25 - rate / 0.8) * 120 /
          (change_hue ** 2))
    end
    # draw stretched bitmap onto HUD
    stretch_blt(Rect.new(x+1, y+1, w*rate, 12), bitmap, Rect.new(0, 0, 1, 12))
  end


It pops up whenever there is no members in the party.
It does not however, appear when Winkio's HUD is absent.

Is this a ME error? Or a script error?
A bright light can either illuminate or blind, but how will you know which until you open your eyes?

Blizzard

Don't make it so there is no party member in the party. :P
I'm not sure, I think I fixed that bug a long time ago. I'll take a look at it. I think I know what's causing it.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

(Hexamin)

February 12, 2010, 05:34:31 am #3066 Last Edit: February 12, 2010, 05:40:05 am by (Hexamin)
Well, immolate is supposed to be a sort of fire shield on the caster.

Is there a way to parallel process a battler?  So it's checking a condition (such as $BlizzABS.enemy_has_state?(event_id, state_id)) while its fighting?

And I'm working on another type of skill now too.  A chain lightning of sorts.  I have:

EVENT COMMENT
Trigger:Skill=9        #9 is skill "Chains of Fire" a homing, damage skill.

CALL SCRIPT
$BlizzABS.enemy_force_action(@SELF,            #The current battler targets a random enemy with skill 999
ENEMIES, NONE, SKILL, 999)

But for some reason, the forced action isn't being forced.  I set up another event with the call script: $BlizzABS.enemy_force_action(event_ID, ENEMIES, NONE, SKILL, 999) and it forced the action successfully.

I really should probably just get on a file sharing site and send you a demo of what I'm workin' with, eh?  I could do that if you're actually interested in me tinkering with skill possibilities with your ABS.  I've got a lot more skill ideas I'm going to be testing out that... stretch the basic limits of your ABS.  Just let me know if you want me to stop pesetering you with my thoughts/ideas, and I'll take them elsewhere.
Max 1111101000; characters remaining: 1110111000

Jragyn

Oh, well, yes. Thats a prime solution to the problem, though there are times when having an empty party is necessary as far as eventing goes, specifically I refer to sequences prior to the player choosing a character to use or something of that nature.
A bright light can either illuminate or blind, but how will you know which until you open your eyes?

(Hexamin)

Could you set up a dummy character with no stats, no spriteset, etc?
Max 1111101000; characters remaining: 1110111000

Blizzard

Just remove the actor sprite for the time being rather than removing him from the party.

@Hexamin: Yeah, a demo would be the best. I don't really have time to set up everything in a project and besides, maybe I'll set it up in a different way and it will work in my way so I haven't helped you at all.
Generally I don't have time to work on the ABS so your best bet is to make stuff yourself. I mean, there's no point if I made your entire game, is there? :P
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

(Hexamin)

No no no, that's not what I'm tryin' to do.  I want to do my own game, haha.  I'm just curious if there might be an easy way to set up a Trigger:ParallelProcess for battlers, and I need to check out how to get an event to call its own ID so I can set that to a variable and then force actions based on that.  I think that'd fix some stuff.

I'll get back with a demo when I actually have some stuff figured out ^_^
Max 1111101000; characters remaining: 1110111000

Blizzard

I made it so @SELF contains the event's ID if it's a Map_Battler, but usually you can use @event_id in a script call for the event ID that is executing the commands.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

(Hexamin)

February 12, 2010, 04:02:26 pm #3072 Last Edit: February 12, 2010, 05:27:17 pm by game_guy
That's good to know.

I'm thinkin' I'll try makin' some skills based on level and other parameters.

So... I'll do the Trigger:Skill=whatever
then set up a call script $game_variables[whatever] = @event_id
then a conditional branch to flip a switch_whatever that'll turn on a common event parallel process to determine the damage.  Something like...

variable[1]=hero level
variable[1]*some coefficient
$BlizzABS.enemy_deal_damage($game_variables[whatever], variable, 1)
switch_whatever(off)

that's the basic idea, but I'll expand it from there.


Your ABS is allowing me to get much further than I have before in game creation.

Right now I'm settin up 10 skills for each element (as a base, and I'll probably implement skill leveling)

After that I'll create skills for various weapons then make some specific classes and set those skills up.

Go create monsters... balance everything...

THEN, with an effective battle system (full of probably hundreds of skills) I'll be able to throw in storylines, dungeons, minigames, all the things that I've previously worked on...


Anyway, with the very basic @event_id (that i probably should've already known...) I think I'll be able to fix my problems.  So thank you!  And keep up the awesome work on your project, everything I've seen of it is muy bueno.

EDIT:
No no no no no!!!!

I just tried doin' the common event and apparently the $BlizzABS.enemy_deal_damage(event_id, type, operand) script doesn't suppose putting $game_variables[] for the event_id.  I know i'm a menace, but is there a quick fix to the script so I CAN put variables to determine which enemy I'm dealing damage to?

That would be GREAT

Please don't double post within a 24 hour period. Instead just edit your post. ~ G_G
Max 1111101000; characters remaining: 1110111000

Aqua

You can put whatever in the 3 things...
You just gotta do it correctly.

$BlizzABS.enemy_deal_damage(
$game_variables[ID],
type, operand)

(Hexamin)

Quote from: Aqua on February 12, 2010, 05:32:52 pm
You can put whatever in the 3 things...
You just gotta do it correctly.

$BlizzABS.enemy_deal_damage(
$game_variables[ID],
type, operand)



you try runnin' that in game?  cause i keep gettin' a script error: Syntax Error occured while running script.  $BlizzABS.enemy_deal_damage
($game_variables[10], VARIABLE, 1)

see anythin' wrong with that?  Cause I don't...  :huh:
Max 1111101000; characters remaining: 1110111000

Blizzard

Be sure not to put it in the same lines because RMXP doesn't split lines properly. You can also try this if the first line still doesn't fit.

$BlizzABS.
enemy_deal_damage(
$game_variables[ID],
type, operand)
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

(Hexamin)

YESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS!

You're my savior!  Not like the way Jesus is... but CLOSE!

So I successfully set up a skill that does damage based on level (but this is just the first step to a wide variety of skills!)

Wanna see how?

Spoiler: ShowHide

Okay.  First things first.  Setting the skill.
Make a state change (I named mine empty) that does nothing and goes away after 0 seconds 100% chance.
Make a skill that has 0 power, but inflicts the state change (empty).
Set it up in BABS to be whatever type you want (I set mine up as a direct spell)

Now then, on your battlers, put in 
Event Comment:: Trigger:Skill=ID (Whatever ID you used for this skill)
Call Script:: $game_variables[10]=@event_id
switch_Skill=on

Lastly, make a Common Event, parallel process, switch_Skill
Control Variables:1 = Hero Level
Control Variables:1 * 5
Call Script::
$BlizzABS.
enemy_deal_damage(
$game_variables[10],
VARIABLE, 1)
switch_Sill=off

And there ya have it!  When you use the skill the monster will take 5 times the hero's level in damage!


Thank you thank you thank you for learning me your ways! (partially at least ^_^)
Max 1111101000; characters remaining: 1110111000

Aqua

Quote from: (Hexamin) on February 12, 2010, 05:57:39 pm
Quote from: Aqua on February 12, 2010, 05:32:52 pm
You can put whatever in the 3 things...
You just gotta do it correctly.

$BlizzABS.enemy_deal_damage(
$game_variables[ID],
type, operand)



you try runnin' that in game?  cause i keep gettin' a script error: Syntax Error occured while running script.  $BlizzABS.enemy_deal_damage
($game_variables[10], VARIABLE, 1)

see anythin' wrong with that?  Cause I don't...  :huh:


You didn't even follow what I did exactly.

Don't go doubting me, mister!
HMPH! >8I


:V:?

(Hexamin)

February 12, 2010, 08:18:12 pm #3078 Last Edit: February 12, 2010, 08:33:03 pm by (Hexamin)
Haha, blizzard just explained it to me in a way that a dumbass like me could understand.  Haha, okay here's something else.

Now I'm not bein' able to force my character to use a skill.

I've tried tinkering with it (and reordering the way I put the script in to fit and flow properly) but nothin's working.

The skill I'm workin on goes like this.

The player will teleport to the enemy, then cast a spell on nearby enemies, then teleport back.  I have the teleporting down, but... when I try to get the actor to cast the spell, nothing happens, no script error, no spell, nothing.

Any ideas?

I've even tried making a seperate event to just force an action and it's not doing anything either...   :???:


edit 1: i'm still messing with it and decided to see what it was like if i manually did the combo by casting the spell myself when i teleport... and its AWESOME... i just want it to be a forced action (to make it one complete skill) *pulls hair out* so aggravating! i know theres a way to get the forced action to work, what'm i doin wrong...
Max 1111101000; characters remaining: 1110111000

Aqua

You can't force the player to use a spell...
I don't remember if Blizz will change it.