GoldenH's IRC Campaign

Main Page Player Characters Non-Player Characters Game Logs IRC Setup

The Game

I use mIRC to connect to the IRC the Magicstar server network. Specifically, gryphon.magicstar.net. You may aslo connect through a javachat. It is a quicker download, but not as cool. Also, it cannot run the dice script. While you should not have the dice script running, if you want to run your own campaign on IRC, you need mIRC to run it for yourself.

I run it for my games, and if you want to use it, simply use the commands below to use it. If you run it, note that you can deactivate the script by right clicking in the channel window and clicking on the deactiveate command.

If you're trying to get to my game, and want to watch or something, you can use the Javachat. Simply make it look like below on the left; but choose a unique name for yourself. If you're trying to get on by mIRC, observe the image on the right. Once you have completely logged in, type /join #pvpexalted and you will join us.... if there is anybody there. Generally between 7 pm CST and 4 am CST there will be at least two people present.

The Gryphon server will *not* be part of the IRC Server list. However it is the server the game is played on. If you want to make sure you are on the right server, click on the ADD button and fill out the that pops up as below. You can then click where Magicstar: Random Server is, and select Magicstar: Gryphon. This is shown below. The only advantage to this is that there is a small decrease in lag and in the case of a server split, which are rare but do happen, you will not miss out on what happens.

mIRC dice script commands

General Dice Rolling

!roll xdy+a-b
xnumber of dice
ysides on dice
+aadd a to the roll*
-bsubtract b from the roll*

* numbers can be added and subtracted indefinately: e.g. 1d10+3+4-2

Exalted Dice Rolling

!examsbo z y +q -r
!exgeneral form to roll d10s
a
alternate dice rolling; produces random numbers differently
o
alternate dice rolling; produces random numbers differently
m
mortal rolling; does not count 10's twice, also used for rolling damage
s
sidereal rolling; allows target number to be changed from 7
b
forces roll to botch
z
number of d10s to be rolled
y
new target number (sidereals only)
+q
add q in automatic successes. if you use WP instead of a number, it adds 1 sux
-r
subtract r in automatic successes

Dice Roller Code for mIRC

Aliases

Paste this in Aliases

/roll {

  var %atim = $pos($1,+,0)
  var %stim = $pos($1,-,0)
  var %dtim = $pos($1,d,0)
  var %len = $len($1)

  if (%len < 3) goto error

  var %ops = %atim + %stim

  var %dlef = $pos($1,d,1)

  /dec %dlef 1

  var %dnum = $mid($1,0,%dlef)

  if (%dnum < 1) || (%dnum > 100) goto error

  /inc %dlef 2

  if ($pos($1,+,1) == $null) var %pos = $len($1)
  else var %pos = $pos($1,+,1)

  if ($pos($1,-,1) == $null) var %sub = $len($1)
  else var %sub = $pos($1,-,1)

  if (%atim == 0) && (%stim == 0) {
    %drig = $len($1)
    /inc %drig 1
  }
  else {
    if (%pos < %sub) var %drig = $pos($1,+,1)
    if (%sub < %pos) var %drig = $pos($1,-,1)
  }

  %dlen = %drig - %dlef

  var %dsid = $mid($1,%dlef,%dlen)

  if (%dsid < 1) || (%dsid > 1000) goto error

  var %tot = 0
  var %iter = 0

  if (%ops = 0) goto adde
  var %text = $replace($1,-,+-)

  :add
  /inc %iter 1
  if (%iter = %ops) var %rig = $len(%text)
  else {
    var %iter2 = %iter + 1
    var %rig = $pos(%text,+,%iter2)
    /dec %rig 1
  }
  var %lef = $pos(%text,+,%iter)
  %len = %rig - %lef
  /inc %lef 1
  var %ad = $mid(%text,%lef,%len)

  if (%ad < -30) || (%ad > 30) goto error

  %tot = %tot + %ad
  if (%iter < %ops) goto add

  :adde


  %iter = 0

  write -c dice.txt $nick : $1-

  :next

  if (%dsid == 10) {
    var %die = $rand(1,11) 

    if (%die == 2) var %die = 1
    else if (%die == 1) var %die = 2
    else if (%die == 3) var %die = 9
    else if (%die == 9) var %die = 3
    else if (%die == 4) var %die = 10
    else if (%die == 10) {
      if ($calc($rand(1,2) - 1)) var %die = 2
      else var %die = 4
    }
    else if (%die == 11) var %die = 4

    if (%die == 3) var %die = 10
    else if (%die == 10) var %die = 3
  }
  else var %die = $rand(1,%dsid)



  write -al1 dice.txt , %die

  var %tot = %tot + %die
  inc %iter

  if (%iter < %dnum) goto next

  if ($chan != $null) /msg $chan $nick: $read -l1 dice.txt , Total: %tot
  if ($chan == $null) {
    if ($nick == $me) /say $nick : $read -l1 dice.txt , Total: %tot
    if ($nick != $me) /msg $nick $nick : $read -l1 dice.txt , Total: %tot
  }

  goto end

  :error

  if ($chan != $null) /msg $chan $nick : Can only have 1 to 1000 sides and 1 to 100
  dice and may only add or subtract up to 30. Example: !roll 100d1000+30-30
  if ($chan == $null) {
    if ($nick == $me) /say $nick : Can only have 1 to 1000 sides and 1 to 100
    dice and may only add or subtract up to 30. Example: !roll 100d1000+30-30
    if ($nick != $me) /msg $nick $nick : Can only have 1 to 1000 sides and 1 to 100 
    dice and may only add or subtract up to 30. Example: !roll 100d1000+30-30
  }
  :end

}

/e { 

  %2 = $calc($2)

  if (%2 > 50) { 
    if ($chan != $null) /msg $chan $nick: 50 dice or less. example: !ex 5 
    if ($chan == $null) { 
      if ($nick == $me) /say $nick : 50 dice or less. example: !ex 5 
      if ($nick != $me) /msg $nick $nick : 50 dice or less. example: !ex 5 
    } 
    goto end 
  } 
  var %iter = 0 
  var %tot = 0 

  ; force botch 
  var %bot = 0 
  var %when = $rand(1,%two) 

  var %target = 7 

  if (s isin $1) %target = $3 
  write -c dice.txt $nick ( $+ %2 $+ )
  :next1 

  inc %iter 

  ; force botch 
  if (b isin $1) { 
    var %die = $rand(1,6) 
    if (%iter == %when) var %die = 1 
  } 
  elseif (o isin $1) {
    var %die = $rand(1,10) 
    var %die = %die + $rand(1,10)
    if (%die > 10) var %die = %die - 10
  }
  elseif (a isin $1) { 
    var %die = $rand(1,10) 
    if (%die > 5) var %die = %die - 5 
    else var %die = %die + 5 
  } 
  else { 
    var %die = $rand(1,11) 

    if (%die == 2) var %die = 1
    else if (%die == 1) var %die = 2
    else if (%die == 3) var %die = 9
    else if (%die == 9) var %die = 3
    else if (%die == 4) var %die = 10
    else if (%die == 10) {
      if ($calc($rand(1,2) - 1)) var %die = 2
      else var %die = 4
    }
    else if (%die == 11) var %die = 4

    if (%die == 3) var %die = 10
    else if (%die == 10) var %die = 3
  } 

  write -al1 dice.txt , %die 

  if (%die == 1) var %bot = %bot + 1 
  if (%die >= %target) var %tot = %tot + 1 
  if (m isin $1) var %tot = %tot 
  else if (%die == 10) var %tot = %tot + 1 

  if (%iter < %2) goto next1 

  if (+ isin $3) { 
    var %p = $len($3) - 1 
    var %add = $right($3,%p) 
    if (%add > 0) && (%add < 30) var %tot = %tot + %add 
  } 
  if (+ isin $4) { 
    var %p = $len($4) - 1 
    var %add = $right($4,%p) 
    if (%add > 0) && (%add < 30) var %tot = %tot + %add 
  } 
  if (- isin $3) { 
    var %p = $len($3) - 1 
    var %add = $right($3,%p) 
    if (%add > 0) && (%add < 30) var %tot = %tot - %add 
  } 
  if (- isin $4) { 
    var %p = $len($4) - 1 
    var %add = $right($4,%p) 
    if (%add > 0) && (%add < 30) var %tot = %tot - %add 
  } 
  if (+WP isin $3) { 
    var %tot = %tot + 1
  } 

  if (%tot < 0) %tot = 0

  write -al1 dice.txt , Successes : %tot 
  if (%bot > 0) if (%tot == 0) write -al1 dice.txt , Botch 

  if ($chan != $null) /msg $chan $read -l1 dice.txt 
  if ($chan == $null) { 
    if ($nick == $me) /say $read -l1 dice.txt 
    if ($nick != $me) /msg $nick $read -l1 dice.txt 
  } 
  :end 
} 



Popups 2: Channel

Paste this in the Channel subcategory of Popups
dice
.active: {
  /writeini ws.ini $network $chan on
  /msg $chan 6Dice Script Active
}
.deactive: {
  /writeini ws.ini $network $chan off
  /msg $chan 6Dice Script Deactivated
}

Remotes

Paste in Remotes section:

on 1:TEXT:*Dice Script Active*:#: {  
  if ($readini(ws.ini, $network, $chan) == on) {
    /writeini ws.ini $network $chan off
    /msg $chan 6Dice Script Deactivated
  }
}

on 1:TEXT:!roll*:*: if ($readini(ws.ini, $network, $chan) == on) /roll $2-

on 1:TEXT:!e*:*: if ($readini(ws.ini, $network, $chan) == on) /e $1-

on 1:INPUT:* {
  var %length = $len($1-)
  if (%length > 400) {
    haltdef
    :say

    if ($len($1-) > 400) {
      var %lenny = $calc($pos($1-,$chr(32),$calc($count($left($1-,400),$chr(32)) -1))))

      if ($left($1-,3) == /me) $left($1-,%lenny)
      else /say $left($1-,%lenny)
      dec %length %lenny

      if (%length > 0) {
        if ($left($1-,3) == /me) { tokenize 32 $1 $mid($1-,$calc(%lenny + 1)) | goto say }
        else { tokenize 32 $mid($1-,$calc(%lenny + 1)) | goto say }
      }
      else halt   
    }
    else {
      if ($left($1-,3) == /me) $left($1-,%lenny)
      else /say $left($1-,%lenny)
    }
  }

  if ($readini(ws.ini, $network, $chan) == on) {
    if (!roll isin $1) /roll $2-
    if (!e isin $1) /e $1-
  }
}

If you are using mIRC version 6.02 the on 1:INPUT tag in the remotes section should instead read as follows. This is due to a bug in 6.02 and does not affect any earlier or later versions.

on 1:INPUT:* {
  if ($readini(ws.ini, $network, $chan) == off) goto xyz
  if (?roll isin $1) /roll $2-
  if (?e isin $1) /e $1-
  :xyz
}
To activate, right click in the window.