mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-12 08:11:10 +02:00
Added bot code.
This commit is contained in:
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Angelyss"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.3
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/angelyss_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.3
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.3
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 1.5
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/angelyss_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "angelyss"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/angelyss_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.43
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.43
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Angelyss"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/angelyss_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/angelyss_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "angelyss"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/angelyss_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.95
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.1
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Angelyss"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/angelyss_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/angelyss_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "angelyss"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/angelyss_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.01
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 300
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 350
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 175
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,289 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Angelyss"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Hello.";
|
||||
"Are you prepared for pain?";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Look at the ~time";
|
||||
4, " kinda wears on me, I think I'll find a different server, later ~peeps";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
0, " it is time for some payback!";
|
||||
1, " you are going to have some pain in ", 4, ".";
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
"HA! ", 3, " is at the bottom, as usual.";
|
||||
2, ", I let you win.";
|
||||
4, " has changed a lot, it is much faster now.";
|
||||
"Is it over yet?";
|
||||
"I can remember when ", 4, " didn't suck.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
3, " you need to practice more... and forget about winning against me.";
|
||||
LEVEL_END_VICTORY1;
|
||||
"I really like ", 4, " since they fixed it, it is so easy to win!";
|
||||
"Next time, don't bother.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " cheated.";
|
||||
"I had a hang nail, so of course I lost.";
|
||||
"So much for my bluster...";
|
||||
"I felt bad for you so I let you win.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
0, ", didn't your mother ever tell you it was rude to interrupt a conversation?";
|
||||
"I am going to shove that ", 1, " down your throat if you do that again!";
|
||||
"Hey jerk! I was trying to hold a conversation here... do you mind?";
|
||||
"Jerk";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
1, " is not a good weapon, a ", weapon, " should be more your speed.";
|
||||
"You need to aim better.";
|
||||
"Try harder next time.";
|
||||
curse;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
0, " must be cheating.";
|
||||
"Dammit! Why won't you die?!?";
|
||||
"Well that sucked...";
|
||||
"Note to self... turn off safety next ~time";
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"Stop smoking ", substance, " and maybe you won't kill yourself so often.";
|
||||
"Tired of life, ", 0, "? Give it up.";
|
||||
"I guess that beats dying of ", disease, "...";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
"I hate praetorian impressions.";
|
||||
"My ", counselor, " warned about days like this.";
|
||||
"D'oh!";
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
"It didn't look that high from up there...";
|
||||
"*sigh*";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"Well... it beats a case of hypothermia.";
|
||||
"At least it is warm here";
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
"Green has never been my color...";
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
DEATH_DROWN0;
|
||||
"It isn't that difficult to just breath water...";
|
||||
"So why can't I breath water?";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
DEATH_SUICIDE2;
|
||||
"So much for life and all of its cruel irony.";
|
||||
"It is just easier for ", 0, " this way.";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"Unsanitary.";
|
||||
"What part of '~Don't touch me there' do you not understand?";
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_FEM_INSULT1;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
"Can't find a skill weapon? Or is it just that you suck?";
|
||||
"Over-compensating for something?";
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
curse;
|
||||
"This is far more painful than it looks.";
|
||||
"One day, ", 0, " you me and a ", weapon, " are going to have a discussion.";
|
||||
"Is that the best you can do?";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
"Not bad, ", 0, ", have you been practicing?";
|
||||
"I never saw it coming.";
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
0, ", you should stay down...";
|
||||
"*sigh* if only this was challenging.";
|
||||
"I love this gun!";
|
||||
"Way too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
"Aww man... now I have to take a bath to get the brains out.";
|
||||
"Does anyone have a quick way of getting brains out of your hair?";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
"Why do you even bother?";
|
||||
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
"You are getting better, ", 0, ", keep it up and you might actually win something.";
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT_FEM0;
|
||||
TAUNT1;
|
||||
"You should give up your ", substance, " addiction by next ", month, ".";
|
||||
"I saw those pictures of ", 0, " and a ", animal, " posted on the web last night... Like, ewww!";
|
||||
immaturity01;
|
||||
"Your ", family_member, " needs to stop calling me.";
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
"this one time, at band camp...";
|
||||
GRRLTALK1;
|
||||
MISC4;
|
||||
"Has anyone tried out the new ", 5, "? Is it worth the upgrade?";
|
||||
MISC1;
|
||||
"You would be surprised what you can do with a ", animal, " a ", food, " and ", peeps, ".";
|
||||
"Next time you see Gargoyle tell him to call me, mmmkay?";
|
||||
neuterbot, " is cute.";
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 40
|
||||
//shotgun
|
||||
#define SGW 110
|
||||
//machinegun
|
||||
#define MGW 90
|
||||
//grenade launcher
|
||||
#define GLW 170
|
||||
//rocket launcher
|
||||
#define RLW 160
|
||||
//railgun
|
||||
#define RGW 150
|
||||
//bfg10k
|
||||
#define BFW 90
|
||||
//lightninggun
|
||||
#define LGW 200
|
||||
//plasmagun
|
||||
#define PGW 210
|
||||
//grapplinghook
|
||||
#define GRW 10
|
||||
//prox-launcher
|
||||
#define PXW 140
|
||||
//nailgun
|
||||
#define NGW 190
|
||||
//chaingun
|
||||
#define CGW 125
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Arachna"
|
||||
CHARACTERISTIC_GENDER "it"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.25
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/arachna_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.25
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.25
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.25
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 3.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/arachna_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "arachna"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.5
|
||||
CHARACTERISTIC_CHAT_MISC 0.5
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.5
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.5
|
||||
CHARACTERISTIC_CHAT_KILL 0.5
|
||||
CHARACTERISTIC_CHAT_DEATH 0.5
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.5
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.5
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.5
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.5
|
||||
CHARACTERISTIC_CHAT_REPLY 0.5
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/arachna_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.3
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.3
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Arachna"
|
||||
CHARACTERISTIC_GENDER "it"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/arachna_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/arachna_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "arachna"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/arachna_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.75
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Arachna"
|
||||
CHARACTERISTIC_GENDER "it"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/arachna_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/arachna_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "arachna"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/arachna_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 400
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 400
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 15
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,275 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Arachna"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Hello.";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Look at the ~time";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
0, " it is time for some payback!";
|
||||
1, " you are going to have some pain in ", 4, ".";
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
2, ", I let you win.";
|
||||
4, " has changed a lot, it is much faster now.";
|
||||
"Is it over yet?";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
3, " you need to practice more... and forget about winning against me.";
|
||||
LEVEL_END_VICTORY1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " cheated.";
|
||||
"I had a hang nail, so of course I lost.";
|
||||
"So much for my bluster...";
|
||||
"I felt bad for you so I let you win.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
0, ", didn't your mother ever tell you it was rude to interrupt a conversation?";
|
||||
"I am going to shove that ", 1, " down your throat if you do that again!";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
1, " is not a good weapon, a ", weapon, " should be more your speed.";
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
0, " must be cheating.";
|
||||
"Well that sucked...";
|
||||
"Note to self... turn off safety next ~time";
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"Stop smoking ", substance, " and maybe you won't kill yourself so often.";
|
||||
"Tired of life, ", 0, "? Give it up.";
|
||||
"I guess that beats dying of ", disease, "...";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
"I hate praetorian impressions.";
|
||||
"My ", counselor, " warned about days like this.";
|
||||
"D'oh!";
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
"It didn't look that high from up there...";
|
||||
"*sigh*";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"Well... it beats a case of hypothermia.";
|
||||
"At least it is warm here";
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
"Green has never been my color...";
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
DEATH_DROWN0;
|
||||
"It isn't that difficult to just breath water...";
|
||||
"So why can't I breath water?";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
DEATH_SUICIDE2;
|
||||
"So much for life and all of its cruel irony.";
|
||||
"It is just easier for ", 0, " this way.";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"Unsanitary.";
|
||||
"What part of '~Don't touch me there' do you not understand?";
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_FEM_INSULT1;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
"Can't find a skill weapon? Or is it just that you suck?";
|
||||
"Over-compensating for something?";
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
curse;
|
||||
"This is far more painful than it looks.";
|
||||
"One day, ", 0, " you me and a ", weapon, " are going to have a discussion.";
|
||||
"Is that the best you can do?";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
"Not bad, ", 0, ", have you been practicing?";
|
||||
"I never saw it coming.";
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
0, ", you should stay down...";
|
||||
"*sigh* if only this was challenging.";
|
||||
"I love this gun!";
|
||||
"Way too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
"Aww man... now I have to take a bath to get the brains out.";
|
||||
"Does anyone have a quick way of getting brains out of your hair?";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
"Why do you even bother?";
|
||||
"This is why the upper classes are called the 'ruling elite.'";
|
||||
"Why do the lower classes think they can match someone of my caliber?";
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
"You are getting better, ", 0, ", keep it up and you might actually win something.";
|
||||
"That was a challenge.";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT_FEM0;
|
||||
TAUNT1;
|
||||
curse;
|
||||
"You should give up your ", substance, " addiction by next ", month, ".";
|
||||
"I saw those pictures of ", 0, " and a ", animal, " posted on the web last night... Like, ewww!";
|
||||
immaturity01;
|
||||
"Your ", family_member, " needs to stop calling me.";
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
GRRLTALK0;
|
||||
MISC4;
|
||||
"Has anyone tried out the new ", 5, "? Is it worth the upgrade?";
|
||||
MISC1;
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 25
|
||||
//shotgun
|
||||
#define SGW 125
|
||||
//machinegun
|
||||
#define MGW 90
|
||||
//grenade launcher
|
||||
#define GLW 110
|
||||
//rocket launcher
|
||||
#define RLW 190
|
||||
//railgun
|
||||
#define RGW 200
|
||||
//bfg10k
|
||||
#define BFW 105
|
||||
//lightninggun
|
||||
#define LGW 120
|
||||
//plasmagun
|
||||
#define PGW 190
|
||||
//grapplinghook
|
||||
#define GRW 10
|
||||
//prox-launcher
|
||||
#define PXW 130
|
||||
//nailgun
|
||||
#define NGW 160
|
||||
//chaingun
|
||||
#define CGW 162
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Ayumi"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.25
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/ayumi_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.25
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.25
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.25
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 3.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/ayumi_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Ayumi"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/ayumi_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.4
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.4
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.4
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.4
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.4
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.3
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Ayumi"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/ayumi_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/ayumi_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Ayumi"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/ayumi_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.8
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.75
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.5
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Ayumi"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/ayumi_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/ayumi_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Ayumi"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/ayumi_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 400
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 400
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 135
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 200
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 75
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,251 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Ayumi"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
3, " sucks!";
|
||||
2, ", I let you win.";
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
LEVEL_END_VICTORY0;
|
||||
LEVEL_END_VICTORY1;
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " must be an Arena Lord.";
|
||||
1, " kept getting in my way.";
|
||||
4, " has never been good to me.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
"Try harder next time.";
|
||||
"Wuss";
|
||||
"Heh, you suck.";
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
HIT_NOKILL0;
|
||||
HIT_NOKILL1;
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"LOL!";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"It burns!";
|
||||
"land conservation";
|
||||
DEATH_SUICIDE0;
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
DEATH_SLIME0;
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
"I can't swim!";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
"Aww crap!";
|
||||
"Shutup!";
|
||||
"I meant to do that.";
|
||||
DEATH_SUICIDE2;
|
||||
DEATH_SUICIDE1;
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"D'oh!";
|
||||
DEATH_GAUNTLET0;
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
KILL_RAIL1;
|
||||
KILL_RAIL0;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
|
||||
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
TELEFRAGGED2;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
KILL_INSULT2;
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
PRAISE0;
|
||||
PRAISE1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
"Your breath stinks";
|
||||
"Get off your dead butt and something for a change.";
|
||||
"Life got you down? Give it up.";
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
|
||||
GRRLTALK0;
|
||||
GRRLTALK1;
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 25
|
||||
//shotgun
|
||||
#define SGW 135
|
||||
//machinegun
|
||||
#define MGW 90
|
||||
//grenade launcher
|
||||
#define GLW 110
|
||||
//rocket launcher
|
||||
#define RLW 190
|
||||
//railgun
|
||||
#define RGW 115
|
||||
//bfg10k
|
||||
#define BFW 200
|
||||
//lightninggun
|
||||
#define LGW 150
|
||||
//plasmagun
|
||||
#define PGW 195
|
||||
//grapplinghook
|
||||
#define GRW 10
|
||||
//prox-launcher
|
||||
#define PXW 210
|
||||
//nailgun
|
||||
#define NGW 180
|
||||
//chaingun
|
||||
#define CGW 155
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Beret"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.25
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/beret_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.25
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.25
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.25
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 3.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/beret_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "beret"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.5
|
||||
CHARACTERISTIC_CHAT_MISC 0.5
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.5
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.5
|
||||
CHARACTERISTIC_CHAT_KILL 0.5
|
||||
CHARACTERISTIC_CHAT_DEATH 0.5
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.5
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.5
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.5
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.5
|
||||
CHARACTERISTIC_CHAT_REPLY 0.5
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/beret_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.3
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.3
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Beret"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/beret_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/beret_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "beret"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/beret_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.75
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Beret"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/beret_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/beret_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "beret"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/beret_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 400
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 400
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 40
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,278 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Beret"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Rectum? It nearly killed him!";
|
||||
0, " is a loser!";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Your mother is here, got to go.";
|
||||
"Aurevoir mes amis.";
|
||||
4, " is too slow for me, audios.";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
"Worst level ever!";
|
||||
0, " is gonna pay.";
|
||||
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
3, " sucks!";
|
||||
2, ", I let you win.";
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
LEVEL_END_VICTORY0;
|
||||
LEVEL_END_VICTORY1;
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " must be an Arena Lord.";
|
||||
1, " kept getting in my way.";
|
||||
4, " has never been good to me.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
"Son of a... you shall pay for that!";
|
||||
"Infidel!!!";
|
||||
"Jerkwad";
|
||||
"Schmuck";
|
||||
"Tosser";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
"Try harder next time.";
|
||||
"Wuss";
|
||||
"Heh, you suck.";
|
||||
"Nice shooting Tex, you need to take lessons from Dick.";
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
HIT_NOKILL0;
|
||||
HIT_NOKILL1;
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"LOL!";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
DEATH_SUICIDE0;
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
DEATH_SLIME0;
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
"I can't swim!";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
"Aww crap!";
|
||||
"Shutup!";
|
||||
DEATH_SUICIDE2;
|
||||
DEATH_SUICIDE1;
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"Humiliating.";
|
||||
"D'oh!";
|
||||
DEATH_GAUNTLET0;
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
"Always look on the bright side of death.";
|
||||
"pfff";
|
||||
"Wuss";
|
||||
"Sissy";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
KILL_RAIL1;
|
||||
KILL_RAIL0;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
"Get whacked!";
|
||||
"It's whack time!";
|
||||
"I'm saving my best whack for ", 0, ".";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
TELEFRAGGED2;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
"I just made my perfect world, oops you're gone.";
|
||||
KILL_INSULT4;
|
||||
KILL_INSULT2;
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
PRAISE0;
|
||||
PRAISE1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
"Your breath stinks";
|
||||
"Get a hair cut";
|
||||
"Get a real job";
|
||||
"Get a life";
|
||||
TAUNT0;
|
||||
TAUNT1;
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
"Has anyone found the chocolate bar yet?";
|
||||
"Let's go to Denny's and watch the floor show, you're buying.";
|
||||
"Love is the devil's toy.";
|
||||
"Did you hear about ", 0, " in ", 4, "? I'd be ashamed of myself if I did that.";
|
||||
"Never trust a hippy.";
|
||||
4, " Uber Alles!";
|
||||
"I am all that is fish.";
|
||||
"Gamers are the whiniest bunch!";
|
||||
GUYTALK1;
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 25
|
||||
//shotgun
|
||||
#define SGW 160
|
||||
//machinegun
|
||||
#define MGW 60
|
||||
//grenade launcher
|
||||
#define GLW 110
|
||||
//rocket launcher
|
||||
#define RLW 260
|
||||
//railgun
|
||||
#define RGW 195
|
||||
//bfg10k
|
||||
#define BFW 260
|
||||
//lightninggun
|
||||
#define LGW 180
|
||||
//plasmagun
|
||||
#define PGW 150
|
||||
//grapplinghook
|
||||
#define GRW 185
|
||||
//prox-launcher
|
||||
#define PXW 120
|
||||
//nailgun
|
||||
#define NGW 260
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Dark"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.3
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/dark_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.3
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.3
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 1.5
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/dark_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "dark"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/dark_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.43
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.43
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Dark"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/dark_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/dark_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "dark"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/dark_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.95
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.1
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Dark"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/dark_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/dark_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "dark"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/dark_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.01
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 300
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 350
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 175
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,289 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Dark"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Hello.";
|
||||
"Are you prepared for pain?";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Look at the ~time";
|
||||
4, " kinda wears on me, I think I'll find a different server, later ~peeps";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
0, " it is time for some payback!";
|
||||
1, " you are going to have some pain in ", 4, ".";
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
"HA! ", 3, " is at the bottom, as usual.";
|
||||
2, ", I let you win.";
|
||||
4, " has changed a lot, it is much faster now.";
|
||||
"Is it over yet?";
|
||||
"I can remember when ", 4, " didn't suck.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
3, " you need to practice more... and forget about winning against me.";
|
||||
LEVEL_END_VICTORY1;
|
||||
"I really like ", 4, " since they fixed it, it is so easy to win!";
|
||||
"Next time, don't bother.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " cheated.";
|
||||
"I had a hang nail, so of course I lost.";
|
||||
"So much for my bluster...";
|
||||
"I felt bad for you so I let you win.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
0, ", didn't your mother ever tell you it was rude to interrupt a conversation?";
|
||||
"I am going to shove that ", 1, " down your throat if you do that again!";
|
||||
"Hey jerk! I was trying to hold a conversation here... do you mind?";
|
||||
"Jerk";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
1, " is not a good weapon, a ", weapon, " should be more your speed.";
|
||||
"You need to aim better.";
|
||||
"Try harder next time.";
|
||||
curse;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
0, " must be cheating.";
|
||||
"Dammit! Why won't you die?!?";
|
||||
"Well that sucked...";
|
||||
"Note to self... turn off safety next ~time";
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"Stop smoking ", substance, " and maybe you won't kill yourself so often.";
|
||||
"Tired of life, ", 0, "? Give it up.";
|
||||
"I guess that beats dying of ", disease, "...";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
"I hate praetorian impressions.";
|
||||
"My ", counselor, " warned about days like this.";
|
||||
"D'oh!";
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
"It didn't look that high from up there...";
|
||||
"*sigh*";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"Well... it beats a case of hypothermia.";
|
||||
"At least it is warm here";
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
"Green has never been my color...";
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
DEATH_DROWN0;
|
||||
"It isn't that difficult to just breath water...";
|
||||
"So why can't I breath water?";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
DEATH_SUICIDE2;
|
||||
"So much for life and all of its cruel irony.";
|
||||
"It is just easier for ", 0, " this way.";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"Unsanitary.";
|
||||
"What part of '~Don't touch me there' do you not understand?";
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_FEM_INSULT1;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
"Can't find a skill weapon? Or is it just that you suck?";
|
||||
"Over-compensating for something?";
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
curse;
|
||||
"This is far more painful than it looks.";
|
||||
"One day, ", 0, " you me and a ", weapon, " are going to have a discussion.";
|
||||
"Is that the best you can do?";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
"Not bad, ", 0, ", have you been practicing?";
|
||||
"I never saw it coming.";
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
0, ", you should stay down...";
|
||||
"*sigh* if only this was challenging.";
|
||||
"I love this gun!";
|
||||
"Way too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
"Aww man... now I have to take a bath to get the brains out.";
|
||||
"Does anyone have a quick way of getting brains out of your hair?";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
"Why do you even bother?";
|
||||
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
"You are getting better, ", 0, ", keep it up and you might actually win something.";
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT_FEM0;
|
||||
TAUNT1;
|
||||
"You should give up your ", substance, " addiction by next ", month, ".";
|
||||
"I saw those pictures of ", 0, " and a ", animal, " posted on the web last night... Like, ewww!";
|
||||
immaturity01;
|
||||
"Your ", family_member, " needs to stop calling me.";
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
"this one time, at band camp...";
|
||||
GRRLTALK1;
|
||||
MISC4;
|
||||
"Has anyone tried out the new ", 5, "? Is it worth the upgrade?";
|
||||
MISC1;
|
||||
"You would be surprised what you can do with a ", animal, " a ", food, " and ", peeps, ".";
|
||||
"Next time you see ", peeps, " tell 'em to call me, mmmkay?";
|
||||
neuterbot, " is cute.";
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 10
|
||||
//shotgun
|
||||
#define SGW 180
|
||||
//machinegun
|
||||
#define MGW 75
|
||||
//grenade launcher
|
||||
#define GLW 170
|
||||
//rocket launcher
|
||||
#define RLW 160
|
||||
//railgun
|
||||
#define RGW 250
|
||||
//bfg10k
|
||||
#define BFW 90
|
||||
//lightninggun
|
||||
#define LGW 200
|
||||
//plasmagun
|
||||
#define PGW 110
|
||||
//grapplinghook
|
||||
#define GRW 10
|
||||
//prox-launcher
|
||||
#define PXW 160
|
||||
//nailgun
|
||||
#define NGW 200
|
||||
//chaingun
|
||||
#define CGW 175
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Player"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.25
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/gargoyle_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.25
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.25
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.25
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 3.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/gargoyle_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "player"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.5
|
||||
CHARACTERISTIC_CHAT_MISC 0.5
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.5
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.5
|
||||
CHARACTERISTIC_CHAT_KILL 0.5
|
||||
CHARACTERISTIC_CHAT_DEATH 0.5
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.5
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.5
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.5
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.5
|
||||
CHARACTERISTIC_CHAT_REPLY 0.5
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/gargoyle_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.3
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.3
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Player"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/gargoyle_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/gargoyle_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "player"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/gargoyle_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.75
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Player"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/gargoyle_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/gargoyle_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "player"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/gargoyle_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 400
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 400
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 40
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,178 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "default"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW
|
||||
//shotgun
|
||||
#define SGW
|
||||
//machinegun
|
||||
#define MGW
|
||||
//grenade launcher
|
||||
#define GLW
|
||||
//rocket launcher
|
||||
#define RLW
|
||||
//railgun
|
||||
#define RGW
|
||||
//bfg10k
|
||||
#define BFW
|
||||
//lightninggun
|
||||
#define LGW
|
||||
//plasmagun
|
||||
#define PGW
|
||||
//grapplinghook
|
||||
#define GRW
|
||||
//prox-launcher
|
||||
#define PXW
|
||||
//nailgun
|
||||
#define NGW
|
||||
//chaingun
|
||||
#define CGW
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,203 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Gargoyle"
|
||||
CHARACTERISTIC_GENDER "Male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.250
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/gargoyle_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.250
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.250
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.250
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 2.00
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/gargoyle_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "gargoyle"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.200
|
||||
CHARACTERISTIC_JUMPER 0.900
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.800
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.500
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/gargoyle_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.250
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.900
|
||||
CHARACTERISTIC_VENGEFULNESS 0.900
|
||||
CHARACTERISTIC_CAMPER 0.000
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 0.900
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.500
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.400
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.300
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.700
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.450
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.400
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.800
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.500
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.800
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Gargoyle"
|
||||
CHARACTERISTIC_GENDER "Male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.000
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/gargoyle_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.000
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.900
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.25
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/gargoyle_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "gargoyle"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.100
|
||||
CHARACTERISTIC_JUMPER 1.000
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.000
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.000
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/gargoyle_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.000
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.000
|
||||
CHARACTERISTIC_VENGEFULNESS 1.000
|
||||
CHARACTERISTIC_CAMPER 0.500
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 1.000
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.900
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.900
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Gargoyle"
|
||||
CHARACTERISTIC_GENDER "Male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.000
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/gargoyle_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.000
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.000
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.00
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/gargoyle_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "gargoyle"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.000
|
||||
CHARACTERISTIC_JUMPER 1.000
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.000
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.000
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/gargoyle_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.000
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.000
|
||||
CHARACTERISTIC_VENGEFULNESS 1.000
|
||||
CHARACTERISTIC_CAMPER 0.000
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 1.000
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.700
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.000
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.000
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
#define FPH 2
|
||||
#define FPA 1
|
||||
|
||||
#define SGW 200
|
||||
#define MGW 100
|
||||
#define GLW 150
|
||||
#define RLW 350
|
||||
#define RGW 500
|
||||
#define BFW 450
|
||||
#define LGW 200
|
||||
#define PGW 250
|
||||
#define PXW 350
|
||||
#define NGW 150
|
||||
#define CGW 200
|
||||
|
||||
#define GSGW 150
|
||||
#define GMGW 150
|
||||
#define GGLW 200
|
||||
#define GRLW 300
|
||||
#define GRGW 400
|
||||
#define GBFW 100
|
||||
#define GLGW 250
|
||||
#define GPGW 100
|
||||
#define GPXW 200
|
||||
#define GNGW 100
|
||||
#define GCGW 125
|
||||
|
||||
#define TELW 190
|
||||
#define MEDW 50
|
||||
#define QW 500
|
||||
#define ENVW 50
|
||||
#define HAW 50
|
||||
#define INW 400
|
||||
#define REGW 50
|
||||
#define FLW 190
|
||||
#define KAMW 200
|
||||
#define IBW 150
|
||||
#define PORW 300
|
||||
#define SCW 100
|
||||
#define GUW 200
|
||||
#define DUBW 100
|
||||
#define AMRW 400
|
||||
#define REDCW 200
|
||||
#define BLCW 200
|
||||
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,266 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
|
||||
chat "gargoyle"
|
||||
{
|
||||
#include "teamplay.h"
|
||||
|
||||
type "game_enter"
|
||||
{
|
||||
"I hope that you are all ready to die, because you will.";
|
||||
"Ladies and Gentlemen, the word is pain. Time to spread the word.";
|
||||
"...clowns to the left of me, jokers to the right, here I am stuck in the middle with you...";
|
||||
|
||||
}
|
||||
|
||||
type "game_exit"
|
||||
{
|
||||
"~It's been real and ~it's been fun...";
|
||||
"Sorry ~that's your ~Mom on the phone, I have to take this.";
|
||||
"Look at the time... later peeps.";
|
||||
|
||||
}
|
||||
|
||||
type "level_start"
|
||||
{
|
||||
4, "was a great place before they screwed it up.";
|
||||
4, "... again?!?";
|
||||
"I can remember ", 4, " when it didn't suck.";
|
||||
"Dibs on the railgun!";
|
||||
}
|
||||
|
||||
type "level_end"
|
||||
{
|
||||
"*Yawn*... thought it would never end.";
|
||||
"Well that was almost interesting.";
|
||||
"What? No dancing girls? Where's my agent?!?";
|
||||
|
||||
}
|
||||
|
||||
type "level_end_victory"
|
||||
{
|
||||
"As usual... You still suck.";
|
||||
"Things are as they should be.";
|
||||
"Why do you even try?";
|
||||
"Did you really think that you could beat me?";
|
||||
}
|
||||
|
||||
type "level_end_lose"
|
||||
{
|
||||
"Ya Basta!";
|
||||
"Two out of three?";
|
||||
"I was robbed!";
|
||||
"My heart wasn't in it, it was on a small planet somewhere in the vicinity of Beatlegeuse.";
|
||||
|
||||
}
|
||||
|
||||
type "hit_talking"
|
||||
{
|
||||
"Look jerkwad I was trying to hold a conversation!";
|
||||
"Do that again and ~I'll sell your genitals on EBay.";
|
||||
"Jerk.";
|
||||
"The chatbox makes a great target, doesn't it?";
|
||||
}
|
||||
|
||||
type "hit_nodeath"
|
||||
{
|
||||
"Son of a...";
|
||||
"Time to go back to the firing range.";
|
||||
"I ~can't believe you survived that.";
|
||||
"I need a bigger gun.";
|
||||
|
||||
}
|
||||
|
||||
type "hit_nokill"
|
||||
{
|
||||
"Try harder.";
|
||||
"Was the safety off?";
|
||||
"HA!";
|
||||
"Try aiming.";
|
||||
}
|
||||
|
||||
type "death_telefrag"
|
||||
{
|
||||
"Stupid praetorians!";
|
||||
"I thought all of the praetorians were killed in the last invasion of their home world?";
|
||||
"That was a terrible praetorian impersonation.";
|
||||
"I'm telling your ", family_member, ".";
|
||||
"Didn't your ", counselor, " tell you not to do that anymore?";
|
||||
}
|
||||
|
||||
type "death_cratered"
|
||||
{
|
||||
"Aww crap!";
|
||||
"I had to give ", 0, " a chance.";
|
||||
"It didn't look that high from up there.";
|
||||
"I should learn to use these wings.";
|
||||
"Hehe... oops.";
|
||||
}
|
||||
|
||||
type "death_lava"
|
||||
{
|
||||
"Anyone got any marshmallows?";
|
||||
"Ahh... warmth at last... ooh hot! hot! hot!";
|
||||
"Well... ", 0, " needed the help.";
|
||||
"So much for swimming in lava.";
|
||||
}
|
||||
|
||||
type "death_slime"
|
||||
{
|
||||
"Well it looked safer than that...";
|
||||
"Who put this toxic waste here?";
|
||||
"That should be labeled toxic";
|
||||
"Where is Rob Reiner when you need him?";
|
||||
}
|
||||
|
||||
type "death_drown"
|
||||
{
|
||||
"Ahh... sweet oblivion.";
|
||||
"I thought Leileilol gave me gills!";
|
||||
"I guess I can't breathe water";
|
||||
"So much for that indestructibility complex.";
|
||||
}
|
||||
|
||||
type "death_suicide"
|
||||
{
|
||||
"Just seeing what it was like.";
|
||||
"Karma.";
|
||||
"Oops...";
|
||||
"I give up.";
|
||||
}
|
||||
|
||||
type "death_gauntlet"
|
||||
{
|
||||
"Zagged when I should have zigged.";
|
||||
"That is humiliating.";
|
||||
"*sigh*";
|
||||
"Don't touch me there!";
|
||||
}
|
||||
|
||||
type "death_rail"
|
||||
{
|
||||
"I never heard it.";
|
||||
"I thought I would hear it.";
|
||||
"Who'd a thunk it?";
|
||||
"Punk!";
|
||||
}
|
||||
|
||||
type "death_bfg"
|
||||
{
|
||||
"*sigh* try a real weapon next time.";
|
||||
"Awful big gun for such a puny wimp...";
|
||||
"Can't hack it with a real weapon?";
|
||||
"Sissy!";
|
||||
}
|
||||
|
||||
type "death_insult"
|
||||
{
|
||||
"Oh please, my ", family_member, " could do better than that.";
|
||||
"took you long enough...";
|
||||
"Is that all you've got?";
|
||||
curse;
|
||||
"You should practice more.";
|
||||
}
|
||||
|
||||
type "death_praise"
|
||||
{
|
||||
"You are better than I thought, ", 0, ".";
|
||||
"I let you frag me.";
|
||||
"Great shot.";
|
||||
"Nice ~one";
|
||||
"Looks like you are on your way to arena mastery.";
|
||||
}
|
||||
|
||||
type "kill_rail"
|
||||
{
|
||||
"Set 'em up and snipe them down.";
|
||||
"Like shooting fish in a barrel.";
|
||||
"Too easy.";
|
||||
"How do you like me now?";
|
||||
}
|
||||
|
||||
type "kill_gauntlet"
|
||||
{
|
||||
"HA!";
|
||||
"I told you so.";
|
||||
"Mmmm hmmm.";
|
||||
"So much for your bluster.";
|
||||
"Do I make myself clear?";
|
||||
KILL_GAUNTLET1;
|
||||
KILL_GAUNTLET0;
|
||||
}
|
||||
|
||||
type "kill_telefrag"
|
||||
{
|
||||
"Heh... praetorians rule!";
|
||||
"You are paying for the dry cleaning bill.";
|
||||
"You will be cleaning that up, right?";
|
||||
"Hehe";
|
||||
TELEFRAGGED0;
|
||||
TELEFRAGGED1;
|
||||
|
||||
}
|
||||
|
||||
type "kill_suicide"
|
||||
{
|
||||
|
||||
TAUNT1;
|
||||
TAUNT0;
|
||||
}
|
||||
|
||||
type "kill_insult"
|
||||
{
|
||||
"Pathetic";
|
||||
"looser";
|
||||
"Eesh! You need practice.";
|
||||
"Too easy.";
|
||||
KILL_EXTREME_INSULT;
|
||||
curse;
|
||||
}
|
||||
|
||||
type "kill_praise"
|
||||
{
|
||||
"I had to work for that one.";
|
||||
"You are improving.";
|
||||
"Not bad, Major will have her work cut out for her.";
|
||||
D_PRAISE1;
|
||||
}
|
||||
|
||||
type "random_insult"
|
||||
{
|
||||
"I've seen bacteria with a better chance of getting a frag than you, ", 0, ".";
|
||||
peeps, " is better.";
|
||||
number, " US dollars says you don't win.";
|
||||
peeps, " needs to stop calling my ~Mom.";
|
||||
}
|
||||
|
||||
type "random_misc"
|
||||
{
|
||||
"What ever happened to polite discourse?";
|
||||
"You know, I really do want to be anarchy... how do I go about that?";
|
||||
"Ever do any fishing?";
|
||||
"So, how about them Cubs?";
|
||||
"This is the year that the Cubs win the World Series!";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
#define GTW 100
|
||||
#define SGW 450
|
||||
#define MGW 110
|
||||
#define GLW 320
|
||||
#define RLW 450
|
||||
#define RGW 500
|
||||
#define BFW 400
|
||||
#define LGW 220
|
||||
#define PGW 200
|
||||
#define GRW 50
|
||||
#define NGW 200
|
||||
#define PXW 150
|
||||
#define CGW 365
|
||||
|
||||
//
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,203 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Grism"
|
||||
CHARACTERISTIC_GENDER "Male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.250
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/grism_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.250
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.250
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.250
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 2.00
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/grism_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "grism"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.200
|
||||
CHARACTERISTIC_JUMPER 0.900
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.800
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.500
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/grism_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.250
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.900
|
||||
CHARACTERISTIC_VENGEFULNESS 0.900
|
||||
CHARACTERISTIC_CAMPER 0.800
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 0.900
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.700
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.500
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.600
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.700
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.450
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.400
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.800
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.500
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.300
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Grism"
|
||||
CHARACTERISTIC_GENDER "Male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.000
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/grism_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.000
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.900
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.25
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/grism_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "grism"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.100
|
||||
CHARACTERISTIC_JUMPER 0.900
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.000
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.000
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/grism_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.000
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.000
|
||||
CHARACTERISTIC_VENGEFULNESS 1.000
|
||||
CHARACTERISTIC_CAMPER 0.700
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 1.000
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.900
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.200
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Grism"
|
||||
CHARACTERISTIC_GENDER "Male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.000
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/grism_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.000
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.000
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.00
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/grism_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "grism"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.000
|
||||
CHARACTERISTIC_JUMPER 1.000
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.000
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.000
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/grism_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.000
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.000
|
||||
CHARACTERISTIC_VENGEFULNESS 1.000
|
||||
CHARACTERISTIC_CAMPER 0.000
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 1.000
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.000
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.100
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
#define FPH 2
|
||||
#define FPA 1
|
||||
|
||||
#define SGW 200
|
||||
#define MGW 100
|
||||
#define GLW 150
|
||||
#define RLW 350
|
||||
#define RGW 500
|
||||
#define BFW 450
|
||||
#define LGW 200
|
||||
#define PGW 250
|
||||
#define PXW 350
|
||||
#define NGW 150
|
||||
#define CGW 200
|
||||
|
||||
#define GSGW 150
|
||||
#define GMGW 150
|
||||
#define GGLW 200
|
||||
#define GRLW 300
|
||||
#define GRGW 400
|
||||
#define GBFW 100
|
||||
#define GLGW 250
|
||||
#define GPGW 100
|
||||
#define GPXW 200
|
||||
#define GNGW 100
|
||||
#define GCGW 125
|
||||
|
||||
#define TELW 190
|
||||
#define MEDW 50
|
||||
#define QW 500
|
||||
#define ENVW 50
|
||||
#define HAW 50
|
||||
#define INW 400
|
||||
#define REGW 50
|
||||
#define FLW 0.0
|
||||
#define KAMW 200
|
||||
#define IBW 150
|
||||
#define PORW 300
|
||||
#define SCW 100
|
||||
#define GUW 200
|
||||
#define DUBW 100
|
||||
#define AMRW 400
|
||||
#define REDCW 200
|
||||
#define BLCW 200
|
||||
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "grism"
|
||||
{
|
||||
#include "teamplay.h"
|
||||
|
||||
type "game_enter"
|
||||
{
|
||||
"Here we go again.";
|
||||
"Why don't you people just lay down and die, it'll save me the trouble.";
|
||||
}
|
||||
|
||||
type "game_exit"
|
||||
{
|
||||
GOODBYE1;
|
||||
GOODBYE4;
|
||||
GOODBYE3;
|
||||
}
|
||||
|
||||
type "level_start"
|
||||
{
|
||||
"Oh man, ", 4, " again?!?";
|
||||
"Alright, ", 4, " has always been good to me.";
|
||||
}
|
||||
|
||||
type "level_end"
|
||||
{
|
||||
"nice place ", 4, ", much less dangerous than d3dm2.";
|
||||
}
|
||||
|
||||
type "level_end_victory"
|
||||
{
|
||||
"Yep.";
|
||||
}
|
||||
|
||||
type "level_end_lose"
|
||||
{
|
||||
"Aww... crap!";
|
||||
}
|
||||
|
||||
type "hit_talking"
|
||||
{
|
||||
DEATH_TALKING;
|
||||
|
||||
}
|
||||
|
||||
type "hit_nodeath"
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT1;
|
||||
TAUNT2;
|
||||
}
|
||||
|
||||
type "hit_nokill"
|
||||
{
|
||||
HIT_NOKILL0;
|
||||
HIT_NOKILL1;
|
||||
HIT_NOKILL1;
|
||||
}
|
||||
|
||||
type "death_telefrag"
|
||||
{
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED0;
|
||||
}
|
||||
|
||||
type "death_cratered"
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
DEATH_FALLING0;
|
||||
DEATH_FALLING0;
|
||||
}
|
||||
|
||||
type "death_lava"
|
||||
{
|
||||
"Well it was getting a bit nippy...";
|
||||
"mmm... toasty!";
|
||||
}
|
||||
|
||||
type "death_slime"
|
||||
{
|
||||
"D'oh!";
|
||||
}
|
||||
|
||||
type "death_drown"
|
||||
{
|
||||
"Who needs air?";
|
||||
}
|
||||
|
||||
type "death_suicide"
|
||||
{
|
||||
DEATH_SUICIDE0;
|
||||
DEATH_SUICIDE1;
|
||||
DEATH_SUICIDE1;
|
||||
}
|
||||
|
||||
type "death_gauntlet"
|
||||
{
|
||||
DEATH_GAUNTLET0;
|
||||
DEATH_GAUNTLET1;
|
||||
DEATH_GAUNTLET1;
|
||||
}
|
||||
|
||||
type "death_rail"
|
||||
{
|
||||
DEATH_RAIL1;
|
||||
DEATH_RAIL1;
|
||||
DEATH_RAIL0;
|
||||
|
||||
}
|
||||
|
||||
type "death_bfg"
|
||||
{
|
||||
DEATH_BFG1;
|
||||
DEATH_BFG0;
|
||||
|
||||
}
|
||||
|
||||
type "death_insult"
|
||||
{
|
||||
"What the... how cheap!";
|
||||
"Back in my day, frags weren't so cheap.";
|
||||
}
|
||||
|
||||
type "death_praise"
|
||||
{
|
||||
0, " is death incarnate.";
|
||||
}
|
||||
|
||||
type "kill_rail"
|
||||
{
|
||||
KILL_RAIL0;
|
||||
KILL_RAIL1;
|
||||
}
|
||||
|
||||
type "kill_gauntlet"
|
||||
{
|
||||
KILL_GAUNTLET0;
|
||||
KILL_GAUNTLET1;
|
||||
|
||||
}
|
||||
|
||||
type "kill_telefrag"
|
||||
{
|
||||
TELEFRAGGED0;
|
||||
TELEFRAGGED1;
|
||||
}
|
||||
|
||||
type "kill_suicide"
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT1;
|
||||
}
|
||||
|
||||
type "kill_insult"
|
||||
{
|
||||
"Pathetic.";
|
||||
"tsk";
|
||||
"My ", family_member, " could do better.";
|
||||
}
|
||||
|
||||
type "kill_praise"
|
||||
{
|
||||
"Nice one, ", 0, ".";
|
||||
"Wow, ~you never saw that one coming, ", 0, ".";
|
||||
}
|
||||
|
||||
type "random_insult"
|
||||
{
|
||||
0, ", ~you suck!";
|
||||
0, " needs to stop calling my mom.";
|
||||
}
|
||||
|
||||
type "random_misc"
|
||||
{
|
||||
0, " gave my ~mom ", disease, ".";
|
||||
"Is it true that ", peeps, " is a bot?";
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
#define GTW 100
|
||||
#define SGW 500
|
||||
#define MGW 110
|
||||
#define GLW 320
|
||||
#define RLW 450
|
||||
#define RGW 100
|
||||
#define BFW 400
|
||||
#define LGW 220
|
||||
#define PGW 200
|
||||
#define GRW 50
|
||||
#define NGW 200
|
||||
#define PXW 150
|
||||
#define CGW 365
|
||||
|
||||
//
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,203 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "grunt"
|
||||
CHARACTERISTIC_GENDER "Male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.250
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/grunt_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.250
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.250
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.250
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 2.00
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/grunt_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "grunt"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.200
|
||||
CHARACTERISTIC_JUMPER 0.900
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.800
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.500
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/grunt_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.250
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.900
|
||||
CHARACTERISTIC_VENGEFULNESS 0.900
|
||||
CHARACTERISTIC_CAMPER 0.000
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 0.900
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.500
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.400
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.300
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.700
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.450
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.400
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.800
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.500
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.800
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "grunt"
|
||||
CHARACTERISTIC_GENDER "Male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.000
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/grunt_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.000
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.900
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.25
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/grunt_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "grunt"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.100
|
||||
CHARACTERISTIC_JUMPER 1.000
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.000
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.000
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/grunt_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.000
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.000
|
||||
CHARACTERISTIC_VENGEFULNESS 1.000
|
||||
CHARACTERISTIC_CAMPER 0.500
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 1.000
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.900
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.900
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "grunt"
|
||||
CHARACTERISTIC_GENDER "Male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.000
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/grunt_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.000
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.000
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.00
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/grunt_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "grunt"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.000
|
||||
CHARACTERISTIC_JUMPER 1.000
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.000
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.000
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/grunt_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.000
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.000
|
||||
CHARACTERISTIC_VENGEFULNESS 1.000
|
||||
CHARACTERISTIC_CAMPER 0.000
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 1.000
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.700
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.000
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.000
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
#define FPH 2
|
||||
#define FPA 2
|
||||
|
||||
#define SGW 200
|
||||
#define MGW 100
|
||||
#define GLW 150
|
||||
#define RLW 350
|
||||
#define RGW 200
|
||||
#define BFW 450
|
||||
#define LGW 200
|
||||
#define PGW 250
|
||||
#define PXW 350
|
||||
#define NGW 150
|
||||
#define CGW 200
|
||||
|
||||
#define GSGW 150
|
||||
#define GMGW 150
|
||||
#define GGLW 200
|
||||
#define GRLW 300
|
||||
#define GRGW 200
|
||||
#define GBFW 100
|
||||
#define GLGW 250
|
||||
#define GPGW 100
|
||||
#define GPXW 200
|
||||
#define GNGW 100
|
||||
#define GCGW 125
|
||||
|
||||
#define TELW 190
|
||||
#define MEDW 50
|
||||
#define QW 500
|
||||
#define ENVW 50
|
||||
#define HAW 50
|
||||
#define INW 400
|
||||
#define REGW 50
|
||||
#define FLW 260
|
||||
#define KAMW 200
|
||||
#define IBW 150
|
||||
#define PORW 300
|
||||
#define SCW 100
|
||||
#define GUW 200
|
||||
#define DUBW 100
|
||||
#define AMRW 400
|
||||
#define REDCW 200
|
||||
#define BLCW 200
|
||||
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,266 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
|
||||
chat "grunt"
|
||||
{
|
||||
#include "teamplay.h"
|
||||
|
||||
type "game_enter"
|
||||
{
|
||||
"I hope that you are all ready to die, because you will.";
|
||||
"Ladies and Gentlemen, the word is pain. Time to spread the word.";
|
||||
"...clowns to the left of me, jokers to the right, here I am stuck in the middle with you...";
|
||||
|
||||
}
|
||||
|
||||
type "game_exit"
|
||||
{
|
||||
"~It's been real and ~it's been fun...";
|
||||
"Sorry ~that's your ~Mom on the phone, I have to take this.";
|
||||
"Look at the time... later peeps.";
|
||||
|
||||
}
|
||||
|
||||
type "level_start"
|
||||
{
|
||||
4, "was a great place before they screwed it up.";
|
||||
4, "... again?!?";
|
||||
"I can remember ", 4, " when it didn't suck.";
|
||||
"Dibs on the railgun!";
|
||||
}
|
||||
|
||||
type "level_end"
|
||||
{
|
||||
"*Yawn*... thought it would never end.";
|
||||
"Well that was almost interesting.";
|
||||
"What? No dancing girls? Where's my agent?!?";
|
||||
|
||||
}
|
||||
|
||||
type "level_end_victory"
|
||||
{
|
||||
"As usual... You still suck.";
|
||||
"Things are as they should be.";
|
||||
"Why do you even try?";
|
||||
"Did you really think that you could beat me?";
|
||||
}
|
||||
|
||||
type "level_end_lose"
|
||||
{
|
||||
"Ya Basta!";
|
||||
"Two out of three?";
|
||||
"I was robbed!";
|
||||
"My heart wasn't in it, it was on a small planet somewhere in the vicinity of Beatlegeuse.";
|
||||
|
||||
}
|
||||
|
||||
type "hit_talking"
|
||||
{
|
||||
"Look jerkwad I was trying to hold a conversation!";
|
||||
"Do that again and ~I'll sell your genitals on EBay.";
|
||||
"Jerk.";
|
||||
"The chatbox makes a great target, doesn't it?";
|
||||
}
|
||||
|
||||
type "hit_nodeath"
|
||||
{
|
||||
"Son of a...";
|
||||
"Time to go back to the firing range.";
|
||||
"I ~can't believe you survived that.";
|
||||
"I need a bigger gun.";
|
||||
|
||||
}
|
||||
|
||||
type "hit_nokill"
|
||||
{
|
||||
"Try harder.";
|
||||
"Was the safety off?";
|
||||
"HA!";
|
||||
"Try aiming.";
|
||||
}
|
||||
|
||||
type "death_telefrag"
|
||||
{
|
||||
"Stupid praetorians!";
|
||||
"I thought all of the praetorians were killed in the last invasion of their home world?";
|
||||
"That was a terrible praetorian impersonation.";
|
||||
"I'm telling your ", family_member, ".";
|
||||
"Didn't your ", counselor, " tell you not to do that anymore?";
|
||||
}
|
||||
|
||||
type "death_cratered"
|
||||
{
|
||||
"Aww crap!";
|
||||
"I had to give ", 0, " a chance.";
|
||||
"It didn't look that high from up there.";
|
||||
"I should learn to use these wings.";
|
||||
"Hehe... oops.";
|
||||
}
|
||||
|
||||
type "death_lava"
|
||||
{
|
||||
"Anyone got any marshmallows?";
|
||||
"Ahh... warmth at last... ooh hot! hot! hot!";
|
||||
"Well... ", 0, " needed the help.";
|
||||
"So much for swimming in lava.";
|
||||
}
|
||||
|
||||
type "death_slime"
|
||||
{
|
||||
"Well it looked safer than that...";
|
||||
"Who put this toxic waste here?";
|
||||
"That should be labeled toxic";
|
||||
"Where is Rob Reiner when you need him?";
|
||||
}
|
||||
|
||||
type "death_drown"
|
||||
{
|
||||
"Ahh... sweet oblivion.";
|
||||
"I thought Leileilol gave me gills!";
|
||||
"I guess I can't breathe water";
|
||||
"So much for that indestructibility complex.";
|
||||
}
|
||||
|
||||
type "death_suicide"
|
||||
{
|
||||
"Just seeing what it was like.";
|
||||
"Karma.";
|
||||
"Oops...";
|
||||
"I give up.";
|
||||
}
|
||||
|
||||
type "death_gauntlet"
|
||||
{
|
||||
"Zagged when I should have zigged.";
|
||||
"That is humiliating.";
|
||||
"*sigh*";
|
||||
"Don't touch me there!";
|
||||
}
|
||||
|
||||
type "death_rail"
|
||||
{
|
||||
"I never heard it.";
|
||||
"I thought I would hear it.";
|
||||
"Who'd a thunk it?";
|
||||
"Punk!";
|
||||
}
|
||||
|
||||
type "death_bfg"
|
||||
{
|
||||
"*sigh* try a real weapon next time.";
|
||||
"Awful big gun for such a puny wimp...";
|
||||
"Can't hack it with a real weapon?";
|
||||
"Sissy!";
|
||||
}
|
||||
|
||||
type "death_insult"
|
||||
{
|
||||
"Oh please, my ", family_member, " could do better than that.";
|
||||
"took you long enough...";
|
||||
"Is that all you've got?";
|
||||
curse;
|
||||
"You should practice more.";
|
||||
}
|
||||
|
||||
type "death_praise"
|
||||
{
|
||||
"You are better than I thought, ", 0, ".";
|
||||
"I let you frag me.";
|
||||
"Great shot.";
|
||||
"Nice ~one";
|
||||
"Looks like you are on your way to arena mastery.";
|
||||
}
|
||||
|
||||
type "kill_rail"
|
||||
{
|
||||
"Set 'em up and snipe them down.";
|
||||
"Like shooting fish in a barrel.";
|
||||
"Too easy.";
|
||||
"How do you like me now?";
|
||||
}
|
||||
|
||||
type "kill_gauntlet"
|
||||
{
|
||||
"HA!";
|
||||
"I told you so.";
|
||||
"Mmmm hmmm.";
|
||||
"So much for your bluster.";
|
||||
"Do I make myself clear?";
|
||||
KILL_GAUNTLET1;
|
||||
KILL_GAUNTLET0;
|
||||
}
|
||||
|
||||
type "kill_telefrag"
|
||||
{
|
||||
"Heh... praetorians rule!";
|
||||
"You are paying for the dry cleaning bill.";
|
||||
"You will be cleaning that up, right?";
|
||||
"Hehe";
|
||||
TELEFRAGGED0;
|
||||
TELEFRAGGED1;
|
||||
|
||||
}
|
||||
|
||||
type "kill_suicide"
|
||||
{
|
||||
|
||||
TAUNT1;
|
||||
TAUNT0;
|
||||
}
|
||||
|
||||
type "kill_insult"
|
||||
{
|
||||
"Pathetic";
|
||||
"looser";
|
||||
"Eesh! You need practice.";
|
||||
"Too easy.";
|
||||
KILL_EXTREME_INSULT;
|
||||
curse;
|
||||
}
|
||||
|
||||
type "kill_praise"
|
||||
{
|
||||
"I had to work for that one.";
|
||||
"You are improving.";
|
||||
"Not bad, Major will have her work cut out for her.";
|
||||
D_PRAISE1;
|
||||
}
|
||||
|
||||
type "random_insult"
|
||||
{
|
||||
"I've seen bacteria with a better chance of getting a frag than you, ", 0, ".";
|
||||
peeps, " is better.";
|
||||
number, " US dollars says you don't win.";
|
||||
peeps, " needs to stop calling my ~Mom.";
|
||||
}
|
||||
|
||||
type "random_misc"
|
||||
{
|
||||
"What ever happened to polite discourse?";
|
||||
"You know, I really do want to be anarchy... how do I go about that?";
|
||||
"Ever do any fishing?";
|
||||
"So, how about them Cubs?";
|
||||
"This is the year that the Cubs win the World Series!";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
#define GTW 100
|
||||
#define SGW 250
|
||||
#define MGW 130
|
||||
#define GLW 320
|
||||
#define RLW 250
|
||||
#define RGW 300
|
||||
#define BFW 80
|
||||
#define LGW 220
|
||||
#define PGW 200
|
||||
#define GRW 50
|
||||
#define NGW 230
|
||||
#define PXW 150
|
||||
#define CGW 365
|
||||
|
||||
//
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Jenna"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.25
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/jenna_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.25
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.25
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.25
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 3.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/jenna_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "jenna"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.5
|
||||
CHARACTERISTIC_CHAT_MISC 0.5
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.5
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.5
|
||||
CHARACTERISTIC_CHAT_KILL 0.5
|
||||
CHARACTERISTIC_CHAT_DEATH 0.5
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.5
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.5
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.5
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.5
|
||||
CHARACTERISTIC_CHAT_REPLY 0.5
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/jenna_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.3
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.3
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Jenna"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/jenna_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/jenna_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "jenna"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/jenna_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.75
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Jenna"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/jenna_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/jenna_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "jenna"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/jenna_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 400
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 400
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 200
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 250
|
||||
//regeneration
|
||||
#define REGW 75
|
||||
//flight
|
||||
#define FLW 10
|
||||
//kamikaze
|
||||
#define KAMW 100
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 100
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,275 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Jenna"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Hello.";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Look at the ~time";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
0, " it is time for some payback!";
|
||||
1, " you are going to have some pain in ", 4, ".";
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
2, ", I let you win.";
|
||||
4, " has changed a lot, it is much faster now.";
|
||||
"Is it over yet?";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
3, " you need to practice more... and forget about winning against me.";
|
||||
LEVEL_END_VICTORY1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " cheated.";
|
||||
"I had a hang nail, so of course I lost.";
|
||||
"So much for my bluster...";
|
||||
"I felt bad for you so I let you win.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
0, ", didn't your mother ever tell you it was rude to interrupt a conversation?";
|
||||
"I am going to shove that ", 1, " down your throat if you do that again!";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
1, " is not a good weapon, a ", weapon, " should be more your speed.";
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
0, " must be cheating.";
|
||||
"Well that sucked...";
|
||||
"Note to self... turn off safety next ~time";
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"Stop smoking ", substance, " and maybe you won't kill yourself so often.";
|
||||
"Tired of life, ", 0, "? Give it up.";
|
||||
"I guess that beats dying of ", disease, "...";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
"I hate praetorian impressions.";
|
||||
"My ", counselor, " warned about days like this.";
|
||||
"D'oh!";
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
"It didn't look that high from up there...";
|
||||
"*sigh*";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"Well... it beats a case of hypothermia.";
|
||||
"At least it is warm here";
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
"Green has never been my color...";
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
DEATH_DROWN0;
|
||||
"It isn't that difficult to just breath water...";
|
||||
"So why can't I breath water?";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
DEATH_SUICIDE2;
|
||||
"So much for life and all of its cruel irony.";
|
||||
"It is just easier for ", 0, " this way.";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"Unsanitary.";
|
||||
"What part of '~Don't touch me there' do you not understand?";
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_FEM_INSULT1;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
"Can't find a skill weapon? Or is it just that you suck?";
|
||||
"Over-compensating for something?";
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
curse;
|
||||
"This is far more painful than it looks.";
|
||||
"One day, ", 0, " you me and a ", weapon, " are going to have a discussion.";
|
||||
"Is that the best you can do?";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
"Not bad, ", 0, ", have you been practicing?";
|
||||
"I never saw it coming.";
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
0, ", you should stay down...";
|
||||
"*sigh* if only this was challenging.";
|
||||
"I love this gun!";
|
||||
"Way too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
"Aww man... now I have to take a bath to get the brains out.";
|
||||
"Does anyone have a quick way of getting brains out of your hair?";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
"Why do you even bother?";
|
||||
"This is why the upper classes are called the 'ruling elite.'";
|
||||
"Why do the lower classes think they can match someone of my caliber?";
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
"You are getting better, ", 0, ", keep it up and you might actually win something.";
|
||||
"That was a challenge.";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT_FEM0;
|
||||
TAUNT1;
|
||||
curse;
|
||||
"You should give up your ", substance, " addiction by next ", month, ".";
|
||||
"I saw those pictures of ", 0, " and a ", animal, " posted on the web last night... Like, ewww!";
|
||||
immaturity01;
|
||||
"Your ", family_member, " needs to stop calling me.";
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
GRRLTALK0;
|
||||
MISC4;
|
||||
"Has anyone tried out the new ", 5, "? Is it worth the upgrade?";
|
||||
MISC1;
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 25
|
||||
//shotgun
|
||||
#define SGW 150
|
||||
//machinegun
|
||||
#define MGW 90
|
||||
//grenade launcher
|
||||
#define GLW 110
|
||||
//rocket launcher
|
||||
#define RLW 175
|
||||
//railgun
|
||||
#define RGW 200
|
||||
//bfg10k
|
||||
#define BFW 180
|
||||
//lightninggun
|
||||
#define LGW 140
|
||||
//plasmagun
|
||||
#define PGW 180
|
||||
//grapplinghook
|
||||
#define GRW 10
|
||||
//prox-launcher
|
||||
#define PXW 160
|
||||
//nailgun
|
||||
#define NGW 210
|
||||
//chaingun
|
||||
#define CGW 220
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,203 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Kyonshi"
|
||||
CHARACTERISTIC_GENDER "Female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.250
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/kyonshi_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.250
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.250
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.250
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 2.00
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/kyonshi_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "kyonshi"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.200
|
||||
CHARACTERISTIC_JUMPER 0.900
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.800
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.500
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/kyonshi_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.250
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.900
|
||||
CHARACTERISTIC_VENGEFULNESS 0.900
|
||||
CHARACTERISTIC_CAMPER 0.800
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 0.900
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.700
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.500
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.600
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.700
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.450
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.400
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.800
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.500
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.300
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Kyonshi"
|
||||
CHARACTERISTIC_GENDER "Female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.000
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/kyonshi_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.000
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.900
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.25
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/kyonshi_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "kyonshi"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.100
|
||||
CHARACTERISTIC_JUMPER 1.000
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.000
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.000
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/kyonshi_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.000
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.000
|
||||
CHARACTERISTIC_VENGEFULNESS 1.000
|
||||
CHARACTERISTIC_CAMPER 0.700
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 0.900
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.900
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.300
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Kyonshi"
|
||||
CHARACTERISTIC_GENDER "Female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.000
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/kyonshi_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.000
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.000
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.00
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/kyonshi_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "kyonshi"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.000
|
||||
CHARACTERISTIC_JUMPER 1.000
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.000
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.000
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/kyonshi_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.000
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.000
|
||||
CHARACTERISTIC_VENGEFULNESS 1.000
|
||||
CHARACTERISTIC_CAMPER 0.000
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 1.000
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.000
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.300
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
#define FPH 5
|
||||
#define FPA 3
|
||||
|
||||
#define SGW 200
|
||||
#define MGW 100
|
||||
#define GLW 150
|
||||
#define RLW 350
|
||||
#define RGW 500
|
||||
#define BFW 450
|
||||
#define LGW 200
|
||||
#define PGW 250
|
||||
#define PXW 350
|
||||
#define NGW 150
|
||||
#define CGW 200
|
||||
|
||||
#define GSGW 150
|
||||
#define GMGW 150
|
||||
#define GGLW 200
|
||||
#define GRLW 300
|
||||
#define GRGW 400
|
||||
#define GBFW 100
|
||||
#define GLGW 250
|
||||
#define GPGW 100
|
||||
#define GPXW 200
|
||||
#define GNGW 100
|
||||
#define GCGW 125
|
||||
|
||||
#define TELW 190
|
||||
#define MEDW 50
|
||||
#define QW 500
|
||||
#define ENVW 50
|
||||
#define HAW 50
|
||||
#define INW 400
|
||||
#define REGW 50
|
||||
#define FLW 160
|
||||
#define KAMW 200
|
||||
#define IBW 150
|
||||
#define PORW 300
|
||||
#define SCW 100
|
||||
#define GUW 200
|
||||
#define DUBW 100
|
||||
#define AMRW 400
|
||||
#define REDCW 200
|
||||
#define BLCW 200
|
||||
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,212 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "kyonshi"
|
||||
{
|
||||
#include "teamplay.h"
|
||||
|
||||
type "game_enter"
|
||||
{
|
||||
"Ahh, there is so much chi here... I will feed well!";
|
||||
}
|
||||
|
||||
type "game_exit"
|
||||
{
|
||||
"It's not easy being dead... so much to do so little time";
|
||||
"Toodles";
|
||||
"My hunger grows, I am off to find better chi.";
|
||||
GOODBYE4;
|
||||
GOODBYE2;
|
||||
}
|
||||
|
||||
type "level_start"
|
||||
{
|
||||
"Ooh ", 4, "! I like this place!";
|
||||
}
|
||||
|
||||
type "level_end"
|
||||
{
|
||||
"Not bad... I like ", 4, " fast, clean, deadly, and filled with chi.";
|
||||
}
|
||||
|
||||
type "level_end_victory"
|
||||
{
|
||||
"You cannot kill what is already dead.";
|
||||
"Thank you for your chi.";
|
||||
}
|
||||
|
||||
type "level_end_lose"
|
||||
{
|
||||
"Aww... crap!";
|
||||
}
|
||||
|
||||
type "hit_talking"
|
||||
{
|
||||
"Do you MIND!";
|
||||
DEATH_TALKING;
|
||||
DEATH_TALKING;
|
||||
}
|
||||
|
||||
type "hit_nodeath"
|
||||
{
|
||||
TAUNT_FEM0;
|
||||
}
|
||||
|
||||
type "hit_nokill"
|
||||
{
|
||||
HIT_NOKILL0;
|
||||
HIT_NOKILL1;
|
||||
HIT_NOKILL1;
|
||||
}
|
||||
|
||||
type "death_telefrag"
|
||||
{
|
||||
DEATH_TELEFRAGGED0;
|
||||
|
||||
}
|
||||
|
||||
type "death_cratered"
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
|
||||
}
|
||||
|
||||
type "death_lava"
|
||||
{
|
||||
"So the dead can die...";
|
||||
}
|
||||
|
||||
type "death_slime"
|
||||
{
|
||||
"I need a bath now.";
|
||||
}
|
||||
|
||||
type "death_drown"
|
||||
{
|
||||
"Much easier than my last death.";
|
||||
}
|
||||
|
||||
type "death_suicide"
|
||||
{
|
||||
DEATH_SUICIDE0;
|
||||
}
|
||||
|
||||
type "death_gauntlet"
|
||||
{
|
||||
"I did not see that coming.";
|
||||
"The shame...";
|
||||
DEATH_FEM_INSULT0;
|
||||
DEATH_GAUNTLET0;
|
||||
DEATH_GAUNTLET1;
|
||||
|
||||
}
|
||||
|
||||
type "death_rail"
|
||||
{
|
||||
DEATH_RAIL1;
|
||||
DEATH_RAIL0;
|
||||
DEATH_FEM_INSULT1;
|
||||
"Your death will not be quick.";
|
||||
}
|
||||
|
||||
type "death_bfg"
|
||||
{
|
||||
DEATH_BFG1;
|
||||
DEATH_FEM_INSULT2;
|
||||
"I feel you lack the skill to truly face me.";
|
||||
}
|
||||
|
||||
type "death_insult"
|
||||
{
|
||||
DEATH_FEM_INSULT0;
|
||||
DEATH_FEM_INSULT2;
|
||||
DEATH_FEM_INSULT1;
|
||||
DEATH_FEM_INSULT3;
|
||||
}
|
||||
|
||||
type "death_praise"
|
||||
{
|
||||
"The NSA just told me to tell you, ", 0, ", that they liked that last move.";
|
||||
0, ", ~you suck!";
|
||||
"I almost didn't see it coming.";
|
||||
}
|
||||
|
||||
type "kill_rail"
|
||||
{
|
||||
DEATH_RAIL1;
|
||||
DEATH_RAIL1;
|
||||
DEATH_RAIL1;
|
||||
}
|
||||
|
||||
type "kill_gauntlet"
|
||||
{
|
||||
KILL_GAUNTLET0;
|
||||
KILL_GAUNTLET1;
|
||||
KILL_GAUNTLET2;
|
||||
}
|
||||
|
||||
type "kill_telefrag"
|
||||
{
|
||||
TELEFRAGGED0;
|
||||
|
||||
}
|
||||
|
||||
type "kill_suicide"
|
||||
{
|
||||
TAUNT_FEM0;
|
||||
TAUNT0;
|
||||
}
|
||||
|
||||
type "kill_insult"
|
||||
{
|
||||
"*sigh*";
|
||||
"Oh puh-lease!";
|
||||
"You might want to put that gun down before you hurt yourself.";
|
||||
"Pure luck.";
|
||||
}
|
||||
|
||||
type "kill_praise"
|
||||
{
|
||||
"~I'm impressed.";
|
||||
}
|
||||
|
||||
type "random_insult"
|
||||
{
|
||||
"An insignificant gnat will fall by the wayside.";
|
||||
"Your ~mother needs to stop calling me.";
|
||||
"Your ~mama is a necrophiliac.";
|
||||
"douchebag";
|
||||
}
|
||||
|
||||
type "random_misc"
|
||||
{
|
||||
GRRLTALK0;
|
||||
GRRLTALK1;
|
||||
"Do you ever get that not so fresh feeling? I do, but I am a corpse.";
|
||||
0, " die already so I can feast on your chi!";
|
||||
"~They're out there watching you as we speak.";
|
||||
"Shh... ~they're listening.";
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
#define GTW 90
|
||||
#define SGW 400
|
||||
#define MGW 110
|
||||
#define GLW 220
|
||||
#define RLW 450
|
||||
#define RGW 300
|
||||
#define BFW 100
|
||||
#define LGW 220
|
||||
#define PGW 300
|
||||
#define GRW 50
|
||||
#define NGW 200
|
||||
#define PXW 150
|
||||
#define CGW 365
|
||||
|
||||
//
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "liz"
|
||||
CHARACTERISTIC_GENDER "it"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.3
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/liz_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.3
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.3
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 2.5
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/liz_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "liz"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.9
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.5
|
||||
CHARACTERISTIC_JUMPER 0.5
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.1
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/liz_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.3
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.6
|
||||
CHARACTERISTIC_VENGEFULNESS 0.4
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.4
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.4
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.4
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.4
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.4
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.4
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Liz"
|
||||
CHARACTERISTIC_GENDER "it"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/liz_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/liz_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "liz"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.5
|
||||
CHARACTERISTIC_JUMPER 0.5
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/liz_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 1.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.9
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.9
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.9
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.9
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.9
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Liz"
|
||||
CHARACTERISTIC_GENDER "it"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/liz_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/liz_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "liz"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.5
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/liz_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 290
|
||||
//machinegun
|
||||
#define MGW 20
|
||||
//grenadelauncher
|
||||
#define GLW 300
|
||||
//rocket launcher
|
||||
#define RLW 350
|
||||
//rail gun
|
||||
#define RGW 280
|
||||
//bfg10k
|
||||
#define BFW 100
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 125
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,251 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Liz"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
3, " sucks!";
|
||||
2, ", I let you win.";
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
LEVEL_END_VICTORY0;
|
||||
LEVEL_END_VICTORY1;
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " must be an Arena Lord.";
|
||||
1, " kept getting in my way.";
|
||||
4, " has never been good to me.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
"Try harder next time.";
|
||||
"Wuss";
|
||||
"Heh, you suck.";
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
HIT_NOKILL0;
|
||||
HIT_NOKILL1;
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"LOL!";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"It burns!";
|
||||
"land conservation";
|
||||
DEATH_SUICIDE0;
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
DEATH_SLIME0;
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
"I can't swim!";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
"Aww crap!";
|
||||
"Shutup!";
|
||||
"I meant to do that.";
|
||||
DEATH_SUICIDE2;
|
||||
DEATH_SUICIDE1;
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"D'oh!";
|
||||
DEATH_GAUNTLET0;
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
KILL_RAIL1;
|
||||
KILL_RAIL0;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
|
||||
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
TELEFRAGGED2;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
KILL_INSULT2;
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
PRAISE0;
|
||||
PRAISE1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
"Your breath stinks";
|
||||
"Get off your dead butt and something for a change.";
|
||||
"Life got you down? Give it up.";
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
|
||||
GUYTALK1;
|
||||
GRRLTALK0;
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 50
|
||||
//shotgun
|
||||
#define SGW 145
|
||||
//machinegun
|
||||
#define MGW 75
|
||||
//grenade launcher
|
||||
#define GLW 160
|
||||
//rocket launcher
|
||||
#define RLW 200
|
||||
//railgun
|
||||
#define RGW 190
|
||||
//bfg10k
|
||||
#define BFW 110
|
||||
//lightninggun
|
||||
#define LGW 100
|
||||
//plasmagun
|
||||
#define PGW 175
|
||||
//grapplinghook
|
||||
#define GRW 50
|
||||
//prox-launcher
|
||||
#define PXW 180
|
||||
//nailgun
|
||||
#define NGW 210
|
||||
//chaingun
|
||||
#define CGW 165
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Major"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.25
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/major_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.25
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.25
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.25
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 2.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/major_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Major"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.4
|
||||
CHARACTERISTIC_JUMPER 0.5
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.9
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/major_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.8
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.9
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 0.95
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.5
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.5
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.5
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.5
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.5
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.5
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Major"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/major_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/major_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Major"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.3
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/major_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.3
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 0.98
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.9
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.9
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.8
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.8
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.5
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Major"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/major_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/major_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Major"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.2
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/major_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.5
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 5
|
||||
//armor
|
||||
#define FPA 3
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 350
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 300
|
||||
//rocket launcher
|
||||
#define RLW 350
|
||||
//rail gun
|
||||
#define RGW 500
|
||||
//bfg10k
|
||||
#define BFW 200
|
||||
//lightninggun
|
||||
#define LGW 150
|
||||
//plasmagun
|
||||
#define PGW 375
|
||||
//prox-launcher
|
||||
#define PXW 150
|
||||
//nailgun
|
||||
#define NGW 275
|
||||
//chaingun
|
||||
#define CGW 350
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 100
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 300
|
||||
//rocketlauncher
|
||||
#define GRLW 110
|
||||
//railgun
|
||||
#define GRGW 350
|
||||
//bfg10k
|
||||
#define GBFW 100
|
||||
//lightninggun
|
||||
#define GLGW 75
|
||||
//plasmagun
|
||||
#define GPGW 250
|
||||
//prox-launcher
|
||||
#define GPXW 100
|
||||
//failgun
|
||||
#define GNGW 190
|
||||
//chaingun
|
||||
#define GCGW 300
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 150
|
||||
//quad-damage
|
||||
#define QW 400
|
||||
//envirosuit
|
||||
#define ENVW 150
|
||||
//haste
|
||||
#define HAW 350
|
||||
//invisibility
|
||||
#define INW 150
|
||||
//regeneration
|
||||
#define REGW 450
|
||||
//flight
|
||||
#define FLW 125
|
||||
//kamikaze
|
||||
#define KAMW 150
|
||||
//invulnerability
|
||||
#define IBW 190
|
||||
//portal
|
||||
#define PORW 200
|
||||
//scout
|
||||
#define SCW 250
|
||||
//guard
|
||||
#define GUW 190
|
||||
//doubler
|
||||
#define DUBW 150
|
||||
//ammo-regen
|
||||
#define AMRW 150
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 500
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,290 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Major"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Hello.";
|
||||
"Are you prepared for pain?";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Look at the ~time";
|
||||
4, " kinda wears on me, I think I'll find a different server, later ~peeps";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
0, " it is time for some payback!";
|
||||
1, " you are going to have some pain in ", 4, ".";
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
"HA! ", 3, " is at the bottom, as usual.";
|
||||
2, ", I let you win.";
|
||||
4, " has changed a lot, it is much faster now.";
|
||||
"Is it over yet?";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
3, " you need to practice more... and forget about winning against me.";
|
||||
LEVEL_END_VICTORY1;
|
||||
"I really like ", 4, " since they fixed it, it is so easy to win!";
|
||||
"Next time, don't bother.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " cheated.";
|
||||
"I had a hang nail, so of course I lost.";
|
||||
"Scheisse!";
|
||||
"So much for my bluster...";
|
||||
"I felt bad for you so I let you win.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
0, ", didn't your mother ever tell you it was rude to interrupt a conversation?";
|
||||
"I am going to shove that ", 1, " down your throat if you do that again!";
|
||||
"Hey asshole! I was trying to hold a conversation here... do you mind?";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
1, " is not a good weapon, a ", weapon, " should be more your speed.";
|
||||
"You need to aim better.";
|
||||
"Try harder next time.";
|
||||
curse;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
0, " must be cheating.";
|
||||
"Dammit! Why won't you die?!?";
|
||||
"Well that sucked...";
|
||||
"Note to self... turn off safety next ~time";
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"Stop smoking ", substance, " and maybe you won't kill yourself so often.";
|
||||
"Tired of life, ", 0, "? Give it up.";
|
||||
"I guess that beats dying of ", disease, "...";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
"I hate praetorian impressions.";
|
||||
"My ", counselor, " warned about days like this.";
|
||||
"Son of a bitch...";
|
||||
"Scheisse";
|
||||
"D'oh!";
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
"It didn't look that high from up there...";
|
||||
"*sigh*";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"Well... it beats a case of hypothermia.";
|
||||
"At least it is warm here";
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
"Green has never been my color...";
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
DEATH_DROWN0;
|
||||
"It isn't that difficult to just breath water...";
|
||||
"So why can't I breath water?";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
DEATH_SUICIDE2;
|
||||
"So much for life and all of its cruel irony.";
|
||||
"It is just easier for ", 0, " this way.";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"Unsanitary.";
|
||||
"What part of '~Don't touch me there' do you not understand?";
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_FEM_INSULT1;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
"Can't find a skill weapon? Or is it just that you suck?";
|
||||
"Over-compensating for something?";
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
curse;
|
||||
"This is far more painful than it looks.";
|
||||
"One day, ", 0, " you me and a ", weapon, " are going to have a discussion.";
|
||||
"Is that the best you can do?";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
"Not bad, ", 0, ", have you been practicing?";
|
||||
"I never saw it coming.";
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
0, ", you should stay down...";
|
||||
"*sigh* if only this was challenging.";
|
||||
"I love this gun!";
|
||||
"Way too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
"Aww man... now I have to take a bath to get the brains out.";
|
||||
"Does anyone have a quick way of getting brains out of your hair?";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
"Why do you even bother?";
|
||||
"This is why the upper classes are called the 'ruling elite.'";
|
||||
"Why do the lower classes think they can match someone of my caliber?";
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
"You are getting better, ", 0, ", keep it up and you might actually win something.";
|
||||
"That was a challenge.";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT_FEM0;
|
||||
TAUNT1;
|
||||
curse;
|
||||
"You should give up your ", substance, " addiction by next ", month, ".";
|
||||
"I saw those pictures of ", 0, " and a ", animal, " posted on the web last night... Like, ewww!";
|
||||
immaturity01;
|
||||
"Your ", family_member, " needs to stop calling me.";
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
"No, really... Who let the dogs out?";
|
||||
GRRLTALK0;
|
||||
MISC4;
|
||||
"Has anyone tried out the new ", 5, "? Is it worth the upgrade?";
|
||||
MISC1;
|
||||
"You would be surprised what you can do with a ", animal, " a ", food, " and ", peeps, ".";
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 90
|
||||
//shotgun
|
||||
#define SGW 290
|
||||
//machinegun
|
||||
#define MGW 130
|
||||
//grenade launcher
|
||||
#define GLW 175
|
||||
//rocket launcher
|
||||
#define RLW 300
|
||||
//railgun
|
||||
#define RGW 500
|
||||
//bfg10k
|
||||
#define BFW 200
|
||||
//lightninggun
|
||||
#define LGW 190
|
||||
//plasmagun
|
||||
#define PGW 200
|
||||
//grapplinghook
|
||||
#define GRW 50
|
||||
//prox-launcher
|
||||
#define PXW 175
|
||||
//nailgun
|
||||
#define NGW 200
|
||||
//chaingun
|
||||
#define CGW 260
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Merman"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.25
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/merman_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.25
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.25
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.25
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 3.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/merman_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Merman"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.5
|
||||
CHARACTERISTIC_JUMPER 0.5
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/merman_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.4
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.2
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.5
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.5
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.5
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.5
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.3
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Merman"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/merman_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/merman_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Merman"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.5
|
||||
CHARACTERISTIC_JUMPER 0.5
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/merman_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.05
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.6
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.7
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.975
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.975
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.975
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.975
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.3
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Merman"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/merman_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/merman_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Merman"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.5
|
||||
CHARACTERISTIC_JUMPER 0.5
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/merman_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.001
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 4
|
||||
//armor
|
||||
#define FPA 3
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 100
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 200
|
||||
//rocket launcher
|
||||
#define RLW 320
|
||||
//rail gun
|
||||
#define RGW 170
|
||||
//bfg10k
|
||||
#define BFW 300
|
||||
//lightninggun
|
||||
#define LGW 185
|
||||
//plasmagun
|
||||
#define PGW 260
|
||||
//prox-launcher
|
||||
#define PXW 380
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 100
|
||||
//rocketlauncher
|
||||
#define GRLW 110
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 100
|
||||
//lightninggun
|
||||
#define GLGW 120
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 150
|
||||
//quad-damage
|
||||
#define QW 200
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 140
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 160
|
||||
//kamikaze
|
||||
#define KAMW 290
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 190
|
||||
//guard
|
||||
#define GUW 280
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 140
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 450
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,285 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Merman"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Shutup!";
|
||||
"Rectum? It nearly killed him!";
|
||||
0, " is a loser!";
|
||||
"Now that your mother is gone...";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Your mother is here, got to go.";
|
||||
"Aurevoir mes amis.";
|
||||
4, " is too slow for me, audios.";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
"Worst level ever!";
|
||||
0, " is gonna pay.";
|
||||
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
3, " sucks!";
|
||||
2, ", I let you win.";
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
LEVEL_END_VICTORY0;
|
||||
LEVEL_END_VICTORY1;
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " must be an Arena Lord.";
|
||||
1, " kept getting in my way.";
|
||||
4, " has never been good to me.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
"Son of a... you shall pay for that!";
|
||||
"Infidel!!!";
|
||||
"Jerkwad";
|
||||
"Schmuck";
|
||||
"Tosser";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
"Try harder next time.";
|
||||
"Wuss";
|
||||
"Heh, you suck.";
|
||||
"Nice shooting Tex, you need to take lessons from Dick.";
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
HIT_NOKILL0;
|
||||
HIT_NOKILL1;
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"LOL!";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"It burns!";
|
||||
"land conservation";
|
||||
DEATH_SUICIDE0;
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
DEATH_SLIME0;
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
"The gills are vestigial...";
|
||||
"Someone needs to explain this...";
|
||||
"I should learn to use my gills...";
|
||||
"I can't swim!";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
"Aww crap!";
|
||||
"Shutup!";
|
||||
DEATH_SUICIDE2;
|
||||
DEATH_SUICIDE1;
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"Humiliating.";
|
||||
"D'oh!";
|
||||
DEATH_GAUNTLET0;
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
"Always look on the bright side of death.";
|
||||
"pfff";
|
||||
"Wuss";
|
||||
"Sissy";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
KILL_RAIL1;
|
||||
KILL_RAIL0;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
"Get whacked!";
|
||||
"It's whack time!";
|
||||
"I'm saving my best whack for ", 0, ".";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
TELEFRAGGED2;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
"I just made my perfect world, oops you're gone.";
|
||||
KILL_INSULT4;
|
||||
KILL_INSULT2;
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
PRAISE0;
|
||||
PRAISE1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
"Your breath stinks";
|
||||
"Get a hair cut";
|
||||
"Get a real job";
|
||||
"Get a life";
|
||||
TAUNT0;
|
||||
TAUNT1;
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
"Has anyone found the chocolate bar yet?";
|
||||
"Let's go to Denny's and watch the floor show, you're buying.";
|
||||
"Love is the devil's toy.";
|
||||
"Did you hear about ", 0, " in ", 4, "? I'd be ashamed of myself if I did that.";
|
||||
"Never trust a hippy.";
|
||||
4, " Uber Alles!";
|
||||
"I am all that is fish.";
|
||||
"Gamers are the whiniest bunch!";
|
||||
GUYTALK1;
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 50
|
||||
//shotgun
|
||||
#define SGW 375
|
||||
//machinegun
|
||||
#define MGW 115
|
||||
//grenade launcher
|
||||
#define GLW 275
|
||||
//rocket launcher
|
||||
#define RLW 190
|
||||
//railgun
|
||||
#define RGW 150
|
||||
//bfg10k
|
||||
#define BFW 210
|
||||
//lightninggun
|
||||
#define LGW 215
|
||||
//plasmagun
|
||||
#define PGW 190
|
||||
//grapplinghook
|
||||
#define GRW 50
|
||||
//prox-launcher
|
||||
#define PXW 310
|
||||
//nailgun
|
||||
#define NGW 410
|
||||
//chaingun
|
||||
#define CGW 175
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Neko"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.3
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/Neko_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.3
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.3
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 1.5
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/Neko_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Neko"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/Neko_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.43
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.43
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Neko"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/Neko_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/Neko_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Neko"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/Neko_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.95
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.1
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Neko"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/Neko_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/Neko_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Neko"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/Neko_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.01
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 300
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 350
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 175
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,285 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Neko"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"mew :3";
|
||||
"Are you prepared for pain?";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Look at the ~time";
|
||||
4, " kinda wears on me, I think I'll find a different server, later ~peeps";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
0, " it is time for some payback!";
|
||||
1, " youll death, i'm expects it in ", 4, " lol";
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
"HA! ", 3, " is at the bottom, as usual.";
|
||||
2, ", I let you win.";
|
||||
4, " is can see improved.";
|
||||
"Is it over yet?";
|
||||
"...";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
3, " nice try you roose";
|
||||
"The cat out of bag";
|
||||
"<=^_^=>";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " is real loser I not!";
|
||||
"The cat in bag";
|
||||
"...";
|
||||
"hS";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
0, " that was rude ^._.^";
|
||||
"I do not like is the interruption";
|
||||
"What if i came to you house and peek in you shower would you like that?";
|
||||
"What if i came to you dinner and at the steal of you food?";
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
"No!";
|
||||
"Yes!";
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
0, " go down";
|
||||
"*HISS*";
|
||||
"...";
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"Cat got you tongue!";
|
||||
"...";
|
||||
"...";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
"do not want";
|
||||
"...";
|
||||
"...";
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
"Aw, and I randed on my feet too!";
|
||||
">_<";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"I am too hot!!";
|
||||
"Fur bad on lava";
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
"I don't like to take a srime bath!";
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
DEATH_DROWN0;
|
||||
"*HISS* I HATE WATER";
|
||||
"WATER NO";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
DEATH_SUICIDE2;
|
||||
"...";
|
||||
"Oops. Ah well one less live of many to go!";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"*HISS*";
|
||||
"You tore my special leather laced top, now i'm naked :(";
|
||||
"That is a wrong way to pet a cat";
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_FEM_INSULT1;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
"Can't find a skill weapon? Or is it just that you suck?";
|
||||
"Over-compensating for something?";
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
curse;
|
||||
"This is far more painful than it looks.";
|
||||
"One day, ", 0, " you me and a ", weapon, " are going to have a discussion.";
|
||||
"Is that the best you can do?";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
"Not bad, ", 0, ", have you been practicing?";
|
||||
"I never saw it coming.";
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
0, ", you should stay down...";
|
||||
"*sigh* if only this was challenging.";
|
||||
"I love this gun!";
|
||||
"Way too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
"Aww man... now I have to take a bath to get the brains out.";
|
||||
"Does anyone have a quick way of getting brains out of your hair?";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
"Why do you even bother?";
|
||||
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
"You are getting better, ", 0, ", keep it up and you might actually win something.";
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT_FEM0;
|
||||
TAUNT1;
|
||||
"You should give up your ", substance, " addiction by next ", month, ".";
|
||||
"I saw those pictures of ", 0, " and a ", animal, " posted on the web last night... Like, ewww!";
|
||||
immaturity01;
|
||||
"Your ", family_member, " needs to stop calling me.";
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
"this one time, at band camp...";
|
||||
GRRLTALK1;
|
||||
MISC4;
|
||||
"Has anyone tried out the new ", 5, "? Is it worth the upgrade?";
|
||||
MISC1;
|
||||
"You would be surprised what you can do with a ", animal, " a ", food, " and ", peeps, ".";
|
||||
"Next time you see ", peeps, " tell 'em to call me, mmmkay?";
|
||||
neuterbot, " is cute.";
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 10
|
||||
//shotgun
|
||||
#define SGW 180
|
||||
//machinegun
|
||||
#define MGW 75
|
||||
//grenade launcher
|
||||
#define GLW 170
|
||||
//rocket launcher
|
||||
#define RLW 160
|
||||
//railgun
|
||||
#define RGW 250
|
||||
//bfg10k
|
||||
#define BFW 90
|
||||
//lightninggun
|
||||
#define LGW 200
|
||||
//plasmagun
|
||||
#define PGW 110
|
||||
//grapplinghook
|
||||
#define GRW 10
|
||||
//prox-launcher
|
||||
#define PXW 160
|
||||
//nailgun
|
||||
#define NGW 200
|
||||
//chaingun
|
||||
#define CGW 175
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Penguin"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.25
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/penguin_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.25
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.25
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.25
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 3.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/penguin_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "penguin"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/penguin_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.1
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.1
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.1
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.1
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.1
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.1
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.1
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.1
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.2
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.1
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.5
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.1
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Penguin"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/penguin_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/penguin_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "penguin"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 1.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/penguin_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.75
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Penguin"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/penguin_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/penguin_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "penguin"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/penguin_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 400
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 400
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 0.0
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,276 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Penguin"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Stop using winblows";
|
||||
"GNU RU1Z3!";
|
||||
"Linus told me to skin you alive, windoze users.";
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"I need to recompile my qvms, l8r.";
|
||||
"I need to go burn a Win98 CD";
|
||||
"Pizza's here, l8r";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
3, " sucks!";
|
||||
2, ", I let you win.";
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
LEVEL_END_VICTORY0;
|
||||
LEVEL_END_VICTORY1;
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " must be an Arena Lord.";
|
||||
1, " kept getting in my way.";
|
||||
4, " has never been good to me.";
|
||||
2, " is a known cheater... the only way I could have lost.";
|
||||
2, " has a more optimized build than I.";
|
||||
2, " what use flags did you use in your compile?";
|
||||
4, " isn't optimized properly.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
"Jerk";
|
||||
"Schmuck";
|
||||
"Putz";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
"Try harder next time.";
|
||||
"Wuss";
|
||||
"Heh, you suck.";
|
||||
"Nice shooting, not.";
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
HIT_NOKILL0;
|
||||
HIT_NOKILL1;
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"LOL!";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"It burns!";
|
||||
"That's hot.";
|
||||
DEATH_SUICIDE0;
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
DEATH_SLIME0;
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
"I can't swim!";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
"Aww crap!";
|
||||
"Shutup!";
|
||||
DEATH_SUICIDE2;
|
||||
DEATH_SUICIDE1;
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"D'oh!";
|
||||
DEATH_GAUNTLET0;
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
"Linus, you are no longer my god, ", 0, " is.";
|
||||
"Was that the new ", 1, "?";
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
KILL_RAIL1;
|
||||
KILL_RAIL0;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
"Try recompiling with -pipe -O12 -fweb -funswitch-loops -funroll-all-loops -funit-at-a-time -fsched2-use-superblocks -frename-registers -fprefetch-loop-arrays -finline-limit=32768 -ffast-math -fbranch-target-load-optimize2"; //may be too long
|
||||
"tsk... sad, really. I almost hated to do that.";
|
||||
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
TELEFRAGGED2;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
"p0wn3d";
|
||||
"you are not 1337";
|
||||
"Bi11 G473z owns you.";
|
||||
KILL_INSULT4;
|
||||
KILL_INSULT2;
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
PRAISE0;
|
||||
PRAISE1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
"Your breath stinks";
|
||||
"Get a hair cut";
|
||||
"Get a real job";
|
||||
"Get a life";
|
||||
"You need 1337 lessons";
|
||||
"I so nailed your mom last night.";
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
"Has anyone tried kernel 2.8.56-rc3-mm45, yet?";
|
||||
"Binary packaging encourages sloppy design, contrast with the stochastic API unit testing which occurs naturally with all the building with different configurations.";
|
||||
"It could be the purpose of your life is only to serve as a warning to others";
|
||||
"Don't put that finger there, you don't know where's it been!";
|
||||
"I miss Richard Nixon...";
|
||||
"Viva la tux!";
|
||||
GUYTALK1;
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 50
|
||||
//shotgun
|
||||
#define SGW 120
|
||||
//machinegun
|
||||
#define MGW 75
|
||||
//grenade launcher
|
||||
#define GLW 150
|
||||
//rocket launcher
|
||||
#define RLW 200
|
||||
//railgun
|
||||
#define RGW 130
|
||||
//bfg10k
|
||||
#define BFW 175
|
||||
//lightninggun
|
||||
#define LGW 180
|
||||
//plasmagun
|
||||
#define PGW 230
|
||||
//grapplinghook
|
||||
#define GRW 50
|
||||
//prox-launcher
|
||||
#define PXW 175
|
||||
//nailgun
|
||||
#define NGW 190
|
||||
//chaingun
|
||||
#define CGW 210
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Rai"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.3
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/rai_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.3
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.3
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 1.5
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/rai_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "rai"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/rai_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.43
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.43
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Rai"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/rai_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/rai_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "rai"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/rai_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.95
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.1
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Rai"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/rai_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/rai_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "rai"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/rai_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.01
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 300
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 350
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 175
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,289 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Rai"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Hello.";
|
||||
"Are you prepared for pain?";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Look at the ~time";
|
||||
4, " kinda wears on me, I think I'll find a different server, later ~peeps";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
0, " it is time for some payback!";
|
||||
1, " you are going to have some pain in ", 4, ".";
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
"HA! ", 3, " is at the bottom, as usual.";
|
||||
2, ", I let you win.";
|
||||
4, " has changed a lot, it is much faster now.";
|
||||
"Is it over yet?";
|
||||
"I can remember when ", 4, " didn't suck.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
3, " you need to practice more... and forget about winning against me.";
|
||||
LEVEL_END_VICTORY1;
|
||||
"I really like ", 4, " since they fixed it, it is so easy to win!";
|
||||
"Next time, don't bother.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " cheated.";
|
||||
"I had a hang nail, so of course I lost.";
|
||||
"So much for my bluster...";
|
||||
"I felt bad for you so I let you win.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
0, ", didn't your mother ever tell you it was rude to interrupt a conversation?";
|
||||
"I am going to shove that ", 1, " down your throat if you do that again!";
|
||||
"Hey jerk! I was trying to hold a conversation here... do you mind?";
|
||||
"Jerk";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
1, " is not a good weapon, a ", weapon, " should be more your speed.";
|
||||
"You need to aim better.";
|
||||
"Try harder next time.";
|
||||
curse;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
0, " must be cheating.";
|
||||
"Dammit! Why won't you die?!?";
|
||||
"Well that sucked...";
|
||||
"Note to self... turn off safety next ~time";
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"Stop smoking ", substance, " and maybe you won't kill yourself so often.";
|
||||
"Tired of life, ", 0, "? Give it up.";
|
||||
"I guess that beats dying of ", disease, "...";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
"I hate praetorian impressions.";
|
||||
"My ", counselor, " warned about days like this.";
|
||||
"D'oh!";
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
"It didn't look that high from up there...";
|
||||
"*sigh*";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"Well... it beats a case of hypothermia.";
|
||||
"At least it is warm here";
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
"Green has never been my color...";
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
DEATH_DROWN0;
|
||||
"It isn't that difficult to just breath water...";
|
||||
"So why can't I breath water?";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
DEATH_SUICIDE2;
|
||||
"So much for life and all of its cruel irony.";
|
||||
"It is just easier for ", 0, " this way.";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"Unsanitary.";
|
||||
"What part of '~Don't touch me there' do you not understand?";
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_FEM_INSULT1;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
"Can't find a skill weapon? Or is it just that you suck?";
|
||||
"Over-compensating for something?";
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
curse;
|
||||
"This is far more painful than it looks.";
|
||||
"One day, ", 0, " you me and a ", weapon, " are going to have a discussion.";
|
||||
"Is that the best you can do?";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
"Not bad, ", 0, ", have you been practicing?";
|
||||
"I never saw it coming.";
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
0, ", you should stay down...";
|
||||
"*sigh* if only this was challenging.";
|
||||
"I love this gun!";
|
||||
"Way too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
"Aww man... now I have to take a bath to get the brains out.";
|
||||
"Does anyone have a quick way of getting brains out of your hair?";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
"Why do you even bother?";
|
||||
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
"You are getting better, ", 0, ", keep it up and you might actually win something.";
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT_FEM0;
|
||||
TAUNT1;
|
||||
"You should give up your ", substance, " addiction by next ", month, ".";
|
||||
"I saw those pictures of ", 0, " and a ", animal, " posted on the web last night... Like, ewww!";
|
||||
immaturity01;
|
||||
"Your ", family_member, " needs to stop calling me.";
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
"this one time, at band camp...";
|
||||
GRRLTALK1;
|
||||
MISC4;
|
||||
"Has anyone tried out the new ", 5, "? Is it worth the upgrade?";
|
||||
MISC1;
|
||||
"You would be surprised what you can do with a ", animal, " a ", food, " and ", peeps, ".";
|
||||
"Next time you see Gargoyle tell him to call me, mmmkay?";
|
||||
neuterbot, " is cute.";
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 10
|
||||
//shotgun
|
||||
#define SGW 180
|
||||
//machinegun
|
||||
#define MGW 75
|
||||
//grenade launcher
|
||||
#define GLW 170
|
||||
//rocket launcher
|
||||
#define RLW 160
|
||||
//railgun
|
||||
#define RGW 250
|
||||
//bfg10k
|
||||
#define BFW 90
|
||||
//lightninggun
|
||||
#define LGW 200
|
||||
//plasmagun
|
||||
#define PGW 110
|
||||
//grapplinghook
|
||||
#define GRW 10
|
||||
//prox-launcher
|
||||
#define PXW 160
|
||||
//nailgun
|
||||
#define NGW 200
|
||||
//chaingun
|
||||
#define CGW 175
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,203 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Sarge"
|
||||
CHARACTERISTIC_GENDER "Male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.250
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/sarge_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.250
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.250
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.250
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 2.00
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/sarge_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "sarge"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.200
|
||||
CHARACTERISTIC_JUMPER 0.900
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.800
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.500
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/sarge_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.250
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.900
|
||||
CHARACTERISTIC_VENGEFULNESS 0.900
|
||||
CHARACTERISTIC_CAMPER 0.800
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 0.900
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.700
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.500
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.600
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.700
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.450
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.400
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.800
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.500
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.500
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.300
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Sarge"
|
||||
CHARACTERISTIC_GENDER "Male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.000
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/sarge_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.000
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.900
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.25
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/sarge_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "sarge"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.100
|
||||
CHARACTERISTIC_JUMPER 0.900
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.000
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.000
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/sarge_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.000
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.000
|
||||
CHARACTERISTIC_VENGEFULNESS 1.000
|
||||
CHARACTERISTIC_CAMPER 0.700
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 1.000
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.900
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.900
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.200
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Sarge"
|
||||
CHARACTERISTIC_GENDER "Male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.000
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/sarge_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.000
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.000
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.00
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/sarge_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "sarge"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.900
|
||||
CHARACTERISTIC_CHAT_MISC 0.750
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.900
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.000
|
||||
CHARACTERISTIC_CHAT_KILL 1.000
|
||||
CHARACTERISTIC_CHAT_DEATH 0.900
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.000
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.900
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.800
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.000
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.900
|
||||
CHARACTERISTIC_CHAT_REPLY 1.000
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.000
|
||||
CHARACTERISTIC_JUMPER 1.000
|
||||
CHARACTERISTIC_WALKER 0.000
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.000
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.000
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/sarge_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.000
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.000
|
||||
CHARACTERISTIC_VENGEFULNESS 1.000
|
||||
CHARACTERISTIC_CAMPER 0.000
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.000
|
||||
CHARACTERISTIC_ALERTNESS 1.000
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.900
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.000
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.000
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.000
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.100
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
#define FPH 4
|
||||
#define FPA 3
|
||||
|
||||
#define SGW 200
|
||||
#define MGW 100
|
||||
#define GLW 150
|
||||
#define RLW 150
|
||||
#define RGW 250
|
||||
#define BFW 450
|
||||
#define LGW 200
|
||||
#define PGW 250
|
||||
#define PXW 350
|
||||
#define NGW 150
|
||||
#define CGW 200
|
||||
|
||||
#define GSGW 140
|
||||
#define GMGW 150
|
||||
#define GGLW 200
|
||||
#define GRLW 150
|
||||
#define GRGW 200
|
||||
#define GBFW 100
|
||||
#define GLGW 250
|
||||
#define GPGW 100
|
||||
#define GPXW 200
|
||||
#define GNGW 100
|
||||
#define GCGW 125
|
||||
|
||||
#define TELW 190
|
||||
#define MEDW 50
|
||||
#define QW 500
|
||||
#define ENVW 50
|
||||
#define HAW 50
|
||||
#define INW 400
|
||||
#define REGW 50
|
||||
#define FLW 120
|
||||
#define KAMW 200
|
||||
#define IBW 150
|
||||
#define PORW 300
|
||||
#define SCW 100
|
||||
#define GUW 200
|
||||
#define DUBW 100
|
||||
#define AMRW 400
|
||||
#define REDCW 200
|
||||
#define BLCW 200
|
||||
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "sarge"
|
||||
{
|
||||
#include "teamplay.h"
|
||||
|
||||
type "game_enter"
|
||||
{
|
||||
"Here we go again.";
|
||||
"Why don't you people just lay down and die, it'll save me the trouble.";
|
||||
}
|
||||
|
||||
type "game_exit"
|
||||
{
|
||||
GOODBYE1;
|
||||
GOODBYE4;
|
||||
GOODBYE3;
|
||||
}
|
||||
|
||||
type "level_start"
|
||||
{
|
||||
"Oh man, ", 4, " again?!?";
|
||||
"Alright, ", 4, " has always been good to me.";
|
||||
}
|
||||
|
||||
type "level_end"
|
||||
{
|
||||
"nice place ", 4, ", much less dangerous than d3dm2.";
|
||||
}
|
||||
|
||||
type "level_end_victory"
|
||||
{
|
||||
"Yep.";
|
||||
}
|
||||
|
||||
type "level_end_lose"
|
||||
{
|
||||
"Aww... crap!";
|
||||
}
|
||||
|
||||
type "hit_talking"
|
||||
{
|
||||
DEATH_TALKING;
|
||||
|
||||
}
|
||||
|
||||
type "hit_nodeath"
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT1;
|
||||
TAUNT2;
|
||||
}
|
||||
|
||||
type "hit_nokill"
|
||||
{
|
||||
HIT_NOKILL0;
|
||||
HIT_NOKILL1;
|
||||
HIT_NOKILL1;
|
||||
}
|
||||
|
||||
type "death_telefrag"
|
||||
{
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED0;
|
||||
}
|
||||
|
||||
type "death_cratered"
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
DEATH_FALLING0;
|
||||
DEATH_FALLING0;
|
||||
}
|
||||
|
||||
type "death_lava"
|
||||
{
|
||||
"Well it was getting a bit nippy...";
|
||||
"mmm... toasty!";
|
||||
}
|
||||
|
||||
type "death_slime"
|
||||
{
|
||||
"D'oh!";
|
||||
}
|
||||
|
||||
type "death_drown"
|
||||
{
|
||||
"Who needs air?";
|
||||
}
|
||||
|
||||
type "death_suicide"
|
||||
{
|
||||
DEATH_SUICIDE0;
|
||||
DEATH_SUICIDE1;
|
||||
DEATH_SUICIDE1;
|
||||
}
|
||||
|
||||
type "death_gauntlet"
|
||||
{
|
||||
DEATH_GAUNTLET0;
|
||||
DEATH_GAUNTLET1;
|
||||
DEATH_GAUNTLET1;
|
||||
}
|
||||
|
||||
type "death_rail"
|
||||
{
|
||||
DEATH_RAIL1;
|
||||
DEATH_RAIL1;
|
||||
DEATH_RAIL0;
|
||||
|
||||
}
|
||||
|
||||
type "death_bfg"
|
||||
{
|
||||
DEATH_BFG1;
|
||||
DEATH_BFG0;
|
||||
|
||||
}
|
||||
|
||||
type "death_insult"
|
||||
{
|
||||
"What the... how cheap!";
|
||||
"Back in my day, frags weren't so cheap.";
|
||||
}
|
||||
|
||||
type "death_praise"
|
||||
{
|
||||
0, " is death incarnate.";
|
||||
}
|
||||
|
||||
type "kill_rail"
|
||||
{
|
||||
KILL_RAIL0;
|
||||
KILL_RAIL1;
|
||||
}
|
||||
|
||||
type "kill_gauntlet"
|
||||
{
|
||||
KILL_GAUNTLET0;
|
||||
KILL_GAUNTLET1;
|
||||
|
||||
}
|
||||
|
||||
type "kill_telefrag"
|
||||
{
|
||||
TELEFRAGGED0;
|
||||
TELEFRAGGED1;
|
||||
}
|
||||
|
||||
type "kill_suicide"
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT1;
|
||||
}
|
||||
|
||||
type "kill_insult"
|
||||
{
|
||||
"Pathetic.";
|
||||
"tsk";
|
||||
"My ", family_member, " could do better.";
|
||||
}
|
||||
|
||||
type "kill_praise"
|
||||
{
|
||||
"Nice one, ", 0, ".";
|
||||
"Wow, ~you never saw that one coming, ", 0, ".";
|
||||
}
|
||||
|
||||
type "random_insult"
|
||||
{
|
||||
0, ", ~you suck!";
|
||||
0, " needs to stop calling my mom.";
|
||||
}
|
||||
|
||||
type "random_misc"
|
||||
{
|
||||
0, " gave my ~mom ", disease, ".";
|
||||
"Is it true that ", peeps, " is a bot?";
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
#define GTW 50
|
||||
#define SGW 200
|
||||
#define MGW 110
|
||||
#define GLW 220
|
||||
#define RLW 150
|
||||
#define RGW 190
|
||||
#define BFW 300
|
||||
#define LGW 220
|
||||
#define PGW 200
|
||||
#define GRW 50
|
||||
#define NGW 200
|
||||
#define PXW 150
|
||||
#define CGW 365
|
||||
|
||||
//
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Sergei"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.30
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/sergei_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0..30
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.30
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.30
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 1.5
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/sergei_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Sergei"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.4
|
||||
CHARACTERISTIC_JUMPER 0.6
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.6
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/sergei_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.3
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.30
|
||||
CHARACTERISTIC_CAMPER 0.30
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.6
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.6
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.6
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.4
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.5
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.5
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.5
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.5
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.2
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Sergei"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/sergei_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/sergei_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Sergei"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.4
|
||||
CHARACTERISTIC_JUMPER 0.6
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/sergei_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.2
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.05
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.8
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.6
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.7
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.975
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.975
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.975
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.975
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.025
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Sergei"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/sergei_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/sergei_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Sergei"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.5
|
||||
CHARACTERISTIC_JUMPER 0.5
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/sergei_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.001
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.9
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 90
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 150
|
||||
//rocket launcher
|
||||
#define RLW 220
|
||||
//rail gun
|
||||
#define RGW 160
|
||||
//bfg10k
|
||||
#define BFW 150
|
||||
//lightninggun
|
||||
#define LGW 195
|
||||
//plasmagun
|
||||
#define PGW 260
|
||||
//prox-launcher
|
||||
#define PXW 180
|
||||
//nailgun
|
||||
#define NGW 350
|
||||
//chaingun
|
||||
#define CGW 100
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 110
|
||||
//rocketlauncher
|
||||
#define GRLW 120
|
||||
//railgun
|
||||
#define GRGW 150
|
||||
//bfg10k
|
||||
#define GBFW 50
|
||||
//lightninggun
|
||||
#define GLGW 100
|
||||
//plasmagun
|
||||
#define GPGW 150
|
||||
//prox-launcher
|
||||
#define GPXW 100
|
||||
//nailgun
|
||||
#define GNGW 120
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 140
|
||||
//medkit
|
||||
#define MEDW 190
|
||||
//quad-damage
|
||||
#define QW 200
|
||||
//envirosuit
|
||||
#define ENVW 150
|
||||
//haste
|
||||
#define HAW 125
|
||||
//invisibility
|
||||
#define INW 130
|
||||
//regeneration
|
||||
#define REGW 150
|
||||
//flight
|
||||
#define FLW 150
|
||||
//kamikaze
|
||||
#define KAMW 390
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 130
|
||||
//scout
|
||||
#define SCW 190
|
||||
//guard
|
||||
#define GUW 180
|
||||
//doubler
|
||||
#define DUBW 110
|
||||
//ammo-regen
|
||||
#define AMRW 160
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 450
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,284 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Sergei"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Ever feel like you've been cheated?";
|
||||
"Time to die!";
|
||||
0, " is a tosser!";
|
||||
"Now that your daddy is gone...";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Your daddy is here, got to go.";
|
||||
"Adios.";
|
||||
4, " sucks, l8r.";
|
||||
"I'm going to get drunk, l8r";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
"Wow this is worse than oa_bases3!";
|
||||
0, " is going down.";
|
||||
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
3, " sucks!";
|
||||
2, ", I let you win.";
|
||||
4, " worst level ever! Let's play it again!";
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
LEVEL_END_VICTORY0;
|
||||
LEVEL_END_VICTORY1;
|
||||
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " got lucky.";
|
||||
1, " kept spawn camping.";
|
||||
4, " has never been good to me.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
"So much for sportsmanship...";
|
||||
"Loser!";
|
||||
"Wanker!";
|
||||
"Putz";
|
||||
"Tosser";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
"Sissy";
|
||||
"Wuss";
|
||||
"Heh, you suck.";
|
||||
"Dick Cheney is a better shot than you!";
|
||||
"Ya pansy!";
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
HIT_NOKILL0;
|
||||
HIT_NOKILL1;
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"LOL!";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"Mmmm... toasted nuts!";
|
||||
DEATH_SUICIDE0;
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
DEATH_SLIME0;
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
"I need to spend some time at the Y.";
|
||||
"All of that time in those swimming lessons for naught.";
|
||||
"I should grow gills...";
|
||||
"Crayon should have taught me how to swim...";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
"crap!";
|
||||
"Shutup!";
|
||||
DEATH_SUICIDE2;
|
||||
DEATH_SUICIDE1;
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
DEATH_GAUNTLET0;
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
"Das schlechteste setzt sich durch";
|
||||
"Wuss";
|
||||
"Sissy";
|
||||
"Pansy!";
|
||||
"Come back here... I'll chew your leg off!";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
"Pff, try a real weapon next time.";
|
||||
KILL_RAIL1;
|
||||
KILL_RAIL0;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
TELEFRAGGED2;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
KILL_INSULT2;
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
PRAISE0;
|
||||
PRAISE1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
"Fascist pig!";
|
||||
"Capitalist swine";
|
||||
"Marxist scum!";
|
||||
"Neo-liberal twit!";
|
||||
"Neo-conservative twit!";
|
||||
"Redneck";
|
||||
"White Trash";
|
||||
TAUNT0;
|
||||
TAUNT1;
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
"...we'll sacrifice the older ones, they're livin' in the past, we'll burn up their religion and we'll all be free at last...";
|
||||
"OI! OI! PUNK ROCK'S NOT DEAD!";
|
||||
"...you sit around the house in your daddy's clothes, you're lookin' a mess, you're pickin' your nose...";
|
||||
"...can't stand rock n' roll, no I can't stand rock n' roll, up your bum with rock n' roll...";
|
||||
"Viva la revolucion!";
|
||||
"Cheap holiday in other people's misery...";
|
||||
GUYTALK1;
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 50
|
||||
//shotgun
|
||||
#define SGW 275
|
||||
//machinegun
|
||||
#define MGW 100
|
||||
//grenade launcher
|
||||
#define GLW 250
|
||||
//rocket launcher
|
||||
#define RLW 275
|
||||
//railgun
|
||||
#define RGW 200
|
||||
//bfg10k
|
||||
#define BFW 50
|
||||
//lightninggun
|
||||
#define LGW 160
|
||||
//plasmagun
|
||||
#define PGW 290
|
||||
//grapplinghook
|
||||
#define GRW 50
|
||||
//prox-launcher
|
||||
#define PXW 110
|
||||
//nailgun
|
||||
#define NGW 310
|
||||
//chaingun
|
||||
#define CGW 75
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Skelebot"
|
||||
CHARACTERISTIC_GENDER "it"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.25
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/skelebot_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.25
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.25
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.25
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 3.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/skelebot_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "skelebot"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.5
|
||||
CHARACTERISTIC_CHAT_MISC 0.5
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.5
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.5
|
||||
CHARACTERISTIC_CHAT_KILL 0.5
|
||||
CHARACTERISTIC_CHAT_DEATH 0.5
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.5
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.5
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.5
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.5
|
||||
CHARACTERISTIC_CHAT_REPLY 0.5
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/skelebot_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.7
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.3
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.3
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Skelebot"
|
||||
CHARACTERISTIC_GENDER "it"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/skelebot_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/skelebot_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "skelebot"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/skelebot_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.9
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.75
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Skelebot"
|
||||
CHARACTERISTIC_GENDER "it"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/skelebot_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/skelebot_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "skelebot"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/skelebot_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.98
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 400
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 400
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 60
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "skelebot"
|
||||
{
|
||||
#include "teamplay.h"
|
||||
|
||||
type "game_enter"
|
||||
{
|
||||
"Here we go again.";
|
||||
"Why don't you people just lay down and die, it'll save me the trouble.";
|
||||
}
|
||||
|
||||
type "game_exit"
|
||||
{
|
||||
GOODBYE1;
|
||||
GOODBYE4;
|
||||
GOODBYE3;
|
||||
}
|
||||
|
||||
type "level_start"
|
||||
{
|
||||
"Oh man, ", 4, " again?!?";
|
||||
"Alright, ", 4, " has always been good to me.";
|
||||
}
|
||||
|
||||
type "level_end"
|
||||
{
|
||||
"nice place ", 4, ", much less dangerous than d3dm2.";
|
||||
}
|
||||
|
||||
type "level_end_victory"
|
||||
{
|
||||
"Yep.";
|
||||
}
|
||||
|
||||
type "level_end_lose"
|
||||
{
|
||||
"Aww... crap!";
|
||||
}
|
||||
|
||||
type "hit_talking"
|
||||
{
|
||||
DEATH_TALKING;
|
||||
|
||||
}
|
||||
|
||||
type "hit_nodeath"
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT1;
|
||||
TAUNT2;
|
||||
}
|
||||
|
||||
type "hit_nokill"
|
||||
{
|
||||
HIT_NOKILL0;
|
||||
HIT_NOKILL1;
|
||||
HIT_NOKILL1;
|
||||
}
|
||||
|
||||
type "death_telefrag"
|
||||
{
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED0;
|
||||
}
|
||||
|
||||
type "death_cratered"
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
DEATH_FALLING0;
|
||||
DEATH_FALLING0;
|
||||
}
|
||||
|
||||
type "death_lava"
|
||||
{
|
||||
"Well it was getting a bit nippy...";
|
||||
"mmm... toasty!";
|
||||
}
|
||||
|
||||
type "death_slime"
|
||||
{
|
||||
"D'oh!";
|
||||
}
|
||||
|
||||
type "death_drown"
|
||||
{
|
||||
"Who needs air?";
|
||||
}
|
||||
|
||||
type "death_suicide"
|
||||
{
|
||||
DEATH_SUICIDE0;
|
||||
DEATH_SUICIDE1;
|
||||
DEATH_SUICIDE1;
|
||||
}
|
||||
|
||||
type "death_gauntlet"
|
||||
{
|
||||
DEATH_GAUNTLET0;
|
||||
DEATH_GAUNTLET1;
|
||||
DEATH_GAUNTLET1;
|
||||
}
|
||||
|
||||
type "death_rail"
|
||||
{
|
||||
DEATH_RAIL1;
|
||||
DEATH_RAIL1;
|
||||
DEATH_RAIL0;
|
||||
|
||||
}
|
||||
|
||||
type "death_bfg"
|
||||
{
|
||||
DEATH_BFG1;
|
||||
DEATH_BFG0;
|
||||
|
||||
}
|
||||
|
||||
type "death_insult"
|
||||
{
|
||||
"What the... how cheap!";
|
||||
"Back in my day, frags weren't so cheap.";
|
||||
}
|
||||
|
||||
type "death_praise"
|
||||
{
|
||||
0, " is death incarnate.";
|
||||
}
|
||||
|
||||
type "kill_rail"
|
||||
{
|
||||
KILL_RAIL0;
|
||||
KILL_RAIL1;
|
||||
}
|
||||
|
||||
type "kill_gauntlet"
|
||||
{
|
||||
KILL_GAUNTLET0;
|
||||
KILL_GAUNTLET1;
|
||||
|
||||
}
|
||||
|
||||
type "kill_telefrag"
|
||||
{
|
||||
TELEFRAGGED0;
|
||||
TELEFRAGGED1;
|
||||
}
|
||||
|
||||
type "kill_suicide"
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT1;
|
||||
}
|
||||
|
||||
type "kill_insult"
|
||||
{
|
||||
"Pathetic.";
|
||||
"tsk";
|
||||
"My ", family_member, " could do better.";
|
||||
}
|
||||
|
||||
type "kill_praise"
|
||||
{
|
||||
"Nice one, ", 0, ".";
|
||||
"Wow, ~you never saw that one coming, ", 0, ".";
|
||||
}
|
||||
|
||||
type "random_insult"
|
||||
{
|
||||
0, ", ~you suck!";
|
||||
0, " needs to stop calling my mom.";
|
||||
}
|
||||
|
||||
type "random_misc"
|
||||
{
|
||||
0, " gave my ~mom ", disease, ".";
|
||||
"Is it true that ", peeps, " is a bot?";
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 20
|
||||
//shotgun
|
||||
#define SGW 190
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenade launcher
|
||||
#define GLW 100
|
||||
//rocket launcher
|
||||
#define RLW 210
|
||||
//railgun
|
||||
#define RGW 250
|
||||
//bfg10k
|
||||
#define BFW 90
|
||||
//lightninggun
|
||||
#define LGW 160
|
||||
//plasmagun
|
||||
#define PGW 130
|
||||
//grapplinghook
|
||||
#define GRW 10
|
||||
//prox-launcher
|
||||
#define PXW 175
|
||||
//nailgun
|
||||
#define NGW 160
|
||||
//chaingun
|
||||
#define CGW 225
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Sly"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.3
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/sly_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.3
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.3
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 1.5
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/sly_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Sly"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/sly_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.43
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.43
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Sly"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/sly_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/sly_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Sly"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/sly_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.95
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.1
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Sly"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/sly_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/sly_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Sly"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/sly_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.01
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 300
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 350
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 175
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,289 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Sly"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Hello.";
|
||||
"Are you prepared for pain?";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Look at the ~time";
|
||||
4, " kinda wears on me, I think I'll find a different server, later ~peeps";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
0, " it is time for some payback!";
|
||||
1, " you are going to have some pain in ", 4, ".";
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
"HA! ", 3, " is at the bottom, as usual.";
|
||||
2, ", I let you win.";
|
||||
4, " has changed a lot, it is much faster now.";
|
||||
"Is it over yet?";
|
||||
"I can remember when ", 4, " didn't suck.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
3, " you need to practice more... and forget about winning against me.";
|
||||
LEVEL_END_VICTORY1;
|
||||
"I really like ", 4, " since they fixed it, it is so easy to win!";
|
||||
"Next time, don't bother.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " cheated.";
|
||||
"I had a hang nail, so of course I lost.";
|
||||
"So much for my bluster...";
|
||||
"I felt bad for you so I let you win.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
0, ", didn't your mother ever tell you it was rude to interrupt a conversation?";
|
||||
"I am going to shove that ", 1, " down your throat if you do that again!";
|
||||
"Hey jerk! I was trying to hold a conversation here... do you mind?";
|
||||
"Jerk";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
1, " is not a good weapon, a ", weapon, " should be more your speed.";
|
||||
"You need to aim better.";
|
||||
"Try harder next time.";
|
||||
curse;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
0, " must be cheating.";
|
||||
"Dammit! Why won't you die?!?";
|
||||
"Well that sucked...";
|
||||
"Note to self... turn off safety next ~time";
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"Stop smoking ", substance, " and maybe you won't kill yourself so often.";
|
||||
"Tired of life, ", 0, "? Give it up.";
|
||||
"I guess that beats dying of ", disease, "...";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
"I hate praetorian impressions.";
|
||||
"My ", counselor, " warned about days like this.";
|
||||
"D'oh!";
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
"It didn't look that high from up there...";
|
||||
"*sigh*";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"Well... it beats a case of hypothermia.";
|
||||
"At least it is warm here";
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
"Green has never been my color...";
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
DEATH_DROWN0;
|
||||
"It isn't that difficult to just breath water...";
|
||||
"So why can't I breath water?";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
DEATH_SUICIDE2;
|
||||
"So much for life and all of its cruel irony.";
|
||||
"It is just easier for ", 0, " this way.";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"Unsanitary.";
|
||||
"What part of '~Don't touch me there' do you not understand?";
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_FEM_INSULT1;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
"Can't find a skill weapon? Or is it just that you suck?";
|
||||
"Over-compensating for something?";
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
curse;
|
||||
"This is far more painful than it looks.";
|
||||
"One day, ", 0, " you me and a ", weapon, " are going to have a discussion.";
|
||||
"Is that the best you can do?";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
"Not bad, ", 0, ", have you been practicing?";
|
||||
"I never saw it coming.";
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
0, ", you should stay down...";
|
||||
"*sigh* if only this was challenging.";
|
||||
"I love this gun!";
|
||||
"Way too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
"Aww man... now I have to take a bath to get the brains out.";
|
||||
"Does anyone have a quick way of getting brains out of your hair?";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
"Why do you even bother?";
|
||||
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
"You are getting better, ", 0, ", keep it up and you might actually win something.";
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT_FEM0;
|
||||
TAUNT1;
|
||||
"You should give up your ", substance, " addiction by next ", month, ".";
|
||||
"I saw those pictures of ", 0, " and a ", animal, " posted on the web last night... Like, ewww!";
|
||||
immaturity01;
|
||||
"Your ", family_member, " needs to stop calling me.";
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
"this one time, at band camp...";
|
||||
GRRLTALK1;
|
||||
MISC4;
|
||||
"Has anyone tried out the new ", 5, "? Is it worth the upgrade?";
|
||||
MISC1;
|
||||
"You would be surprised what you can do with a ", animal, " a ", food, " and ", peeps, ".";
|
||||
"Next time you see Gargoyle tell him to call me, mmmkay?";
|
||||
neuterbot, " is cute.";
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 10
|
||||
//shotgun
|
||||
#define SGW 150
|
||||
//machinegun
|
||||
#define MGW 95
|
||||
//grenade launcher
|
||||
#define GLW 180
|
||||
//rocket launcher
|
||||
#define RLW 200
|
||||
//railgun
|
||||
#define RGW 210
|
||||
//bfg10k
|
||||
#define BFW 90
|
||||
//lightninggun
|
||||
#define LGW 200
|
||||
//plasmagun
|
||||
#define PGW 130
|
||||
//grapplinghook
|
||||
#define GRW 10
|
||||
//prox-launcher
|
||||
#define PXW 160
|
||||
//nailgun
|
||||
#define NGW 190
|
||||
//chaingun
|
||||
#define CGW 135
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Tanisha"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.3
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/tanisha_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.3
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.3
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 1.5
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/tanisha_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Tanisha"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/tanisha_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.43
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.43
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.43
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.43
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Tanisha"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/tanisha_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/tanisha_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Tanisha"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 1.0
|
||||
CHARACTERISTIC_CHAT_MISC 1.0
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 1.0
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 1.0
|
||||
CHARACTERISTIC_CHAT_KILL 1.0
|
||||
CHARACTERISTIC_CHAT_DEATH 1.0
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 1.0
|
||||
CHARACTERISTIC_CHAT_HITTALKING 1.0
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 1.0
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 1.0
|
||||
CHARACTERISTIC_CHAT_RANDOM 1.0
|
||||
CHARACTERISTIC_CHAT_REPLY 1.0
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/tanisha_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.95
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.95
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.95
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.1
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Tanisha"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/tanisha_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/tanisha_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "Tanisha"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/tanisha_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.01
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 300
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 350
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 175
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,289 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Tanisha"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Hello.";
|
||||
"Are you prepared for pain?";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Look at the ~time";
|
||||
4, " kinda wears on me, I think I'll find a different server, later ~peeps";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
0, " it is time for some payback!";
|
||||
1, " you are going to have some pain in ", 4, ".";
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
"HA! ", 3, " is at the bottom, as usual.";
|
||||
2, ", I let you win.";
|
||||
4, " has changed a lot, it is much faster now.";
|
||||
"Is it over yet?";
|
||||
"I can remember when ", 4, " didn't suck.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
3, " you need to practice more... and forget about winning against me.";
|
||||
LEVEL_END_VICTORY1;
|
||||
"I really like ", 4, " since they fixed it, it is so easy to win!";
|
||||
"Next time, don't bother.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " cheated.";
|
||||
"I had a hang nail, so of course I lost.";
|
||||
"So much for my bluster...";
|
||||
"I felt bad for you so I let you win.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
0, ", didn't your mother ever tell you it was rude to interrupt a conversation?";
|
||||
"I am going to shove that ", 1, " down your throat if you do that again!";
|
||||
"Hey jerk! I was trying to hold a conversation here... do you mind?";
|
||||
"Jerk";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
1, " is not a good weapon, a ", weapon, " should be more your speed.";
|
||||
"You need to aim better.";
|
||||
"Try harder next time.";
|
||||
curse;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
0, " must be cheating.";
|
||||
"Dammit! Why won't you die?!?";
|
||||
"Well that sucked...";
|
||||
"Note to self... turn off safety next ~time";
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"Stop smoking ", substance, " and maybe you won't kill yourself so often.";
|
||||
"Tired of life, ", 0, "? Give it up.";
|
||||
"I guess that beats dying of ", disease, "...";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
"I hate praetorian impressions.";
|
||||
"My ", counselor, " warned about days like this.";
|
||||
"D'oh!";
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
"It didn't look that high from up there...";
|
||||
"*sigh*";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"Well... it beats a case of hypothermia.";
|
||||
"At least it is warm here";
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
"Green has never been my color...";
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
DEATH_DROWN0;
|
||||
"It isn't that difficult to just breath water...";
|
||||
"So why can't I breath water?";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
DEATH_SUICIDE2;
|
||||
"So much for life and all of its cruel irony.";
|
||||
"It is just easier for ", 0, " this way.";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"Unsanitary.";
|
||||
"What part of '~Don't touch me there' do you not understand?";
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_FEM_INSULT1;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
"Can't find a skill weapon? Or is it just that you suck?";
|
||||
"Over-compensating for something?";
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
curse;
|
||||
"This is far more painful than it looks.";
|
||||
"One day, ", 0, " you me and a ", weapon, " are going to have a discussion.";
|
||||
"Is that the best you can do?";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
"Not bad, ", 0, ", have you been practicing?";
|
||||
"I never saw it coming.";
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
0, ", you should stay down...";
|
||||
"*sigh* if only this was challenging.";
|
||||
"I love this gun!";
|
||||
"Way too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
"Aww man... now I have to take a bath to get the brains out.";
|
||||
"Does anyone have a quick way of getting brains out of your hair?";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
"Why do you even bother?";
|
||||
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
"You are getting better, ", 0, ", keep it up and you might actually win something.";
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT_FEM0;
|
||||
TAUNT1;
|
||||
"You should give up your ", substance, " addiction by next ", month, ".";
|
||||
"I saw those pictures of ", 0, " and a ", animal, " posted on the web last night... Like, ewww!";
|
||||
immaturity01;
|
||||
"Your ", family_member, " needs to stop calling me.";
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
"this one time, at band camp...";
|
||||
GRRLTALK1;
|
||||
MISC4;
|
||||
"Has anyone tried out the new ", 5, "? Is it worth the upgrade?";
|
||||
MISC1;
|
||||
"You would be surprised what you can do with a ", animal, " a ", food, " and ", peeps, ".";
|
||||
"Next time you see Gargoyle tell him to call me, mmmkay?";
|
||||
neuterbot, " is cute.";
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 10
|
||||
//shotgun
|
||||
#define SGW 160
|
||||
//machinegun
|
||||
#define MGW 95
|
||||
//grenade launcher
|
||||
#define GLW 150
|
||||
//rocket launcher
|
||||
#define RLW 200
|
||||
//railgun
|
||||
#define RGW 210
|
||||
//bfg10k
|
||||
#define BFW 90
|
||||
//lightninggun
|
||||
#define LGW 200
|
||||
//plasmagun
|
||||
#define PGW 130
|
||||
//grapplinghook
|
||||
#define GRW 10
|
||||
//prox-launcher
|
||||
#define PXW 175
|
||||
//nailgun
|
||||
#define NGW 190
|
||||
//chaingun
|
||||
#define CGW 135
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Tony"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.25
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/tony_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.25
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.25
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.25
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 3.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/tony_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "tony"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.5
|
||||
CHARACTERISTIC_CHAT_MISC 0.5
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.5
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.5
|
||||
CHARACTERISTIC_CHAT_KILL 0.5
|
||||
CHARACTERISTIC_CHAT_DEATH 0.5
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.5
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.5
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.5
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.5
|
||||
CHARACTERISTIC_CHAT_REPLY 0.5
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/tony_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.3
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.3
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Tony"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/tony_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/tony_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "tony"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/tony_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.75
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Tony"
|
||||
CHARACTERISTIC_GENDER "male"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/tony_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/tony_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "tony"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/tony_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 400
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 400
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 40
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Tony"
|
||||
{
|
||||
#include "teamplay.h"
|
||||
|
||||
type "game_enter"
|
||||
{
|
||||
"Here we go again.";
|
||||
"Why don't you people just lay down and die, it'll save me the trouble.";
|
||||
}
|
||||
|
||||
type "game_exit"
|
||||
{
|
||||
GOODBYE1;
|
||||
GOODBYE4;
|
||||
GOODBYE3;
|
||||
}
|
||||
|
||||
type "level_start"
|
||||
{
|
||||
"Oh man, ", 4, " again?!?";
|
||||
"Alright, ", 4, " has always been good to me.";
|
||||
}
|
||||
|
||||
type "level_end"
|
||||
{
|
||||
"nice place ", 4, ", much less dangerous than d3dm2.";
|
||||
}
|
||||
|
||||
type "level_end_victory"
|
||||
{
|
||||
"Yep.";
|
||||
}
|
||||
|
||||
type "level_end_lose"
|
||||
{
|
||||
"Aww... crap!";
|
||||
}
|
||||
|
||||
type "hit_talking"
|
||||
{
|
||||
DEATH_TALKING;
|
||||
|
||||
}
|
||||
|
||||
type "hit_nodeath"
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT1;
|
||||
TAUNT2;
|
||||
}
|
||||
|
||||
type "hit_nokill"
|
||||
{
|
||||
HIT_NOKILL0;
|
||||
HIT_NOKILL1;
|
||||
HIT_NOKILL1;
|
||||
}
|
||||
|
||||
type "death_telefrag"
|
||||
{
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED0;
|
||||
DEATH_TELEFRAGGED0;
|
||||
}
|
||||
|
||||
type "death_cratered"
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
DEATH_FALLING0;
|
||||
DEATH_FALLING0;
|
||||
}
|
||||
|
||||
type "death_lava"
|
||||
{
|
||||
"Well it was getting a bit nippy...";
|
||||
"mmm... toasty!";
|
||||
}
|
||||
|
||||
type "death_slime"
|
||||
{
|
||||
"D'oh!";
|
||||
}
|
||||
|
||||
type "death_drown"
|
||||
{
|
||||
"Who needs air?";
|
||||
}
|
||||
|
||||
type "death_suicide"
|
||||
{
|
||||
DEATH_SUICIDE0;
|
||||
DEATH_SUICIDE1;
|
||||
DEATH_SUICIDE1;
|
||||
}
|
||||
|
||||
type "death_gauntlet"
|
||||
{
|
||||
DEATH_GAUNTLET0;
|
||||
DEATH_GAUNTLET1;
|
||||
DEATH_GAUNTLET1;
|
||||
}
|
||||
|
||||
type "death_rail"
|
||||
{
|
||||
DEATH_RAIL1;
|
||||
DEATH_RAIL1;
|
||||
DEATH_RAIL0;
|
||||
|
||||
}
|
||||
|
||||
type "death_bfg"
|
||||
{
|
||||
DEATH_BFG1;
|
||||
DEATH_BFG0;
|
||||
|
||||
}
|
||||
|
||||
type "death_insult"
|
||||
{
|
||||
"What the... how cheap!";
|
||||
"Back in my day, frags weren't so cheap.";
|
||||
}
|
||||
|
||||
type "death_praise"
|
||||
{
|
||||
0, " is death incarnate.";
|
||||
}
|
||||
|
||||
type "kill_rail"
|
||||
{
|
||||
KILL_RAIL0;
|
||||
KILL_RAIL1;
|
||||
}
|
||||
|
||||
type "kill_gauntlet"
|
||||
{
|
||||
KILL_GAUNTLET0;
|
||||
KILL_GAUNTLET1;
|
||||
|
||||
}
|
||||
|
||||
type "kill_telefrag"
|
||||
{
|
||||
TELEFRAGGED0;
|
||||
TELEFRAGGED1;
|
||||
}
|
||||
|
||||
type "kill_suicide"
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT1;
|
||||
}
|
||||
|
||||
type "kill_insult"
|
||||
{
|
||||
"Pathetic.";
|
||||
"tsk";
|
||||
"My ", family_member, " could do better.";
|
||||
}
|
||||
|
||||
type "kill_praise"
|
||||
{
|
||||
"Nice one, ", 0, ".";
|
||||
"Wow, ~you never saw that one coming, ", 0, ".";
|
||||
}
|
||||
|
||||
type "random_insult"
|
||||
{
|
||||
0, ", ~you suck!";
|
||||
0, " needs to stop calling my mom.";
|
||||
}
|
||||
|
||||
type "random_misc"
|
||||
{
|
||||
0, " gave my ~mom ", disease, ".";
|
||||
"Is it true that ", peeps, " is a bot?";
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 50
|
||||
//shotgun
|
||||
#define SGW 190
|
||||
//machinegun
|
||||
#define MGW 100
|
||||
//grenade launcher
|
||||
#define GLW 190
|
||||
//rocket launcher
|
||||
#define RLW 200
|
||||
//railgun
|
||||
#define RGW 160
|
||||
//bfg10k
|
||||
#define BFW 80
|
||||
//lightninggun
|
||||
#define LGW 190
|
||||
//plasmagun
|
||||
#define PGW 175
|
||||
//grapplinghook
|
||||
#define GRW 10
|
||||
//prox-launcher
|
||||
#define PXW 185
|
||||
//nailgun
|
||||
#define NGW 260
|
||||
//chaingun
|
||||
#define CGW 215
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "chars.h"
|
||||
|
||||
|
||||
skill 1
|
||||
{
|
||||
CHARACTERISTIC_NAME "Widowe"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 0.25
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/widowe_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 0.25
|
||||
CHARACTERISTIC_AIM_ACCURACY 0.25
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.25
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 90
|
||||
CHARACTERISTIC_REACTIONTIME 3.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/widowe_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "widowe"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.5
|
||||
CHARACTERISTIC_CHAT_MISC 0.5
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.5
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.5
|
||||
CHARACTERISTIC_CHAT_KILL 0.5
|
||||
CHARACTERISTIC_CHAT_DEATH 0.5
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.5
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.5
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.5
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.5
|
||||
CHARACTERISTIC_CHAT_REPLY 0.5
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 0.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 0.5
|
||||
CHARACTERISTIC_GRAPPLE_USER 0.5
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/widowe_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 0.25
|
||||
CHARACTERISTIC_SELFPRESERVATION 0.5
|
||||
CHARACTERISTIC_VENGEFULNESS 0.25
|
||||
CHARACTERISTIC_CAMPER 0.25
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 0.5
|
||||
CHARACTERISTIC_ALERTNESS 0.5
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.3
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.3
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.3
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 0.3
|
||||
}
|
||||
|
||||
skill 4
|
||||
{
|
||||
CHARACTERISTIC_NAME "Widowe"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/widowe_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 0.9
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 240
|
||||
CHARACTERISTIC_REACTIONTIME 1.75
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/widowe_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "widowe"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.1
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/widowe_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.5
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.5
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 0.75
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 0.75
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 0.75
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
|
||||
skill 5
|
||||
{
|
||||
CHARACTERISTIC_NAME "Widowe"
|
||||
CHARACTERISTIC_GENDER "female"
|
||||
CHARACTERISTIC_ATTACK_SKILL 1.0
|
||||
CHARACTERISTIC_WEAPONWEIGHTS "bots/widowe_w.c"
|
||||
CHARACTERISTIC_AIM_SKILL 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY 1.0
|
||||
CHARACTERISTIC_VIEW_FACTOR 1.0
|
||||
CHARACTERISTIC_VIEW_MAXCHANGE 360
|
||||
CHARACTERISTIC_REACTIONTIME 0.0
|
||||
|
||||
CHARACTERISTIC_CHAT_FILE "bots/widowe_t.c"
|
||||
CHARACTERISTIC_CHAT_NAME "widowe"
|
||||
CHARACTERISTIC_CHAT_CPM 400
|
||||
CHARACTERISTIC_CHAT_INSULT 0.1
|
||||
CHARACTERISTIC_CHAT_MISC 0.1
|
||||
CHARACTERISTIC_CHAT_STARTENDLEVEL 0.1
|
||||
CHARACTERISTIC_CHAT_ENTEREXITGAME 0.1
|
||||
CHARACTERISTIC_CHAT_KILL 0.1
|
||||
CHARACTERISTIC_CHAT_DEATH 0.1
|
||||
CHARACTERISTIC_CHAT_ENEMYSUICIDE 0.1
|
||||
CHARACTERISTIC_CHAT_HITTALKING 0.1
|
||||
CHARACTERISTIC_CHAT_HITNODEATH 0.1
|
||||
CHARACTERISTIC_CHAT_HITNOKILL 0.1
|
||||
CHARACTERISTIC_CHAT_RANDOM 0.1
|
||||
CHARACTERISTIC_CHAT_REPLY 0.1
|
||||
|
||||
CHARACTERISTIC_CROUCHER 0.0
|
||||
CHARACTERISTIC_JUMPER 1.0
|
||||
CHARACTERISTIC_WALKER 0.0
|
||||
CHARACTERISTIC_WEAPONJUMPING 1.0
|
||||
CHARACTERISTIC_GRAPPLE_USER 1.0
|
||||
|
||||
CHARACTERISTIC_ITEMWEIGHTS "bots/widowe_i.c"
|
||||
CHARACTERISTIC_AGGRESSION 1.0
|
||||
CHARACTERISTIC_SELFPRESERVATION 1.0
|
||||
CHARACTERISTIC_VENGEFULNESS 1.0
|
||||
CHARACTERISTIC_CAMPER 0.0
|
||||
|
||||
CHARACTERISTIC_EASY_FRAGGER 1.0
|
||||
CHARACTERISTIC_ALERTNESS 1.0
|
||||
|
||||
CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 0.7
|
||||
CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_RAILGUN 1.0
|
||||
CHARACTERISTIC_AIM_ACCURACY_BFG10K 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_PLASMAGUN 1.0
|
||||
CHARACTERISTIC_AIM_SKILL_BFG10K 1.0
|
||||
|
||||
CHARACTERISTIC_FIRETHROTTLE 1.0
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "inv.h"
|
||||
|
||||
|
||||
//health
|
||||
#define FPH 2
|
||||
//armor
|
||||
#define FPA 2
|
||||
//without the weapons
|
||||
//shotgun
|
||||
#define SGW 200
|
||||
//machinegun
|
||||
#define MGW 50
|
||||
//grenadelauncher
|
||||
#define GLW 400
|
||||
//rocket launcher
|
||||
#define RLW 400
|
||||
//rail gun
|
||||
#define RGW 260
|
||||
//bfg10k
|
||||
#define BFW 400
|
||||
//lightninggun
|
||||
#define LGW 50
|
||||
//plasmagun
|
||||
#define PGW 250
|
||||
//prox-launcher
|
||||
#define PXW 350
|
||||
//nailgun
|
||||
#define NGW 150
|
||||
//chaingun
|
||||
#define CGW 200
|
||||
|
||||
|
||||
|
||||
|
||||
//with the weapons
|
||||
//shotgun
|
||||
#define GSGW 50
|
||||
//machinegun
|
||||
#define GMGW 50
|
||||
//grenadelauncher
|
||||
#define GGLW 400
|
||||
//rocketlauncher
|
||||
#define GRLW 210
|
||||
//railgun
|
||||
#define GRGW 50
|
||||
//bfg10k
|
||||
#define GBFW 400
|
||||
//lightninggun
|
||||
#define GLGW 50
|
||||
//plasmagun
|
||||
#define GPGW 50
|
||||
//prox-launcher
|
||||
#define GPXW 200
|
||||
//failgun
|
||||
#define GNGW 100
|
||||
//chaingun
|
||||
#define GCGW 125
|
||||
//individual powerups
|
||||
//teleport
|
||||
#define TELW 190
|
||||
//medkit
|
||||
#define MEDW 50
|
||||
//quad-damage
|
||||
#define QW 500
|
||||
//envirosuit
|
||||
#define ENVW 50
|
||||
//haste
|
||||
#define HAW 50
|
||||
//invisibility
|
||||
#define INW 400
|
||||
//regeneration
|
||||
#define REGW 50
|
||||
//flight
|
||||
#define FLW 15
|
||||
//kamikaze
|
||||
#define KAMW 200
|
||||
//invulnerability
|
||||
#define IBW 150
|
||||
//portal
|
||||
#define PORW 300
|
||||
//scout
|
||||
#define SCW 100
|
||||
//guard
|
||||
#define GUW 200
|
||||
//doubler
|
||||
#define DUBW 100
|
||||
//ammo-regen
|
||||
#define AMRW 400
|
||||
//red-cube
|
||||
#define REDCW 200
|
||||
//blue-cube
|
||||
#define BLCW 200
|
||||
//ctf flag weight
|
||||
#define FGW 400
|
||||
|
||||
//
|
||||
#include "fuzi.c"
|
||||
@@ -0,0 +1,275 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
chat "Widowe"
|
||||
{
|
||||
//the teamplay.h file is included for all kinds of teamplay chats
|
||||
#include "teamplay.h"
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "game_enter" //initiated when the bot enters the game
|
||||
{
|
||||
"Hello.";
|
||||
HELLO1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "game_exit" //initiated when the bot exits the game
|
||||
{
|
||||
"Look at the ~time";
|
||||
GOODBYE1;
|
||||
GOODBYE0;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_start" //initiated when a new level starts
|
||||
{
|
||||
0, " it is time for some payback!";
|
||||
1, " you are going to have some pain in ", 4, ".";
|
||||
HELLO2;
|
||||
|
||||
// 0 = bot name
|
||||
} //end type
|
||||
type "level_end" //initiated when a level ends and the bot is not first and not last in the rankings
|
||||
{
|
||||
2, ", I let you win.";
|
||||
4, " has changed a lot, it is much faster now.";
|
||||
"Is it over yet?";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_victory" //initiated when a level ends and the bot is first in the rankings
|
||||
{
|
||||
3, " you need to practice more... and forget about winning against me.";
|
||||
LEVEL_END_VICTORY1;
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 3 = opponent in last place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
type "level_end_lose" //initiated when a level ends and the bot is last in the rankings
|
||||
{
|
||||
2, " cheated.";
|
||||
"I had a hang nail, so of course I lost.";
|
||||
"So much for my bluster...";
|
||||
"I felt bad for you so I let you win.";
|
||||
// 0 = bot name
|
||||
// 1 = random opponent
|
||||
// 2 = opponent in first place
|
||||
// 4 = level's title
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "hit_talking" //bot is hit while chat balloon is visible; lecture attacker on poor sportsmanship
|
||||
{
|
||||
0, ", didn't your mother ever tell you it was rude to interrupt a conversation?";
|
||||
"I am going to shove that ", 1, " down your throat if you do that again!";
|
||||
DEATH_TALKING;
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nodeath" //bot is hit by an opponent's weapon attack but didn't die; either praise or insult
|
||||
{
|
||||
1, " is not a good weapon, a ", weapon, " should be more your speed.";
|
||||
// 0 = shooter
|
||||
// 1 = weapon used by shooter
|
||||
} //end type
|
||||
type "hit_nokill" //bot hits an opponent but does not kill it
|
||||
{
|
||||
0, " must be cheating.";
|
||||
"Well that sucked...";
|
||||
"Note to self... turn off safety next ~time";
|
||||
// 0 = opponent
|
||||
} //end type
|
||||
type "enemy_suicide" //enemy of the bot commits suicide
|
||||
{
|
||||
"Stop smoking ", substance, " and maybe you won't kill yourself so often.";
|
||||
"Tired of life, ", 0, "? Give it up.";
|
||||
"I guess that beats dying of ", disease, "...";
|
||||
// 0 = enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "death_telefrag" //initiated when the bot is killed by a telefrag
|
||||
{
|
||||
"I hate praetorian impressions.";
|
||||
"My ", counselor, " warned about days like this.";
|
||||
"D'oh!";
|
||||
DEATH_TELEFRAGGED1;
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "death_cratered" //initiated when the bot is killed by taking "normal" falling damage
|
||||
{
|
||||
DEATH_FALLING0;
|
||||
"It didn't look that high from up there...";
|
||||
"*sigh*";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_lava" //initiated when the bot dies in lava
|
||||
{
|
||||
"Well... it beats a case of hypothermia.";
|
||||
"At least it is warm here";
|
||||
DEATH_SUICIDE1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_slime" //initiated when the bot dies in slime
|
||||
{
|
||||
"Green has never been my color...";
|
||||
DEATH_SLIME1;
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_drown" //initiated when the bot drowns
|
||||
{
|
||||
DEATH_DROWN0;
|
||||
"It isn't that difficult to just breath water...";
|
||||
"So why can't I breath water?";
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_suicide" //initiated when bot blows self up with a weapon or craters
|
||||
{
|
||||
DEATH_SUICIDE2;
|
||||
"So much for life and all of its cruel irony.";
|
||||
"It is just easier for ", 0, " this way.";
|
||||
|
||||
|
||||
// 0 = random opponent
|
||||
} //end type
|
||||
type "death_gauntlet" //initiated when the bot is killed by a gauntlet attack
|
||||
{
|
||||
"Unsanitary.";
|
||||
"What part of '~Don't touch me there' do you not understand?";
|
||||
DEATH_GAUNTLET1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Gauntlet)
|
||||
} //end type
|
||||
type "death_rail" //initiated when the bot is killed by a rail gun shot
|
||||
{
|
||||
DEATH_INSULT0;
|
||||
DEATH_FEM_INSULT1;
|
||||
DEATH_INSULT5;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to Railgun)
|
||||
} //end type
|
||||
type "death_bfg" //initiated when the bot died by a BFG
|
||||
{
|
||||
"Can't find a skill weapon? Or is it just that you suck?";
|
||||
"Over-compensating for something?";
|
||||
DEATH_BFG0;
|
||||
DEATH_BFG2;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy (NOTE: always set to BFG10K)
|
||||
} //end type
|
||||
type "death_insult" //insult initiated when the bot died
|
||||
{
|
||||
curse;
|
||||
"This is far more painful than it looks.";
|
||||
"One day, ", 0, " you me and a ", weapon, " are going to have a discussion.";
|
||||
"Is that the best you can do?";
|
||||
DEATH_INSULT2;
|
||||
DEATH_INSULT0;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
type "death_praise" //praise initiated when the bot died
|
||||
{
|
||||
"Not bad, ", 0, ", have you been practicing?";
|
||||
"I never saw it coming.";
|
||||
D_PRAISE0;
|
||||
D_PRAISE1;
|
||||
// 0 = enemy name
|
||||
// 1 = weapon used by enemy
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "kill_rail" //initiated when the bot kills someone with rail gun
|
||||
{
|
||||
0, ", you should stay down...";
|
||||
"*sigh* if only this was challenging.";
|
||||
"I love this gun!";
|
||||
"Way too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_gauntlet" //initiated when the bot kills someone with gauntlet
|
||||
{
|
||||
"LOL!";
|
||||
"Too easy";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_telefrag" //initiated when the bot telefragged someone
|
||||
{
|
||||
"LOL!";
|
||||
"Aww man... now I have to take a bath to get the brains out.";
|
||||
"Does anyone have a quick way of getting brains out of your hair?";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_insult" //insult initiated when the bot killed someone
|
||||
{
|
||||
KILL_INSULT4;
|
||||
"Why do you even bother?";
|
||||
"This is why the upper classes are called the 'ruling elite.'";
|
||||
"Why do the lower classes think they can match someone of my caliber?";
|
||||
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
type "kill_praise" //praise initiated when the bot killed someone
|
||||
{
|
||||
"You are getting better, ", 0, ", keep it up and you might actually win something.";
|
||||
"That was a challenge.";
|
||||
// 0 = enemy name
|
||||
} //end type
|
||||
//======================================================
|
||||
//======================================================
|
||||
type "random_insult" //insult initiated randomly (just when the bot feels like it)
|
||||
{
|
||||
TAUNT0;
|
||||
TAUNT_FEM0;
|
||||
TAUNT1;
|
||||
curse;
|
||||
"You should give up your ", substance, " addiction by next ", month, ".";
|
||||
"I saw those pictures of ", 0, " and a ", animal, " posted on the web last night... Like, ewww!";
|
||||
immaturity01;
|
||||
"Your ", family_member, " needs to stop calling me.";
|
||||
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
type "random_misc" //miscellanous chats initiated randomly
|
||||
{
|
||||
GRRLTALK0;
|
||||
MISC4;
|
||||
"Has anyone tried out the new ", 5, "? Is it worth the upgrade?";
|
||||
MISC1;
|
||||
// 0 = name of randomly chosen player
|
||||
// 1 = name of the last player killed by this bot
|
||||
// 4 = level's title
|
||||
// 5 = random weapon from weapon list
|
||||
} //end type
|
||||
} //end chat
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
/*weapon defines weights 10-500
|
||||
try to keep it balanced*/
|
||||
|
||||
#include "inv.h"
|
||||
//gauntlet
|
||||
#define GTW 25
|
||||
//shotgun
|
||||
#define SGW 130
|
||||
//machinegun
|
||||
#define MGW 90
|
||||
//grenade launcher
|
||||
#define GLW 125
|
||||
//rocket launcher
|
||||
#define RLW 190
|
||||
//railgun
|
||||
#define RGW 200
|
||||
//bfg10k
|
||||
#define BFW 105
|
||||
//lightninggun
|
||||
#define LGW 120
|
||||
//plasmagun
|
||||
#define PGW 190
|
||||
//grapplinghook
|
||||
#define GRW 10
|
||||
//prox-launcher
|
||||
#define PXW 130
|
||||
//nailgun
|
||||
#define NGW 160
|
||||
//chaingun
|
||||
#define CGW 180
|
||||
|
||||
#include "fuzw.c"
|
||||
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 1999-2005 Id Software, Inc.
|
||||
|
||||
This file is part of Quake III Arena source code.
|
||||
|
||||
Quake III Arena source code is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Quake III Arena source code is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
//========================================================
|
||||
//========================================================
|
||||
//name
|
||||
#define CHARACTERISTIC_NAME 0 //string
|
||||
//gender of the bot
|
||||
#define CHARACTERISTIC_GENDER 1 //string ("male", "female", "it")
|
||||
//attack skill
|
||||
// > 0.0 && < 0.2 = don't move
|
||||
// > 0.3 && < 1.0 = aim at enemy during retreat
|
||||
// > 0.0 && < 0.4 = only move forward/backward
|
||||
// >= 0.4 && < 1.0 = circle strafing
|
||||
// > 0.7 && < 1.0 = random strafe direction change
|
||||
#define CHARACTERISTIC_ATTACK_SKILL 2 //float [0, 1]
|
||||
//weapon weight file
|
||||
#define CHARACTERISTIC_WEAPONWEIGHTS 3 //string
|
||||
//view angle difference to angle change factor
|
||||
#define CHARACTERISTIC_VIEW_FACTOR 4 //float <0, 1]
|
||||
//maximum view angle change
|
||||
#define CHARACTERISTIC_VIEW_MAXCHANGE 5 //float [1, 360]
|
||||
//reaction time in seconds
|
||||
#define CHARACTERISTIC_REACTIONTIME 6 //float [0, 5]
|
||||
//accuracy when aiming
|
||||
#define CHARACTERISTIC_AIM_ACCURACY 7 //float [0, 1]
|
||||
//weapon specific aim accuracy
|
||||
#define CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN 8 //float [0, 1]
|
||||
#define CHARACTERISTIC_AIM_ACCURACY_SHOTGUN 9 //float [0, 1]
|
||||
#define CHARACTERISTIC_AIM_ACCURACY_ROCKETLAUNCHER 10 //float [0, 1]
|
||||
#define CHARACTERISTIC_AIM_ACCURACY_GRENADELAUNCHER 11 //float [0, 1]
|
||||
#define CHARACTERISTIC_AIM_ACCURACY_LIGHTNING 12
|
||||
#define CHARACTERISTIC_AIM_ACCURACY_PLASMAGUN 13 //float [0, 1]
|
||||
#define CHARACTERISTIC_AIM_ACCURACY_RAILGUN 14
|
||||
#define CHARACTERISTIC_AIM_ACCURACY_BFG10K 15 //float [0, 1]
|
||||
//skill when aiming
|
||||
// > 0.0 && < 0.9 = aim is affected by enemy movement
|
||||
// > 0.4 && <= 0.8 = enemy linear leading
|
||||
// > 0.8 && <= 1.0 = enemy exact movement leading
|
||||
// > 0.5 && <= 1.0 = prediction shots when enemy is not visible
|
||||
// > 0.6 && <= 1.0 = splash damage by shooting nearby geometry
|
||||
#define CHARACTERISTIC_AIM_SKILL 16 //float [0, 1]
|
||||
//weapon specific aim skill
|
||||
#define CHARACTERISTIC_AIM_SKILL_ROCKETLAUNCHER 17 //float [0, 1]
|
||||
#define CHARACTERISTIC_AIM_SKILL_GRENADELAUNCHER 18 //float [0, 1]
|
||||
#define CHARACTERISTIC_AIM_SKILL_PLASMAGUN 19 //float [0, 1]
|
||||
#define CHARACTERISTIC_AIM_SKILL_BFG10K 20 //float [0, 1]
|
||||
//========================================================
|
||||
//chat
|
||||
//========================================================
|
||||
//file with chats
|
||||
#define CHARACTERISTIC_CHAT_FILE 21 //string
|
||||
//name of the chat character
|
||||
#define CHARACTERISTIC_CHAT_NAME 22 //string
|
||||
//characters per minute type speed
|
||||
#define CHARACTERISTIC_CHAT_CPM 23 //integer [1, 4000]
|
||||
//tendency to insult/praise
|
||||
#define CHARACTERISTIC_CHAT_INSULT 24 //float [0, 1]
|
||||
//tendency to chat misc
|
||||
#define CHARACTERISTIC_CHAT_MISC 25 //float [0, 1]
|
||||
//tendency to chat at start or end of level
|
||||
#define CHARACTERISTIC_CHAT_STARTENDLEVEL 26 //float [0, 1]
|
||||
//tendency to chat entering or exiting the game
|
||||
#define CHARACTERISTIC_CHAT_ENTEREXITGAME 27 //float [0, 1]
|
||||
//tendency to chat when killed someone
|
||||
#define CHARACTERISTIC_CHAT_KILL 28 //float [0, 1]
|
||||
//tendency to chat when died
|
||||
#define CHARACTERISTIC_CHAT_DEATH 29 //float [0, 1]
|
||||
//tendency to chat when enemy suicides
|
||||
#define CHARACTERISTIC_CHAT_ENEMYSUICIDE 30 //float [0, 1]
|
||||
//tendency to chat when hit while talking
|
||||
#define CHARACTERISTIC_CHAT_HITTALKING 31 //float [0, 1]
|
||||
//tendency to chat when bot was hit but didn't dye
|
||||
#define CHARACTERISTIC_CHAT_HITNODEATH 32 //float [0, 1]
|
||||
//tendency to chat when bot hit the enemy but enemy didn't dye
|
||||
#define CHARACTERISTIC_CHAT_HITNOKILL 33 //float [0, 1]
|
||||
//tendency to randomly chat
|
||||
#define CHARACTERISTIC_CHAT_RANDOM 34 //float [0, 1]
|
||||
//tendency to reply
|
||||
#define CHARACTERISTIC_CHAT_REPLY 35 //float [0, 1]
|
||||
//========================================================
|
||||
//movement
|
||||
//========================================================
|
||||
//tendency to crouch
|
||||
#define CHARACTERISTIC_CROUCHER 36 //float [0, 1]
|
||||
//tendency to jump
|
||||
#define CHARACTERISTIC_JUMPER 37 //float [0, 1]
|
||||
//tendency to walk
|
||||
#define CHARACTERISTIC_WALKER 48 //float [0, 1]
|
||||
//tendency to jump using a weapon
|
||||
#define CHARACTERISTIC_WEAPONJUMPING 38 //float [0, 1]
|
||||
//tendency to use the grapple hook when available
|
||||
#define CHARACTERISTIC_GRAPPLE_USER 39 //float [0, 1] //use this!!
|
||||
//========================================================
|
||||
//goal
|
||||
//========================================================
|
||||
//item weight file
|
||||
#define CHARACTERISTIC_ITEMWEIGHTS 40 //string
|
||||
//the aggression of the bot
|
||||
#define CHARACTERISTIC_AGGRESSION 41 //float [0, 1]
|
||||
//the self preservation of the bot (rockets near walls etc.)
|
||||
#define CHARACTERISTIC_SELFPRESERVATION 42 //float [0, 1]
|
||||
//how likely the bot is to take revenge
|
||||
#define CHARACTERISTIC_VENGEFULNESS 43 //float [0, 1] //use this!!
|
||||
//tendency to camp
|
||||
#define CHARACTERISTIC_CAMPER 44 //float [0, 1]
|
||||
//========================================================
|
||||
//========================================================
|
||||
//tendency to get easy frags
|
||||
#define CHARACTERISTIC_EASY_FRAGGER 45 //float [0, 1]
|
||||
//how alert the bot is (view distance)
|
||||
#define CHARACTERISTIC_ALERTNESS 46 //float [0, 1]
|
||||
//how much the bot fires it's weapon
|
||||
#define CHARACTERISTIC_FIRETHROTTLE 47 //float [0, 1]
|
||||
|
||||
@@ -0,0 +1,692 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
|
||||
#define ARMOR 20
|
||||
#define AMMO 20
|
||||
#define HEALTH 20
|
||||
#define POWERUP 20
|
||||
#define WEAPON 20
|
||||
|
||||
//breaks compatibility with the existing q3a bots, sorry.
|
||||
#define FP(x) (x < 0 ? 1 : x)
|
||||
#define ARS(x) balance($evalfloat(FP(FPA/x)), $evalfloat(FP(FPA/x-ARMOR)), $evalfloat(FP(FPA/x+ARMOR)))
|
||||
#define AS(x) balance($evalfloat(FP(x)), $evalfloat(FP(x/AMMO)), $evalfloat(FP(x*AMMO)))
|
||||
#define HS(x) balance($evalfloat(FP(FPH/x)), $evalfloat(FP(FPH/x-HEALTH)), $evalfloat(FP(FPH/x+HEALTH)))
|
||||
#define PS(x) balance($evalfloat(FP(x)), $evalfloat(FP(x/POWERUP)), $evalfloat(FP(x*POWERUP)))
|
||||
#define WS(x) balance($evalfloat(FP(x)), $evalfloat(FP(x/WEAPON)), $evalfloat(FP(x*WEAPON)))
|
||||
|
||||
|
||||
weight "item_armor_shard"
|
||||
{
|
||||
switch(INVENTORY_SCOUT)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
switch(INVENTORY_ARMOR)
|
||||
{
|
||||
case 10: return ARS(20);
|
||||
case 20: return ARS(20);
|
||||
case 30: return ARS(20);
|
||||
case 40: return ARS(19);
|
||||
case 50: return ARS(19);
|
||||
case 60: return ARS(19);
|
||||
case 70: return ARS(19);
|
||||
case 80: return ARS(18);
|
||||
case 90: return ARS(18);
|
||||
case 100: return ARS(15);
|
||||
case 110: return ARS(15);
|
||||
case 120: return ARS(15);
|
||||
case 130: return ARS(15);
|
||||
case 140: return ARS(12);
|
||||
case 150: return ARS(12);
|
||||
case 160: return ARS(12);
|
||||
case 170: return ARS(12);
|
||||
case 180: return ARS(12);
|
||||
case 190: return ARS(11);
|
||||
case 200: return ARS(11);
|
||||
default: return ARS(1);
|
||||
}
|
||||
}
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "item_armor_combat"
|
||||
{
|
||||
switch(INVENTORY_SCOUT)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
switch(INVENTORY_ARMOR)
|
||||
{
|
||||
case 10: return ARS(80);
|
||||
case 20: return ARS(70);
|
||||
case 30: return ARS(65);
|
||||
case 40: return ARS(65);
|
||||
case 50: return ARS(65);
|
||||
case 60: return ARS(60);
|
||||
case 70: return ARS(60);
|
||||
case 80: return ARS(40);
|
||||
case 90: return ARS(40);
|
||||
case 100: return ARS(40);
|
||||
case 110: return ARS(30);
|
||||
case 120: return ARS(30);
|
||||
case 130: return ARS(30);
|
||||
case 140: return ARS(25);
|
||||
case 150: return ARS(25);
|
||||
case 160: return ARS(25);
|
||||
case 170: return ARS(25);
|
||||
case 180: return ARS(20);
|
||||
case 190: return ARS(20);
|
||||
case 200: return ARS(20);
|
||||
default: return ARS(1);
|
||||
}
|
||||
}
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "item_armor_body"
|
||||
{
|
||||
switch(INVENTORY_SCOUT)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
switch(INVENTORY_ARMOR)
|
||||
{
|
||||
case 10: return ARS(100);
|
||||
case 20: return ARS(95);
|
||||
case 30: return ARS(95);
|
||||
case 40: return ARS(95);
|
||||
case 50: return ARS(90);
|
||||
case 60: return ARS(60);
|
||||
case 70: return ARS(60);
|
||||
case 80: return ARS(55);
|
||||
case 90: return ARS(55);
|
||||
case 100: return ARS(50);
|
||||
case 110: return ARS(40);
|
||||
case 120: return ARS(40);
|
||||
case 130: return ARS(35);
|
||||
case 140: return ARS(25);
|
||||
case 150: return ARS(15);
|
||||
case 160: return ARS(15);
|
||||
case 170: return ARS(15);
|
||||
case 180: return ARS(10);
|
||||
case 190: return ARS(10);
|
||||
case 200: return ARS(10);
|
||||
default: return ARS(1);
|
||||
}
|
||||
}
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "item_health_small"
|
||||
{
|
||||
switch(INVENTORY_HEALTH)
|
||||
{
|
||||
case 10: return HS(100);
|
||||
case 20: return HS(90);
|
||||
case 30: return HS(85);
|
||||
case 40: return HS(80);
|
||||
case 50: return HS(75);
|
||||
case 60: return HS(70);
|
||||
case 70: return HS(65);
|
||||
case 80: return HS(60);
|
||||
case 90: return HS(55);
|
||||
case 100: return HS(50);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "item_health"
|
||||
{
|
||||
switch(INVENTORY_HEALTH)
|
||||
{
|
||||
case 10: return HS(110);
|
||||
case 20: return HS(100);
|
||||
case 30: return HS(90);
|
||||
case 40: return HS(80);
|
||||
case 50: return HS(70);
|
||||
case 60: return HS(60);
|
||||
case 70: return HS(50);
|
||||
case 80: return HS(40);
|
||||
case 90: return HS(30);
|
||||
case 100: return HS(30);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "item_health_large"
|
||||
{
|
||||
|
||||
switch(INVENTORY_HEALTH)
|
||||
{
|
||||
case 10: return HS(120);
|
||||
case 20: return HS(110);
|
||||
case 30: return HS(100);
|
||||
case 40: return HS(90);
|
||||
case 50: return HS(80);
|
||||
case 60: return HS(70);
|
||||
case 70: return HS(60);
|
||||
case 80: return HS(50);
|
||||
case 90: return HS(40);
|
||||
case 100: return HS(30);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "item_health_mega"
|
||||
{
|
||||
switch(INVENTORY_HEALTH)
|
||||
{
|
||||
case 10: return HS(150);
|
||||
case 20: return HS(120);
|
||||
case 30: return HS(110);
|
||||
case 40: return HS(100);
|
||||
case 50: return HS(90);
|
||||
case 60: return HS(90);
|
||||
case 70: return HS(80);
|
||||
case 80: return HS(80);
|
||||
case 90: return HS(70);
|
||||
case 100: return HS(60);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "weapon_shotgun_mp"
|
||||
{
|
||||
switch(INVENTORY_SHOTGUN)
|
||||
{
|
||||
case 1: return WS(SGW);
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
weight "weapon_machinegun_mp"
|
||||
{
|
||||
switch(INVENTORY_MACHINEGUN)
|
||||
{
|
||||
case 1: return WS(MGW);
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
weight "weapon_grenadelauncher_mp"
|
||||
{
|
||||
switch(INVENTORY_GRENADELAUNCHER)
|
||||
{
|
||||
case 1: return WS(GLW);
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
weight "weapon_rocketlauncher_mp"
|
||||
{
|
||||
switch(INVENTORY_ROCKETLAUNCHER)
|
||||
{
|
||||
case 1: return WS(RLW);
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
weight "weapon_lightning_mp"
|
||||
{
|
||||
switch(INVENTORY_LIGHTNING)
|
||||
{
|
||||
case 1: return WS(LGW);
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
weight "weapon_railgun_mp"
|
||||
{
|
||||
switch(INVENTORY_RAILGUN)
|
||||
{
|
||||
case 1: return WS(RGW);
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
weight "weapon_plasmagun_mp"
|
||||
{
|
||||
switch(INVENTORY_PLASMAGUN)
|
||||
{
|
||||
case 1: return WS(PGW);
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
weight "weapon_bfg_mp"
|
||||
{
|
||||
switch(INVENTORY_BFG10K)
|
||||
{
|
||||
case 1: return WS(BFW);
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
weight "weapon_nailgun_mp"
|
||||
{
|
||||
switch(INVENTORY_NAILGUN)
|
||||
{
|
||||
case 1: return WS(NGW);
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
weight "weapon_prox_launcher_mp"
|
||||
{
|
||||
switch(INVENTORY_PROXLAUNCHER)
|
||||
{
|
||||
case 1: return WS(PXW);
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
weight "weapon_chaingun"
|
||||
{
|
||||
switch(INVENTORY_CHAINGUN)
|
||||
{
|
||||
case 1: return WS(CGW);
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
weight "ammo_shells"
|
||||
{
|
||||
switch(INVENTORY_SHELLS)
|
||||
{
|
||||
case 20: return AS(30);
|
||||
case 40: return AS(30);
|
||||
case 60: return AS(11);
|
||||
case 80: return AS(11);
|
||||
case 100: return AS(11);
|
||||
case 120: return AS(11);
|
||||
case 140: return AS(11);
|
||||
case 160: return AS(11);
|
||||
case 180: return AS(11);
|
||||
case 200: return AS(11);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "ammo_bullets"
|
||||
{
|
||||
switch(INVENTORY_BULLETS)
|
||||
{
|
||||
case 20: return AS(30);
|
||||
case 40: return AS(30);
|
||||
case 60: return AS(30);
|
||||
case 80: return AS(11);
|
||||
case 100: return AS(11);
|
||||
case 120: return AS(11);
|
||||
case 140: return AS(11);
|
||||
case 160: return AS(11);
|
||||
case 180: return AS(11);
|
||||
case 200: return AS(11);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "ammo_grenades"
|
||||
{
|
||||
switch(INVENTORY_GRENADES)
|
||||
{
|
||||
case 20: return AS(30);
|
||||
case 40: return AS(30);
|
||||
case 60: return AS(11);
|
||||
case 80: return AS(11);
|
||||
case 100: return AS(11);
|
||||
case 120: return AS(11);
|
||||
case 140: return AS(11);
|
||||
case 160: return AS(11);
|
||||
case 180: return AS(11);
|
||||
case 200: return AS(11);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "ammo_cells"
|
||||
{
|
||||
switch(INVENTORY_CELLS)
|
||||
{
|
||||
case 20: return AS(30);
|
||||
case 40: return AS(30);
|
||||
case 60: return AS(30);
|
||||
case 80: return AS(30);
|
||||
case 100: return AS(11);
|
||||
case 120: return AS(11);
|
||||
case 140: return AS(11);
|
||||
case 160: return AS(11);
|
||||
case 180: return AS(11);
|
||||
case 200: return AS(11);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "ammo_lightning"
|
||||
{
|
||||
switch(INVENTORY_LIGHTNINGAMMO)
|
||||
{
|
||||
case 20: return AS(30);
|
||||
case 40: return AS(30);
|
||||
case 60: return AS(30);
|
||||
case 80: return AS(30);
|
||||
case 100: return AS(11);
|
||||
case 120: return AS(11);
|
||||
case 140: return AS(11);
|
||||
case 160: return AS(11);
|
||||
case 180: return AS(11);
|
||||
case 200: return AS(11);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "ammo_rockets"
|
||||
{
|
||||
switch(INVENTORY_ROCKETS)
|
||||
{
|
||||
case 20: return AS(30);
|
||||
case 40: return AS(30);
|
||||
case 60: return AS(11);
|
||||
case 80: return AS(11);
|
||||
case 100: return AS(11);
|
||||
case 120: return AS(11);
|
||||
case 140: return AS(11);
|
||||
case 160: return AS(11);
|
||||
case 180: return AS(11);
|
||||
case 200: return AS(11);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "ammo_slugs"
|
||||
{
|
||||
switch(INVENTORY_SLUGS)
|
||||
{
|
||||
case 20: return AS(30);
|
||||
case 40: return AS(30);
|
||||
case 60: return AS(11);
|
||||
case 80: return AS(11);
|
||||
case 100: return AS(11);
|
||||
case 120: return AS(11);
|
||||
case 140: return AS(11);
|
||||
case 160: return AS(11);
|
||||
case 180: return AS(11);
|
||||
case 200: return AS(11);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "ammo_bfg"
|
||||
{
|
||||
switch(INVENTORY_BFGAMMO)
|
||||
{
|
||||
case 20: return AS(30);
|
||||
case 40: return AS(30);
|
||||
case 60: return AS(11);
|
||||
case 80: return AS(11);
|
||||
case 100: return AS(11);
|
||||
case 120: return AS(11);
|
||||
case 140: return AS(11);
|
||||
case 160: return AS(11);
|
||||
case 180: return AS(11);
|
||||
case 200: return AS(11);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
weight "ammo_nails"
|
||||
{
|
||||
switch(INVENTORY_NAILS)
|
||||
{
|
||||
case 20: return AS(30);
|
||||
case 40: return AS(30);
|
||||
case 60: return AS(11);
|
||||
case 80: return AS(11);
|
||||
case 100: return AS(11);
|
||||
case 120: return AS(11);
|
||||
case 140: return AS(11);
|
||||
case 160: return AS(11);
|
||||
case 180: return AS(11);
|
||||
case 200: return AS(11);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "ammo_mines"
|
||||
{
|
||||
switch(INVENTORY_MINES)
|
||||
{
|
||||
case 20: return AS(30);
|
||||
case 40: return AS(11);
|
||||
case 60: return AS(11);
|
||||
case 80: return AS(11);
|
||||
case 100: return AS(11);
|
||||
case 120: return AS(11);
|
||||
case 140: return AS(11);
|
||||
case 160: return AS(11);
|
||||
case 180: return AS(11);
|
||||
case 200: return AS(11);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "ammo_belt"
|
||||
{
|
||||
switch(INVENTORY_BELT)
|
||||
{
|
||||
case 20: return AS(30);
|
||||
case 40: return AS(11);
|
||||
case 60: return AS(11);
|
||||
case 80: return AS(11);
|
||||
case 100: return AS(11);
|
||||
case 120: return AS(11);
|
||||
case 140: return AS(11);
|
||||
case 160: return AS(11);
|
||||
case 180: return AS(11);
|
||||
case 200: return AS(11);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//needs work
|
||||
|
||||
weight "holdable_teleporter"
|
||||
{
|
||||
switch(INVENTORY_TELEPORTER)
|
||||
{
|
||||
case 1: return PS(TELW);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "holdable_medkit"
|
||||
{
|
||||
switch(INVENTORY_TELEPORTER)
|
||||
{
|
||||
case 1: return PS(MEDW);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "holdable_kamikaze"
|
||||
{
|
||||
switch(INVENTORY_TELEPORTER)
|
||||
{
|
||||
case 1: return PS(KAMW);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "holdable_portal"
|
||||
{
|
||||
switch(INVENTORY_TELEPORTER)
|
||||
{
|
||||
case 1: return PS(PORW);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "holdable_invulnerability"
|
||||
{
|
||||
switch(INVENTORY_TELEPORTER)
|
||||
{
|
||||
case 1: return PS(IBW);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "item_quad"
|
||||
{
|
||||
return PS(QW);
|
||||
}
|
||||
|
||||
weight "item_enviro"
|
||||
{
|
||||
return PS(ENVW);
|
||||
}
|
||||
|
||||
weight "item_haste"
|
||||
{
|
||||
return PS(HAW);
|
||||
}
|
||||
|
||||
weight "item_invisibility"
|
||||
{
|
||||
return PS(INW);
|
||||
}
|
||||
|
||||
weight "item_regen"
|
||||
{
|
||||
return PS(REGW);
|
||||
}
|
||||
|
||||
weight "item_flight"
|
||||
{
|
||||
return PS(FLW);
|
||||
}
|
||||
|
||||
weight "item_scout"
|
||||
{
|
||||
switch(INVENTORY_SCOUT)
|
||||
{
|
||||
case 1: return PS(SCW);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "item_guard"
|
||||
{
|
||||
switch(INVENTORY_SCOUT)
|
||||
{
|
||||
case 1: return PS(GUW);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "item_doubler"
|
||||
{
|
||||
switch(INVENTORY_SCOUT)
|
||||
{
|
||||
case 1: return PS(DUBW);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
weight "item_ammoregen"
|
||||
{
|
||||
switch(INVENTORY_SCOUT)
|
||||
{
|
||||
case 1: return PS(AMRW);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//=============================================
|
||||
// This is only used to pickup dropped CTF
|
||||
// flags now. The logic in here makes no
|
||||
// sense since the bot has specific CTF AI.
|
||||
// yet without it the bots barely move towards
|
||||
// the opposing flags due to low flag weights.
|
||||
//=============================================
|
||||
|
||||
weight "team_CTF_redflag"
|
||||
{
|
||||
switch(INVENTORY_REDFLAG)
|
||||
{
|
||||
case 1: return FGW;
|
||||
default: return 300;
|
||||
}
|
||||
}
|
||||
|
||||
weight "team_CTF_blueflag"
|
||||
{
|
||||
switch(INVENTORY_BLUEFLAG)
|
||||
{
|
||||
case 1: return FGW;
|
||||
default: return 300;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
weight "team_CTF_neutralflag"
|
||||
{
|
||||
return FGW;
|
||||
}
|
||||
|
||||
weight "item_redcube"
|
||||
{
|
||||
return REDCW;
|
||||
}
|
||||
|
||||
weight "item_bluecube"
|
||||
{
|
||||
return BLCW;
|
||||
}
|
||||
|
||||
weight "item_botroam"
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
weight "team_dom_pointWhite"
|
||||
{
|
||||
return 1000;
|
||||
}
|
||||
|
||||
weight "team_dom_pointRed"
|
||||
{
|
||||
return 700;
|
||||
}
|
||||
|
||||
weight "team_dom_pointBlue"
|
||||
{
|
||||
return 700;
|
||||
}
|
||||
@@ -0,0 +1,282 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2006 Dmn_clown (aka: Bob Isaac (rjisaac@gmail.com))
|
||||
|
||||
This file is part of Open Arena and is based upon Mr. Elusive's fuzzy logic
|
||||
system found in Quake 3 Arena.
|
||||
|
||||
Open Arena is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Open Arena is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
weight "BFG10K"
|
||||
{
|
||||
switch(INVENTORY_BFG10K)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(INVENTORY_BFGAMMO)
|
||||
{
|
||||
case 1: return 0;
|
||||
default: return BFW;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight "Chaingun"
|
||||
{
|
||||
switch(INVENTORY_CHAINGUN)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(INVENTORY_BELT)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(ENEMY_HORIZONTAL_DIST)
|
||||
{
|
||||
case 900: return CGW;
|
||||
default: return $evalint(CGW*0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
weight "Gauntlet"
|
||||
{
|
||||
switch(INVENTORY_GAUNTLET)
|
||||
{
|
||||
case 1: return 0;
|
||||
default: return GTW;
|
||||
}
|
||||
}
|
||||
|
||||
weight "Grappling Hook"
|
||||
{
|
||||
switch(INVENTORY_GRAPPLINGHOOK)
|
||||
{
|
||||
case 1: return 0;
|
||||
default: return GRW;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
weight "Grenade Launcher"
|
||||
{
|
||||
switch(INVENTORY_GRENADELAUNCHER)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(INVENTORY_GRENADES)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(ENEMY_HORIZONTAL_DIST)
|
||||
{
|
||||
case 600: return GLW;
|
||||
default: return $evalint(GLW*0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight "Lightning Gun"
|
||||
{
|
||||
switch(INVENTORY_LIGHTNING)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(INVENTORY_LIGHTNINGAMMO)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(ENEMY_HORIZONTAL_DIST)
|
||||
{
|
||||
case 768: return LGW;
|
||||
default: return $evalint(LGW*0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight "Machinegun"
|
||||
{
|
||||
switch(INVENTORY_MACHINEGUN)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(INVENTORY_BULLETS)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(ENEMY_HORIZONTAL_DIST)
|
||||
{
|
||||
case 800: return MGW;
|
||||
default: return $evalint(MGW*0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight "Nailgun"
|
||||
{
|
||||
switch(INVENTORY_NAILGUN)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(INVENTORY_NAILS)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(ENEMY_HORIZONTAL_DIST)
|
||||
{
|
||||
case 800: return NGW;
|
||||
default: return $evalint(NGW*0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight "Plasma Gun"
|
||||
{
|
||||
switch(INVENTORY_PLASMAGUN)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(INVENTORY_CELLS)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(ENEMY_HORIZONTAL_DIST)
|
||||
{
|
||||
case 2000: return PGW;
|
||||
default: return $evalint(PGW*0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight "Prox Launcher"
|
||||
{
|
||||
switch(INVENTORY_PROXLAUNCHER)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(INVENTORY_MINES)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(ENEMY_HORIZONTAL_DIST)
|
||||
{
|
||||
case 200: return PXW;
|
||||
default: return $evalint(PXW*0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight "Railgun"
|
||||
{
|
||||
switch(INVENTORY_RAILGUN)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(INVENTORY_SLUGS)
|
||||
{
|
||||
case 1: return 0;
|
||||
default: return RGW;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
weight "Rocket Launcher"
|
||||
{
|
||||
switch(INVENTORY_ROCKETLAUNCHER)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(INVENTORY_ROCKETS)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(ENEMY_HORIZONTAL_DIST)
|
||||
{
|
||||
case 4000: return RLW;
|
||||
default: return $evalint(RLW*0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
weight "Shotgun"
|
||||
{
|
||||
switch(INVENTORY_SHOTGUN)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(INVENTORY_SHELLS)
|
||||
{
|
||||
case 1: return 0;
|
||||
default:
|
||||
{
|
||||
switch(ENEMY_HORIZONTAL_DIST)
|
||||
{
|
||||
case 600: return SGW;
|
||||
default: return $evalint(SGW*0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,184 @@
|
||||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 1999-2005 Id Software, Inc.
|
||||
|
||||
This file is part of Quake III Arena source code.
|
||||
|
||||
Quake III Arena source code is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Quake III Arena source code is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#define INVENTORY_NONE 0
|
||||
//armor
|
||||
#define INVENTORY_ARMOR 1
|
||||
//weapons
|
||||
#define INVENTORY_GAUNTLET 4
|
||||
#define INVENTORY_SHOTGUN 5
|
||||
#define INVENTORY_MACHINEGUN 6
|
||||
#define INVENTORY_GRENADELAUNCHER 7
|
||||
#define INVENTORY_ROCKETLAUNCHER 8
|
||||
#define INVENTORY_LIGHTNING 9
|
||||
#define INVENTORY_RAILGUN 10
|
||||
#define INVENTORY_PLASMAGUN 11
|
||||
#define INVENTORY_BFG10K 13
|
||||
#define INVENTORY_GRAPPLINGHOOK 14
|
||||
#define INVENTORY_NAILGUN 15
|
||||
#define INVENTORY_PROXLAUNCHER 16
|
||||
#define INVENTORY_CHAINGUN 17
|
||||
//ammo
|
||||
#define INVENTORY_SHELLS 18
|
||||
#define INVENTORY_BULLETS 19
|
||||
#define INVENTORY_GRENADES 20
|
||||
#define INVENTORY_CELLS 21
|
||||
#define INVENTORY_LIGHTNINGAMMO 22
|
||||
#define INVENTORY_ROCKETS 23
|
||||
#define INVENTORY_SLUGS 24
|
||||
#define INVENTORY_BFGAMMO 25
|
||||
#define INVENTORY_NAILS 26
|
||||
#define INVENTORY_MINES 27
|
||||
#define INVENTORY_BELT 28
|
||||
//powerups
|
||||
#define INVENTORY_HEALTH 29
|
||||
#define INVENTORY_TELEPORTER 30
|
||||
#define INVENTORY_MEDKIT 31
|
||||
#define INVENTORY_KAMIKAZE 32
|
||||
#define INVENTORY_PORTAL 33
|
||||
#define INVENTORY_INVULNERABILITY 34
|
||||
#define INVENTORY_QUAD 35
|
||||
#define INVENTORY_ENVIRONMENTSUIT 36
|
||||
#define INVENTORY_HASTE 37
|
||||
#define INVENTORY_INVISIBILITY 38
|
||||
#define INVENTORY_REGEN 39
|
||||
#define INVENTORY_FLIGHT 40
|
||||
#define INVENTORY_SCOUT 41
|
||||
#define INVENTORY_GUARD 42
|
||||
#define INVENTORY_DOUBLER 43
|
||||
#define INVENTORY_AMMOREGEN 44
|
||||
|
||||
#define INVENTORY_REDFLAG 45
|
||||
#define INVENTORY_BLUEFLAG 46
|
||||
#define INVENTORY_NEUTRALFLAG 47
|
||||
#define INVENTORY_REDCUBE 48
|
||||
#define INVENTORY_BLUECUBE 49
|
||||
//Elimination mod: Domination inventory
|
||||
#define INVENTORY_POINTWHITE 50
|
||||
#define INVENTORY_POINTRED 51
|
||||
#define INVENTORY_POINTBLUE 52
|
||||
|
||||
|
||||
//enemy stuff
|
||||
#define ENEMY_HORIZONTAL_DIST 200
|
||||
#define ENEMY_HEIGHT 201
|
||||
#define NUM_VISIBLE_ENEMIES 202
|
||||
#define NUM_VISIBLE_TEAMMATES 203
|
||||
|
||||
// if running the mission pack
|
||||
#ifdef MISSIONPACK
|
||||
|
||||
//#error "running mission pack"
|
||||
|
||||
#endif
|
||||
|
||||
//item numbers (make sure they are in sync with bg_itemlist in bg_misc.c)
|
||||
#define MODELINDEX_ARMORSHARD 1
|
||||
#define MODELINDEX_ARMORCOMBAT 2
|
||||
#define MODELINDEX_ARMORBODY 3
|
||||
#define MODELINDEX_HEALTHSMALL 4
|
||||
#define MODELINDEX_HEALTH 5
|
||||
#define MODELINDEX_HEALTHLARGE 6
|
||||
#define MODELINDEX_HEALTHMEGA 7
|
||||
|
||||
#define MODELINDEX_GAUNTLET 8
|
||||
#define MODELINDEX_SHOTGUN 9
|
||||
#define MODELINDEX_MACHINEGUN 10
|
||||
#define MODELINDEX_GRENADELAUNCHER 11
|
||||
#define MODELINDEX_ROCKETLAUNCHER 12
|
||||
#define MODELINDEX_LIGHTNING 13
|
||||
#define MODELINDEX_RAILGUN 14
|
||||
#define MODELINDEX_PLASMAGUN 15
|
||||
#define MODELINDEX_BFG10K 16
|
||||
#define MODELINDEX_GRAPPLINGHOOK 17
|
||||
|
||||
#define MODELINDEX_SHELLS 18
|
||||
#define MODELINDEX_BULLETS 19
|
||||
#define MODELINDEX_GRENADES 20
|
||||
#define MODELINDEX_CELLS 21
|
||||
#define MODELINDEX_LIGHTNINGAMMO 22
|
||||
#define MODELINDEX_ROCKETS 23
|
||||
#define MODELINDEX_SLUGS 24
|
||||
#define MODELINDEX_BFGAMMO 25
|
||||
|
||||
#define MODELINDEX_TELEPORTER 26
|
||||
#define MODELINDEX_MEDKIT 27
|
||||
#define MODELINDEX_QUAD 28
|
||||
#define MODELINDEX_ENVIRONMENTSUIT 29
|
||||
#define MODELINDEX_HASTE 30
|
||||
#define MODELINDEX_INVISIBILITY 31
|
||||
#define MODELINDEX_REGEN 32
|
||||
#define MODELINDEX_FLIGHT 33
|
||||
|
||||
#define MODELINDEX_REDFLAG 34
|
||||
#define MODELINDEX_BLUEFLAG 35
|
||||
|
||||
// mission pack only defines
|
||||
|
||||
#define MODELINDEX_KAMIKAZE 36
|
||||
#define MODELINDEX_PORTAL 37
|
||||
#define MODELINDEX_INVULNERABILITY 38
|
||||
|
||||
#define MODELINDEX_NAILS 39
|
||||
#define MODELINDEX_MINES 40
|
||||
#define MODELINDEX_BELT 41
|
||||
|
||||
#define MODELINDEX_SCOUT 42
|
||||
#define MODELINDEX_GUARD 43
|
||||
#define MODELINDEX_DOUBLER 44
|
||||
#define MODELINDEX_AMMOREGEN 45
|
||||
|
||||
#define MODELINDEX_NEUTRALFLAG 46
|
||||
#define MODELINDEX_REDCUBE 47
|
||||
#define MODELINDEX_BLUECUBE 48
|
||||
|
||||
#define MODELINDEX_NAILGUN 49
|
||||
#define MODELINDEX_PROXLAUNCHER 50
|
||||
#define MODELINDEX_CHAINGUN 51
|
||||
|
||||
//Elimination mod: Double Domination and Standard Domination
|
||||
|
||||
#define MODELINDEX_POINTABLUE 52
|
||||
#define MODELINDEX_POINTBBLUE 53
|
||||
#define MODELINDEX_POINTARED 54
|
||||
#define MODELINDEX_POINTBRED 55
|
||||
#define MODELINDEX_POINTAWHITE 56
|
||||
#define MODELINDEX_POINTBWHITE 57
|
||||
#define MODELINDEX_POINTWHITE 58
|
||||
#define MODELINDEX_POINTRED 59
|
||||
#define MODELINDEX_POINTBLUE 60
|
||||
|
||||
|
||||
//
|
||||
#define WEAPONINDEX_GAUNTLET 1
|
||||
#define WEAPONINDEX_MACHINEGUN 2
|
||||
#define WEAPONINDEX_SHOTGUN 3
|
||||
#define WEAPONINDEX_GRENADE_LAUNCHER 4
|
||||
#define WEAPONINDEX_ROCKET_LAUNCHER 5
|
||||
#define WEAPONINDEX_LIGHTNING 6
|
||||
#define WEAPONINDEX_RAILGUN 7
|
||||
#define WEAPONINDEX_PLASMAGUN 8
|
||||
#define WEAPONINDEX_BFG 9
|
||||
#define WEAPONINDEX_GRAPPLING_HOOK 10
|
||||
#define WEAPONINDEX_NAILGUN 11
|
||||
#define WEAPONINDEX_PROXLAUNCHER 12
|
||||
#define WEAPONINDEX_CHAINGUN 13
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user