mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-17 19:23:51 +02:00
174 lines
5.4 KiB
C++
174 lines
5.4 KiB
C++
// AI_monster_demon_archvile.h
|
|
// Native state-machine replacement for ai_monster_demon_archvile.script.
|
|
|
|
#pragma once
|
|
|
|
|
|
#ifndef ARCH_ATTACK_RATE
|
|
#define ARCH_ATTACK_RATE 2
|
|
#endif
|
|
#ifndef ARCH_DODGE_RATE
|
|
#define ARCH_DODGE_RATE 4
|
|
#endif
|
|
#ifndef ARCH_PAIN_DELAY
|
|
#define ARCH_PAIN_DELAY 0.25f
|
|
#endif
|
|
#ifndef ARCH_TURRET_TO_IDLE
|
|
#define ARCH_TURRET_TO_IDLE 4
|
|
#endif
|
|
#ifndef ARCH_FLAME_WALL_NUM
|
|
#define ARCH_FLAME_WALL_NUM 20
|
|
#endif
|
|
#ifndef ARCH_FLAME_WALL_SEPERATION
|
|
#define ARCH_FLAME_WALL_SEPERATION 48
|
|
#endif
|
|
#ifndef ARCH_FLAME_WALL_RANGE
|
|
#define ARCH_FLAME_WALL_RANGE ( ARCH_FLAME_WALL_NUM * ARCH_FLAME_WALL_SEPERATION )
|
|
#endif
|
|
#ifndef ARCH_NOFOVTIME
|
|
#define ARCH_NOFOVTIME 4
|
|
#endif
|
|
#ifndef ARCH_PAIN_TO_IDLE
|
|
#define ARCH_PAIN_TO_IDLE 2
|
|
#endif
|
|
#ifndef ARCH_PAIN_TO_PAIN
|
|
#define ARCH_PAIN_TO_PAIN 0
|
|
#endif
|
|
#ifndef ARCH_SIGHT_TO_IDLE
|
|
#define ARCH_SIGHT_TO_IDLE 4
|
|
#endif
|
|
#ifndef ARCH_RESURRECT_TO_IDLE
|
|
#define ARCH_RESURRECT_TO_IDLE 4
|
|
#endif
|
|
#ifndef ARCH_IDLE_TO_RESURRECT
|
|
#define ARCH_IDLE_TO_RESURRECT 4
|
|
#endif
|
|
#ifndef ARCH_MELEE_TO_IDLE
|
|
#define ARCH_MELEE_TO_IDLE 4
|
|
#endif
|
|
#ifndef ARCH_INCINERATE_TO_IDLE
|
|
#define ARCH_INCINERATE_TO_IDLE 4
|
|
#endif
|
|
#ifndef ARCH_FLAMEWALL_TO_IDLE
|
|
#define ARCH_FLAMEWALL_TO_IDLE 4
|
|
#endif
|
|
#ifndef ARCH_DODGE_LEFT_TO_IDLE
|
|
#define ARCH_DODGE_LEFT_TO_IDLE 4
|
|
#endif
|
|
#ifndef ARCH_DODGE_RIGHT_TO_IDLE
|
|
#define ARCH_DODGE_RIGHT_TO_IDLE 4
|
|
#endif
|
|
#ifndef ARCH_WAIT_TO_OUT
|
|
#define ARCH_WAIT_TO_OUT 4
|
|
#endif
|
|
#ifndef ARCH_IN_TO_WAIT
|
|
#define ARCH_IN_TO_WAIT 4
|
|
#endif
|
|
#ifndef ARCH_WALK_TO_WAIT
|
|
#define ARCH_WALK_TO_WAIT 4
|
|
#endif
|
|
#ifndef ARCH_WALK_TO_ACTION
|
|
#define ARCH_WALK_TO_ACTION 4
|
|
#endif
|
|
#ifndef ARCH_ACTION_TO_IDLE
|
|
#define ARCH_ACTION_TO_IDLE 4
|
|
#endif
|
|
#ifndef ARCH_WALK_TO_DODGE_LEFT
|
|
#define ARCH_WALK_TO_DODGE_LEFT 4
|
|
#endif
|
|
#ifndef ARCH_WALK_TO_DODGE_RIGHT
|
|
#define ARCH_WALK_TO_DODGE_RIGHT 4
|
|
#endif
|
|
#ifndef ARCH_IDLE_TO_PAIN
|
|
#define ARCH_IDLE_TO_PAIN 0
|
|
#endif
|
|
#ifndef ARCH_IDLE_TO_WALK
|
|
#define ARCH_IDLE_TO_WALK 4
|
|
#endif
|
|
#ifndef ARCH_IDLE_TO_SIGHT
|
|
#define ARCH_IDLE_TO_SIGHT 4
|
|
#endif
|
|
#ifndef ARCH_WALK_TO_IDLE
|
|
#define ARCH_WALK_TO_IDLE 4
|
|
#endif
|
|
#ifndef ARCH_WALK_TO_FLAMEWALLATTACK
|
|
#define ARCH_WALK_TO_FLAMEWALLATTACK 4
|
|
#endif
|
|
#ifndef ARCH_IDLE_TO_FLAMEWALLATTACK
|
|
#define ARCH_IDLE_TO_FLAMEWALLATTACK 4
|
|
#endif
|
|
#ifndef ARCH_WALK_TO_INCINERATEATTACK
|
|
#define ARCH_WALK_TO_INCINERATEATTACK 4
|
|
#endif
|
|
#ifndef ARCH_IDLE_TO_INCINERATEATTACK
|
|
#define ARCH_IDLE_TO_INCINERATEATTACK 4
|
|
#endif
|
|
#ifndef ARCH_WALK_TO_MELEE
|
|
#define ARCH_WALK_TO_MELEE 4
|
|
#endif
|
|
#ifndef ARCH_IDLE_TO_TURRETATTACK
|
|
#define ARCH_IDLE_TO_TURRETATTACK 4
|
|
#endif
|
|
#ifndef ARCH_TURRETATTACK_TO_IDLE
|
|
#define ARCH_TURRETATTACK_TO_IDLE 4
|
|
#endif
|
|
#ifndef ATTACK_FLAMEWALL
|
|
#define ATTACK_FLAMEWALL ATTACK_SPECIAL1
|
|
#endif
|
|
#ifndef ATTACK_RESURRECT
|
|
#define ATTACK_RESURRECT ATTACK_SPECIAL2
|
|
#endif
|
|
|
|
class rvmMonsterDemonArchvile : public rvmMonsterBase {
|
|
public:
|
|
CLASS_PROTOTYPE( rvmMonsterDemonArchvile );
|
|
|
|
rvmMonsterDemonArchvile();
|
|
virtual void Init( idAI* aiOwner ) override;
|
|
virtual stateResult_t RunStateByName( const char* stateName, stateParms_t* parms ) override;
|
|
|
|
protected:
|
|
float nextDodge;
|
|
float nextAttack;
|
|
float nextNoFOVAttack;
|
|
float painNextTime;
|
|
float keep_alive;
|
|
float num_start;
|
|
float summon_delay;
|
|
float summon_time;
|
|
idEntityPtr<idEntity> combat_node;
|
|
idEntityPtr<idEntity> resurrectionTarget;
|
|
idVec3 flameWallOrigin;
|
|
idVec3 incinerateOrigin;
|
|
|
|
virtual stateResult_t Torso_Idle( stateParms_t* parms );
|
|
virtual stateResult_t Torso_Pain( stateParms_t* parms );
|
|
virtual stateResult_t Torso_Resurrect( stateParms_t* parms );
|
|
virtual stateResult_t Torso_MeleeAttack( stateParms_t* parms );
|
|
virtual stateResult_t Torso_FlameWallAttack( stateParms_t* parms );
|
|
virtual stateResult_t Torso_IncinerateAttack( stateParms_t* parms );
|
|
virtual stateResult_t Torso_TurretAttack( stateParms_t* parms );
|
|
virtual stateResult_t Legs_Idle( stateParms_t* parms );
|
|
virtual stateResult_t Legs_Walk( stateParms_t* parms );
|
|
virtual stateResult_t Legs_DodgeLeft( stateParms_t* parms );
|
|
virtual stateResult_t Legs_DodgeRight( stateParms_t* parms );
|
|
virtual stateResult_t state_Begin( stateParms_t* parms );
|
|
virtual stateResult_t state_Idle( stateParms_t* parms );
|
|
virtual stateResult_t combat_resurrect( stateParms_t* parms );
|
|
virtual stateResult_t combat_flamewall( stateParms_t* parms );
|
|
virtual stateResult_t combat_incinerate( stateParms_t* parms );
|
|
virtual stateResult_t combat_melee( stateParms_t* parms );
|
|
virtual stateResult_t combat_dodge_left( stateParms_t* parms );
|
|
virtual stateResult_t combat_dodge_right( stateParms_t* parms );
|
|
virtual stateResult_t spawn_flame_wall( stateParms_t* parms );
|
|
virtual stateResult_t spawn_incerate( stateParms_t* parms );
|
|
virtual stateResult_t flame_wall_loop( stateParms_t* parms );
|
|
virtual stateResult_t flame_wall( stateParms_t* parms );
|
|
virtual stateResult_t incinerate( stateParms_t* parms );
|
|
virtual stateResult_t resurrection( stateParms_t* parms );
|
|
virtual int check_attacks() override;
|
|
virtual bool do_attack( int attack_flags ) override;
|
|
virtual float num_minions();
|
|
|
|
};
|