Posted by: Bob le Pointu
Date posted: May 22 2003 User Rating: 5 out of 5.0 | Number of views: 5277 Number of comments: 2 | Description: Relations between monsters, and a tip to |
1°)Introduction 2°)Relations between classes 3°)Classes of monsters 4°)Tips
Introduction Relations between monsters, and a tip to make them interact with the player Relations between classes Here there is the ladder of relation levels, and what they do : R_AL (Ally) Monster will help player. R_FR (Fear) Monster will run away. R_NO (None relation) Monster won't do anything. R_DL (Dislike) Monster will attack the player. R_HT (Hatred) Monster will attack the player in first. R_NM (NEMESIS) Monster will ALWAYS attack the player.
| NONE | MACH | PLYR | HPASS | HMIL | AMIL | APASS | AMONST | APREY | APRED | INSECT | PLRALLY | PBWPN | ABWP | NONE | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | MACHINE | R_NO | R_NO | R_DL | R_DL | R_NO | R_DL | R_DL | R_DL | R_DL | R_DL | R_NO | R_DL | R_DL | R_DL | PLAYER | R_NO | R_DL | R_NO | R_NO | R_DL | R_DL | R_DL | R_DL | R_DL | R_DL | R_NO | R_NO | R_DL | R_DL | HUMANPASSIVE | R_NO | R_NO | R_AL | R_AL | R_HT | R_FR | R_NO | R_HT | R_DL | R_FR | R_NO | R_AL | R_NO | R_NO | HUMANMILITARY | R_NO | R_NO | R_HT | R_DL | R_NO | R_HT | R_DL | R_DL | R_DL | R_DL | R_NO | R_HT | R_NO | R_NO | ALIENMILITARY | R_NO | R_DL | R_HT | R_DL | R_HT | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_DL | R_NO | R_NO | ALIENPASSIVE | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | ALIENMONSTER | R_NO | R_DL | R_DL | R_DL | R_DL | R_NO | R_NO | R_NO | R_NO | R_NO | R_NO | R_DL | R_NO | R_NO | ALIENPREY | R_NO | R_NO | R_DL | R_DL | R_DL | R_NO | R_NO | R_NO | R_NO | R_FR | R_NO | R_DL | R_NO | R_NO | ALIENPREDATOR | R_NO | R_NO | R_DL | R_DL | R_DL | R_NO | R_NO | R_NO | R_HT | R_DL | R_NO | R_DL | R_NO | R_NO | INSECT | R_FR | R_FR | R_FR | R_FR | R_FR | R_NO | R_FR | R_FR | R_FR | R_FR | R_NO | R_FR | R_NO | R_NO | PLAYERALLY | R_NO | R_DL | R_AL | R_AL | R_DL | R_DL | R_DL | R_DL | R_DL | R_DL | R_NO | R_NO | R_NO | R_NO | PBIOWEAPON | R_NO | R_NO | R_DL | R_DL | R_DL | R_DL | R_DL | R_DL | R_DL | R_DL | R_NO | R_DL | R_NO | R_DL | ABIOWEAPON | R_NO | R_NO | R_DL | R_DL | R_DL | R_AL | R_NO | R_DL | R_DL | R_NO | R_NO | R_DL | R_DL | R_NO |
To read this table, begin by the left : HUMANPASSVIE R_AL PLYR, but PLAYER R_NO HPASS, it's important.
Classes of monsters
CLASS_NONE | CCrossbowBolt, CGman, CFurniture, CBaseTurret*,CSentry, CTurret, CMiniTurret | CLASS_MACHINE | COsprey, CGunTarget, CBaseTurret* | CLASS_PLAYER | CBasePlayer | CLASS_HUMAN_PASSIVE | CScientist, CSittingScientist | CLASS_HUMAN_MILITARY | CApache, CHAssassin, CHGrunt, CDeadHGrunt, CDeadHEV | CLASS_ALIEN_MILITARY | CAgrunt, CController, CIslave, CNihilanth, CSqueakGrenade* | CLASS_ALIEN_PASSIVE | | CLASS_ALIEN_MONSTER | CBarnacle, CBigMomma, CBloater, CGargantua, CHoundeye, CIchthyosaur, CTentacle, CZombie | CLASS_ALIEN_PREY | CHeadCrab | CLASS_ALIEN_PREDATOR | CBullsquid | CLASS_INSECT | CLeech, CRat, CRoach, CSqueakGrenade* | CLASS_PLAYER_ALLY | CBarney, CDeadBarney, CGenericMonster | CLASS_PLAYER_BIOWEAPON | CHornet* | CLASS_ALIEN_BIOWEAPON | CHornet*, CSqueakGrenade* |
* : These can have more than one classe. Now you can see this tutorial is helpfull ;>
Tips Imagine we want to do this scenario: The hero enters into a temple to steal a key. This temple is full of zombies. Lucky guy, it seems they don't do anything when they see him. Hero steals the key, and he will see all the zombies coming towards him. Let's code: First, the zombies need to have no reaction with player, so they must be R_NO. Zombie is CLASS_ALIEN_MONSTER and player is CLASS_PLAYER. Look at the relations table, ALIENMONSTER R_DL PLYR, so the zombie dislike player. We must change the player class to make the zombie have no reaction, for example CLASS_ALIEN_PASSIVE.
Now, in CBasePlayer class, go to Classifyfunction and change CLASS_PLAYER byCLASS_ALIEN_PASSIVE. Since he has taken the key, we want him to be attacked by zombies, so we will make the player class : CLASS_PLAYER.
In this same function, check if he has the key, and return the good result. For example it could be like this :
| | int CBasePlayer::Classify ( void ) { if ( m_i HasKey ) { return CLASS_PLAYER; } else {
return CLASS_ALIEN_PASSIVE; } }
|
It's all now, if you see errors or want explanations, just ask. |
|