BSL:Snippets

From OniGalore
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Various useful snippets of BSL that can be useful for modders.

Character setup

# an old but useful character setup function by geyser
func SpawnNameFlagHealthReset(string n, int f, int h, int r)
{
    ai2_spawn(n); chr_teleport(n, f)
    if(h) chr_set_health(n, h)
    if(r) chr_inv_reset(n)
}

# sample usage
func wave_setup
{
    # note that the health and inventory-reset parameters can be omitted
    SpawnNameFlagHealthReset Griffin 23 600
    SpawnNameFlagHealthReset Muro 22 2500
    SpawnNameFlagHealthReset F_Er89 22 80 1
    SpawnNameFlagHealthReset A_S1 24
}

Follow me

var bool follow_me = 1;

### beginning of the journey
func follow_me_TV
{
    # ai2_spawn charname # or somewhere else
    chr_lock_active charname

    fork follow
}

func follow
{
    if (follow_me eq 1)
    {
        ai2_followme charname
        ai2_setmovementmode charname run
        sleep 180
        fork follow
    }
}


### events
func dont_follow_me_TV_enter
{
    follow_me = 0
}

func dont_follow_me_TV_extit
{
    follow_me = 1
    fork follow
}


### player orders
func main
{
    # Original code here
    fork do_follow_me
    fork dont_follow_me
}

func do_follow_me
{
    chr_wait_animation 0 ORDERbk_fw_kick
    follow_me = 1
    follow
    # in case he/she is passive right now
    ai2_passive charname 0

    # sleep until anim finishes
    sleep 60
    fork do_follow_me
}

func dont_follow_me
{
    chr_wait_animation 0 ORDERbk_fw_punch
    follow_me = 0
    ai2_idle charname

    # sleep until anim finishes
    sleep 60
    fork dont_follow_me
}

Multiplication hack

var int multiplicand;
var int multiplier;
var int mult_progress;
var int product;

func void multiply(int a, int b)
{
   product = 0;
   multiplicand = a;
   multiplier = b;
   mult_progress = 0;
   fork do_mult();
}

func void do_mult(void)
{
   product = product + multiplicand;
   mult_progress = mult_progress + 1;
   if (mult_progress < multiplier)
   {
      sleep(1);
      fork do_mult();
   }
}