This is a small battle bot that me and my friend made, i know when i post this theres gonna be a shitload of rippers, but oh well. Info is in the script. Please note that the script is only in v3.0, but there are no known bugs so if you have any suggestions, please tell me them.
;Unnamed Battle bot made by Alkora (Server: irc.lucidchat.net #Karma) and ][ (Server: irc.surrealchat.net #Empire)
;Start
on *:LOAD: {
echo -a Creating tips...
write tips.txt To enter the battle field, type Fight. To lock on to someone else in the battlefield, type lo <nick>. To attack someone while locked on to them, type Atk ə-4>
write tips.txt Locking on to someone will take some time (a few seconds), but it has a few benefits.
write tips.txt Benefit to locking on to someone #1: You don't have to say the person's name when attacking. #2: Your attack has a much lower chance of missing.
write tips.txt If you just spray-and-pray with atk <1-4> <nick>,(Basically, without typing lo nick to lock on to someone) you can attack multiple people quickly, but you lose accuracy.
write tips.txt To start registering, type Start.
write tips.txt To see whats in the store, type Store.
write tips.txt To view you stats, type Stats.
write tips.txt Admin Command: Kill <nickname> - Auto-Kills a person in battle
write tips.txt Admin Command: Forceadd <nickname> <gender> <Character> - Nickname is the users nick. Gender is the users gender, and Character is the character to set the nick to.
write tips.txt Admin Command: You CAN supply 'admin' if you want the user to be an admin, if you dont supply it, the user is registered as a normal user.
write tips.txt Admin Command: Forcedel <nickname> - Deletes a nicknames stats.
echo -a Tips created!
}
on *:JOIN:#: {
if ($nick == $me) {
timertip 0 1800 rantip $chan
}
}
on *:PART:#: {
if ($nick == $me) {
timertip off
}
}
on *:disconnect:#: {
timertip off
}
alias rantip {
msg $1 Random tip: $read(tips.txt)
}
on *:TEXT:start:#: {
msg $chan Welcome to Unnamed Game 3.0 (Beta).
if (!$readini(ugc.ini,chr,list)) { msg $chan Error - No Character Plugin detected. | return }
msg $chan Characters: $readini(ugc.ini,chr,list)
msg $chan Say chr <character> to choose a character.
msg $chan To see a characters information, type info <character>
}
on *:TEXT:info *:#: {
if (!$readini(ugc.ini,$2-,name)) {
msg $chan That character doesn't exist. | Halt
}
msg $chan Information for $2- $+ :
msg $chan Strongest Attack: $readini(ugc.ini,$2-,ATK1)
msg $chan Second Strongest Attack: $readini(ugc.ini,$2-,ATK2)
msg $chan Second WEAKEST attack: $readini(ugc.ini,$2-,ATK3)
msg $chan WEAKEST attack: $readini(ugc.ini,$2-,ATK4)
}
on *:TEXT:chr *:#: {
if (!$readini(ugc.ini,$2-,name)) {
msg $chan That character doesn't exist. | Halt
}
writeini ugs.ini $nick chr $readini(ugc.ini,$2-,name)
if ($readini(ugs.ini,$nick,LVL)) { goto AlreadyHasStats }
writeini ugs.ini $nick Attack 0
writeini ugs.ini $nick Defense 0
writeini ugs.ini $nick Speed 0
writeini ugs.ini $nick HP 200
writeini ugs.ini $nick HPMax 200
writeini ugs.ini $nick LVL 1
writeini ugs.ini $nick EXP 0
writeini ugs.ini $nick Nextlvl 100
writeini ugs.ini $nick Money 0
writeini ugs.ini $nick Fighting No
:AlreadyHasStats
writeini ugs.ini $nick ATK1 $readini(ugc.ini,$2-,ATK1)
writeini ugs.ini $nick ATK2 $readini(ugc.ini,$2-,ATK2)
writeini ugs.ini $nick ATK3 $readini(ugc.ini,$2-,ATK3)
writeini ugs.ini $nick ATK4 $readini(ugc.ini,$2-,ATK4)
msg $chan Okay. What is your gender? (Male, Female)
.auser Gen $nick
}
on Gen:TEXT:*:#: {
if (male == $1-) {
msg $chan Your gender has been set to: 'Male'
writeini ugs.ini $nick Gender him
msg $chan You are now registered with the character: $readini(ugs.ini,$nick,chr) $+ .
.ruser $nick
}
if (Female == $1-) {
msg $chan Your gender has been set to: 'Female'
writeini ugs.ini $nick Gender her
msg $chan You are now registered with the character: $readini(ugs.ini,$nick,chr) $+ .
.ruser $nick
}
}
on *:TEXT:stats*:#: {
if (!$2-) { set %temp.nick $nick | goto continue }
if ($2 ison $chan) { set %temp.nick $2 }
:continue
if (!$readini(ugs.ini,%temp.nick,CHR)) { msg $chan You/They are not registered. Say: Start | return }
if (!$readini(ugs.ini,%temp.nick,HPMax)) { msg $chan Error - There is a problem with your/their stats. Say start to re-register. | return }
msg $chan (Character: $readini(ugs.ini,%temp.nick,CHR) $+ ) (HP: $readini(ugs.ini,%temp.nick,HP) $+ / $+ $readini(ugs.ini,%temp.nick,HPMax) $+ ) (Level: $readini(ugs.ini,%temp.nick,LVL) $+ ) (EXP: $readini(ugs.ini,%temp.nick,EXP) $+ ) (Attack: $readini(ugs.ini,%temp.nick,Attack) $+ ) (Defense: $readini(ugs.ini,%temp.nick,Defense) $+ ) (Fighting: $readini(ugs.ini,%temp.nick,fighting) $+ )
msg $chan Attacks: (1: $readini(ugs.ini,%temp.nick,ATK1) $+ ) (2: $readini(ugs.ini,%temp.nick,ATK2) $+ ) (3: $readini(ugs.ini,%temp.nick,ATK3) $+ ) (4: $readini(ugs.ini,%temp.nick,ATK4) $+ )
}
on *:TEXT:Help*:#: {
if (!$2) {
notice $nick Topics: Battling - Registration - Store - Stats - Admin Commands | return
notice $nick Syntax: Help <topic>
}
if ($2 == Battling) {
notice $nick To enter the battle field, type Fight. To lock on to someone else in the battlefield, type lo <nick>. To attack someone while locked on to them, type Atk ə-4>
notice $nick Locking on to someone will take some time (a few seconds), but it has a few benefits:
notice $nick #1: You don't have to say the person's name when attacking. #2: Your attack has a much lower chance of missing.
notice $nick If you just spray-and-pray with atk <1-4> <nick>, you can attack multiple people quickly, but you lose accuracy.
}
if ($2 == Registration) {
notice $nick To start registering, type Start.
}
if ($2 == Store) {
notice $nick To see whats in the store, type Store.
}
if ($2 == Stats) {
notice $nick To view you stats, type Stats.
}
if ($2- == Admin Commands) {
notice $nick Admin Commands:
notice $nick Kill <nickname> - Auto-Kills a person in battle
notice $nick Forceadd <nickname> <gender> <Character> - Nickname is the users nick. Gender is the users gender, and Character is the character to set the nick to.
notice $nick You CAN supply 'admin' if you want the user to be an admin, if you dont supply it, the user is registered as a normal user.
notice $nick Forcedel <nickname> - Deletes a nicknames stats.
}
}
on *:TEXT:fight:#: {
if (!$readini(ugs.ini,$nick,CHR)) { msg $chan You are not registered. Say: Start | return }
if ($readini(ugs.ini,$nick,fighting) == yes) { msg $chan $nick $+ ( $+ $readini(ugs.ini,$nick,chr) $+ ) starts running from the battle field.. | timer 1 10 lfield $chan $nick | return }
writeini ugs.ini $nick fighting Yes
msg $chan $nick $+ ( $+ $readini(ugs.ini,$nick,chr) $+ ) has entered the field! To lock on to $readini(ugs.ini,$nick,Gender) say lo <nick>.
set %fighting %fighting $nick
}
alias lfield {
writeini ugs.ini $2 fighting No
writeini ugs.ini %temp.lo HP $readini(ugs.ini,%temp.lo,HPMax)
msg $1 $2 $+ ( $+ $readini(ugs.ini,$2,chr) $+ ) has escaped from the battle field!
set %fighting $remove(%fighting,$nick)
}
on *:TEXT:viewfield:#: {
msg $chan Users in feild: $iif(%fighting == $null,None,%fighting)
}
on *:TEXT:lo*:#: {
if ($1 != lo) { return }
if (!$2-) && (!$readini(ugs.ini,$nick,lo)) { msg $chan Error - Say Help Battling to learn how to lock on. | return }
if (!$2-) && ($readini(ugs.ini,$nick,lo)) { msg $chan $nick has stopped locking on to $readini(ugs.ini,$nick,lo) $+ . | remini ugs.ini $nick lo | return }
if ($2 !ison $chan) { msg $chan Error - That person is not here. | return }
if ($readini(ugs.ini,$nick,fighting) != Yes) { msg $chan Error - You are not in the field. Say: Fight | return }
if ($readini(ugs.ini,$2,fighting) != Yes) { msg $chan Error - That person is not in the field. Say: Fight | return }
msg $chan $nick begins targeting $2 $+ ..
timer 1 5 lo $chan $nick $2
}
alias lo {
writeini ugs.ini $2 lo $3
msg $1 $2 $+ ( $+ $readini(ugs.ini,$2,chr) $+ ) has locked on to $3 $+ ( $+ $readini(ugs.ini,$3,chr) $+ ) $+ ... They can now say ATK <number> to attack $readini(ugs.ini,$nick,Gender) $+ .
}
on *:TEXT:atk *:#: {
if (!$readini(ugs.ini,$nick,lo)) {
if (!$3) || ($4-) || ($3 !ison $chan) || ($readini(ugs.ini,$3,fighting) != Yes) { msg $chan Error - Say Help Battling to learn how to attack | return }
set %temp.lo $3
set %temp.miss 5
goto continue
}
if ($3) { msg $chan Error - You are already locked on to someone. Say lo to stop, or lo <nick> to lock on to someone else. | return }
set %temp.lo $readini(ugs.ini,$nick,lo)
set %temp.miss 3
:continue
if ($readini(ugs.ini,$nick,fighting) != Yes) { msg $chan Error - You are not in the field. Say: Fight | return }
if ($readini(ugs.ini,%temp.lo,fighting) != Yes) { msg $chan Error - That person is not in the field. Say: Fight | return }
if (%temp.lo !ison $chan) { msg $chan Error - That person has left/isn't here. | return }
if ($readini(ugs.ini,$nick,attacking) == Yes) { msg $chan Error - You are already attacking, $nick $+ . | return }
if ($2 < 0) || ($2 > 4) || ($2 !isnum) { msg $chan Error - Say Help Battling to learn how to attack | return }
writeini ugs.ini $nick attacking Yes
timer 1 10 datk $chan $nick
set %temp.hom $rand(1,%temp.miss)
if (%temp.hom == 1) {
msg $chan $nick $+ ( $+ $readini(ugs.ini,$nick,chr) $+ ) attacks %temp.lo $+ ( $+ $readini(ugs.ini,%temp.lo,chr) $+ ) with %temp.atk $+ .. but misses!
return
}
set %temp.atk $readini(ugs.ini,$nick,atk $+ $2)
set %tmp.exdmg $rand(1,23)
set %tmp.dmg $calc($readini(ugs.ini,$nick,Attack) - $readini(ugs.ini,%temp.lo,defense) + %tmp.exdmg)
if (%temp.dmg < 1) { set %temp.dmg 1 }
writeini ugs.ini %temp.lo HP $calc($readini(ugs.ini,%temp.lo,HP) - %temp.dmg)
if ($readini(ugs.ini,%temp.lo,HP) < 1) { writeini ugs.ini %temp.lo HP 0 }
msg $chan $readini(ugs.ini,$nick,HP) - $nick $+ ( $+ $readini(ugs.ini,$nick,chr) $+ ) $+ 's health - News: $nick $+ ( $+ $readini(ugs.ini,$nick,chr) $+ ) attacks %temp.lo with %temp.atk $+ !
msg $chan $readini(ugs.ini,%temp.lo,HP) - %temp.lo $+ 's health
set %temp.llo $rand(1,5)
if (%temp.llo == 1) && ($readini(ugs.ini,%temp.lo,lo)) {
remini ugs.ini %temp.lo lo
msg $chan %temp.lo $+ ( $+ $readini(ugs.ini,%temp.lo,chr) $+ ) has lost their lock on (to $readini(ugs.ini,%temp.lo,lo) $+ ) as a result of the attack.
return
}
if ($readini(ugs.ini,%temp.lo,HP) < 1) {
writeini ugs.ini %temp.lo fighting No
writeini ugs.ini %temp.lo HP $readini(ugs.ini,%temp.lo,HPMax)
set %temp.expgain $rand(1,40)
writeini ugs.ini $nick EXP $calc($readini(ugs.ini,$nick,EXP) + %temp.expgain)
msg $chan %temp.lo $+ ( $+ $readini(ugs.ini,%temp.lo,chr) $+ ) has died! $nick $+ ( $+ $readini(ugs.ini,$nick,chr) $+ ) gets %temp.expgain EXP for winning.
remini ugs.ini %temp.lo lo
}
if ($readini(ugs.ini,$nick,EXP) >= $readini(ugs.ini,$nick,Nextlvl)) {
msg $chan $nick $+ ( $+ $readini(ugs.ini,$nick,chr) $+ ) has just grown to level $calc($readini(ugs.ini,$nick,LVL) + 1)
writeini ugs.ini $nick Attack $calc($readini(ugs.ini,$nick,Attack) + 15)
writeini ugs.ini $nick Defense $calc($readini(ugs.ini,$nick,Defense) + 10)
writeini ugs.ini $nick HPMax $calc($readini(ugs.ini,$nick,HPMax) + 100)
writeini ugs.ini $nick LVL $calc($readini(ugs.ini,$nick,LVL) + 1)
writeini ugs.ini $nick EXP 0
writeini ugs.ini $nick Nextlvl $calc($readini(ugs.ini,$nick,Nextlvl) + 100)
writeini ugs.ini $nick Money $calc($readini(ugs.ini,$nick,Money) + 300)
writeini ugs.ini $nick HP $readini(ugs.ini,$nick,HPMax)
}
}
alias datk {
writeini ugs.ini $2 attacking No
msg $1 $2 $+ ( $+ $readini(ugs.ini,$2,chr) $+ ) has finished $readini(ugs.ini,$nick,Gender) attack.
}
on *:TEXT:Store:#: {
notice $nick Now listing store items..
notice $nick Health Boost - 800
notice $nick Health Potion - 200
notice $nick Attack Boost - 900
notice $nick Defense Boost - 750
notice $nick Finished listing store items..
notice $nick Syntax: Buy <item>
}
on *:TEXT:Buy*:#: {
if ($2- == Health Boost) {
if ($readini(ugs.ini,$nick,money) <= 800) {
notice $nick Purchased Health Boost
writeini ugs.ini $nick money $calc($readini(ugs.ini,$nick,money) - 800)
notice $nick Syntax: USE <item>
writeini ugs.ini $nick items $readini(ugs.ini,$nick,items) $+ Health Boost,
}
else { notice $nick You dont have enough money! }
}
if ($2- == Health Potion) {
if ($readini(ugs.ini,$nick,money) <= 200) {
notice $nick Purchased Health Potion
writeini ugs.ini $nick money $calc($readini(ugs.ini,$nick,money) - 200)
notice $nick Syntax: USE <item>
writeini ugs.ini $nick items $readini(ugs.ini,$nick,items) $+ Health Potion,
}
else { notice $nick You dont have enough money! }
}
if ($2- == Attack Boost) {
if ($readini(ugs.ini,$nick,money) <= 900) {
notice $nick Purchased Attack Boost
writeini ugs.ini $nick money $calc($readini(ugs.ini,$nick,money) - 900)
notice $nick Syntax: USE <item>
writeini ugs.ini $nick items $readini(ugs.ini,$nick,items) $+ Attack Boost,
}
else { notice $nick You dont have enough money! }
}
if ($2- == defense Boost) {
if ($readini(ugs.ini,$nick,money) <= 750) {
notice $nick Purchased Defense Boost
writeini ugs.ini $nick money $calc($readini(ugs.ini,$nick,money) - 750)
notice $nick Syntax: USE <item>
writeini ugs.ini $nick items $readini(ugs.ini,$nick,items) $+ defense Boost,
}
else { notice $nick You dont have enough money! }
}
}
on *:TEXT:USE*:#: {
if ($2- == Health Boost) {
if ($2- isin $readini(ugs.ini,$nick,items)) {
notice $nick Health boosted by 50 points!
writeini ugs.ini $nick HPMax $calc($readini(ugs.ini,$nick,HPMax) + 50)
writeini ugs.ini $nick items $remove($readini(ugs.ini,$nick,items),Health Boost $+ $chr(44))
}
}
if ($2- == Health Potion) {
if ($2- isin $readini(ugs.ini,$nick,items)) {
notice $nick You have been healed!
writeini ugs.ini $nick HP $readini(ugs.ini,$nick,HPMax)
writeini ugs.ini $nick items $remove($readini(ugs.ini,$nick,items),Health Potion $+ $chr(44))
}
}
if ($2- == Attack Boost) {
if ($2- isin $readini(ugs.ini,$nick,items)) {
notice $nick Attack boosted by 25 points!
writeini ugs.ini $nick Attack $calc($readini(ugs.ini,$nick,attack) + 25)
writeini ugs.ini $nick items $remove($readini(ugs.ini,$nick,items),Attack Boost $+ $chr(44))
}
}
if ($2- == Defense Boost) {
if ($2- isin $readini(ugs.ini,$nick,items)) {
notice $nick Defense boosted by 25 points!
writeini ugs.ini $nick Defense $calc($readini(ugs.ini,$nick,Defense) + 25)
writeini ugs.ini $nick items $remove($readini(ugs.ini,$nick,items),Defense Boost $+ $chr(44))
}
}
}
menu channel {
...Plugins
....Configure Character Plugin
..Add character:chrconfig add
..Del character:chrconfig del
....Advanced
...Edit manually:run ugc.ini
...Say the list:msg $active Character list: $readini(ugc.ini,chr,list)
.Admin Configuration
..Add Admin:gadmin ADD
..Del Admin:gadmin DEL
..List Admins:msg $active Admin list: $readini(uga.ini,Admins,list)
}
alias gadmin {
if ($1 == ADD) {
set %temp.admin $$?="What does the admin go by?(His/Her nick on IRC)"
writeini uga.ini Admins Pass. $+ %temp.admin $$?="What is this admins password?"
.auser gameadmin %temp.admin
writeini uga.ini Admins List $readini(uga.ini,Admins,List) $+ %temp.admin $+ ,
unset %temp.admin
echo -a Admin added!
}
if ($1 == DEL) {
set %temp.deladmin $$?="What admin do you want to delete?"
if (%temp.deladmin isin $readini(uga.ini,Admins,List)) {
set %temp.list $readini(uga.ini,admins,list)
writeini uga.ini Admins List $remove(%temp.list,%temp.deladmin)
.ruser gameadmin %temp.deladmin
unset %temp.deladmin
unset %temp.list
echo -a Admin Deleted
}
}
}
alias chrconfig {
if ($1 == add) {
set %chrname $$?="What is the characters name?"
if ($readini(ugc.ini,chr,list)) { set %temp.set $readini(ugc.ini,chr,list) $+ , %chrname }
if (!$readini(ugc.ini,chr,list)) { set %temp.set %chrname }
writeini ugc.ini chr List %temp.set
writeini ugc.ini %chrname Name %chrname
writeini ugc.ini %chrname atk1 $$?="What is this characters STRONGEST attack?"
writeini ugc.ini %chrname atk2 $$?="What is this characters second STRONGEST attack?"
writeini ugc.ini %chrname atk3 $$?="what is this characters second WEAKEST attack?"
writeini ugc.ini %chrname atk4 $$?="What is this characters WEAKEST attack?"
echo -a Character Created!
}
if ($1 == del) {
set %remnick $$?="What is the characters name?"
remini ugc.ini %remnick
if ($chr(44) %remnick isin $readini(ugc.ini,chr,list)) { set %temp.remove $chr(44) %remnick | goto write }
if (%remnick $+ $chr(44) $+ $chr(32) isin $readini(ugc.ini,chr,list)) { set %temp.remove %remnick $+ $chr(44) $+ $chr(32) | goto write }
set %temp.remove %remnick
if (%remnick !isin $readini(ugc.ini,chr,list)) { echo -a That character was not found. | return }
:write
if (%temp.remove == $readini(ugc.ini,chr,list)) { .remove ugc.ini | goto done }
writeini ugc.ini chr list $remove($readini(ugc.ini,chr,list),%temp.remove)
:done
echo -a Character Deleted!
}
}
on gameadmin:TEXT:Kill *:#: {
if ($readini(uga.ini,Admins,$nick) != Loggedin) { notice $nick You must log in with your admin name and password! | return }
if ($2 !ison $chan) { msg $chan Error - That person is not here. | return }
if ($readini(ugs.ini,$nick,fighting) != Yes) { msg $chan Error - You are not in the field. Say: Fight | return }
if ($readini(ugs.ini,$2,fighting) != Yes) { msg $chan Error - That person is not in the field. Say: Fight | return }
writeini ugs.ini $2 fighting No
writeini ugs.ini $2 HP $readini(ugs.ini,$2,HPMax)
set %temp.expgain $rand(1,40)
writeini ugs.ini $nick EXP $calc($readini(ugs.ini,$nick,EXP) + %temp.expgain)
msg $chan $2 $+ ( $+ $readini(ugs.ini,$2,chr) $+ ) has died! $nick $+ ( $+ $readini(ugs.ini,$nick,chr) $+ ) gets %temp.expgain EXP for winning.
remini ugs.ini %temp.lo lo
}
on gameadmin:TEXT:force*:#: {
if ($1 == forceadd) {
if ($readini(uga.ini,Admins,$nick) != Loggedin) { notice $nick You must log in with your admin name and password! | return }
if (!$readini(ugc.ini,$4-,name)) {
msg $chan That character doesn't exist. | Halt
}
if (!$2) { msg $chan Syntax Error, Proper Syntax: forceadd <nickname> <gender> <character> | halt }
if (!$3) { msg $chan Syntax Error, Proper Syntax: forceadd <nickname> <gender> <character> | halt }
if (!$4) { msg $chan Syntax Error, Proper Syntax: forceadd <nickname> <gender> <character> | halt }
set %temp.addnick $2
set %temp.gender $3
set %temp.addchar $4
writeini ugs.ini $2 chr $readini(ugc.ini,$4-,name)
if ($readini(ugs.ini,$2,LVL)) { goto AlreadyHasStats }
writeini ugs.ini %temp.addnick Attack 0
writeini ugs.ini %temp.addnick Defense 0
writeini ugs.ini %temp.addnick Speed 0
writeini ugs.ini %temp.addnick HP 200
writeini ugs.ini %temp.addnick HPMax 200
writeini ugs.ini %temp.addnick LVL 1
writeini ugs.ini %temp.addnick EXP 0
writeini ugs.ini %temp.addnick Nextlvl 100
writeini ugs.ini %temp.addnick Money 0
writeini ugs.ini %temp.addnick Fighting No
:AlreadyHasStats
writeini ugs.ini %temp.addnick ATK1 $readini(ugc.ini,$4-,ATK1)
writeini ugs.ini %temp.addnick ATK2 $readini(ugc.ini,$4-,ATK2)
writeini ugs.ini %temp.addnick ATK3 $readini(ugc.ini,$4-,ATK3)
writeini ugs.ini %temp.addnick ATK4 $readini(ugc.ini,$4-,ATK4)
if ($3 == Female) {
writeini ugs.ini %temp.addnick Gender her
msg $chan $2 is now registered with the character: $readini(ugs.ini,$2,chr) $+ .
}
if ($3 == Male) {
writeini ugs.ini %temp.addnick Gender him
msg $chan $2 is now registered with the character: $readini(ugs.ini,$2,chr) $+ .
}
}
if ($1 == forcedel) {
if ($readini(uga.ini,Admins,$nick) != Loggedin) { notice $nick You must log in with your admin name and password! | return }
remini ugs.ini $2
msg $chan All stats for $2 have been deleted.
}
}
on gameadmin:TEXT:Login *:?: {
if ($readini(uga.ini,Admins,$nick) == Loggedin) { notice $nick You are already logged in! | return }
if ($2 == $readini(uga.ini,Admins,Pass. $+ $nick)) {
writeini uga.ini Admins $nick Loggedin
notice $nick You have logged in!
}
Else { notice $nick Wrong password! | return }
}
Sora-: Just added a \'viewfield\' command. So now you can see whos battling. :D I\'ve also edited a few things:
Also, please re-load the script into remotes. So it creates the tips.
I\'ve yet to add NPC\'s, when i find enough time I\'ll do so.
WindChill, Do this: