mirror of
https://github.com/GTAmodding/re3.git
synced 2024-12-25 19:15:41 +00:00
EmergencyPed, PedDebug, message fix
This commit is contained in:
parent
ff2665942e
commit
86002b093f
4 changed files with 72 additions and 38 deletions
|
@ -142,7 +142,7 @@ enum eSound : uint16
|
|||
SOUND_PED_TAXI_WAIT,
|
||||
SOUND_PED_ATTACK,
|
||||
SOUND_PED_DEFEND,
|
||||
SOUND_140,
|
||||
SOUND_PED_HEALING,
|
||||
SOUND_PED_LEAVE_VEHICLE,
|
||||
SOUND_PED_EVADE,
|
||||
SOUND_PED_FLEE_RUN,
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
#include "CarCtrl.h"
|
||||
#include "Accident.h"
|
||||
|
||||
// --MIAMI: file done
|
||||
|
||||
CEmergencyPed::CEmergencyPed(uint32 type) : CPed(type)
|
||||
{
|
||||
switch (type){
|
||||
|
@ -97,7 +99,7 @@ CEmergencyPed::FiremanAI(void)
|
|||
case EMERGENCY_PED_READY:
|
||||
nearestFire = gFireManager.FindNearestFire(GetPosition(), &fireDist);
|
||||
if (nearestFire) {
|
||||
m_nPedState = PED_NONE;
|
||||
SetPedState(PED_NONE);
|
||||
SetSeek(nearestFire->m_vecPos, 1.0f);
|
||||
SetMoveState(PEDMOVE_RUN);
|
||||
m_nEmergencyPedState = EMERGENCY_PED_DETERMINE_NEXT_STATE;
|
||||
|
@ -110,7 +112,7 @@ CEmergencyPed::FiremanAI(void)
|
|||
case EMERGENCY_PED_DETERMINE_NEXT_STATE:
|
||||
nearestFire = gFireManager.FindNearestFire(GetPosition(), &fireDist);
|
||||
if (nearestFire && nearestFire != m_pAttendedFire) {
|
||||
m_nPedState = PED_NONE;
|
||||
SetPedState(PED_NONE);
|
||||
SetSeek(nearestFire->m_vecPos, 1.0f);
|
||||
SetMoveState(PEDMOVE_RUN);
|
||||
#ifdef FIX_BUGS
|
||||
|
@ -149,7 +151,7 @@ CEmergencyPed::FiremanAI(void)
|
|||
#ifdef FIX_BUGS
|
||||
bIsRunning = false;
|
||||
#endif
|
||||
m_nPedState = PED_NONE;
|
||||
SetPedState(PED_NONE);
|
||||
SetWanderPath(CGeneral::GetRandomNumber() & 7);
|
||||
m_pAttendedFire = nil;
|
||||
m_nEmergencyPedState = EMERGENCY_PED_READY;
|
||||
|
@ -164,15 +166,20 @@ CEmergencyPed::MedicAI(void)
|
|||
{
|
||||
float distToEmergency;
|
||||
if (!bInVehicle && IsPedInControl()) {
|
||||
ScanForThreats();
|
||||
if (m_threatEntity && m_threatEntity->IsPed() && ((CPed*)m_threatEntity)->IsPlayer()) {
|
||||
if (((CPed*)m_threatEntity)->GetWeapon()->IsTypeMelee()) {
|
||||
SetObjective(OBJECTIVE_KILL_CHAR_ON_FOOT, m_threatEntity);
|
||||
} else {
|
||||
SetFlee(m_threatEntity, 6000);
|
||||
Say(SOUND_PED_FLEE_SPRINT);
|
||||
ScanForDelayedResponseThreats();
|
||||
if (m_threatFlags && CTimer::GetTimeInMilliseconds() > m_threatCheckTimer) {
|
||||
CheckThreatValidity();
|
||||
m_threatFlags = 0;
|
||||
m_threatCheckTimer = 0;
|
||||
if (m_threatEntity && m_threatEntity->IsPed() && ((CPed*)m_threatEntity)->IsPlayer()) {
|
||||
if (((CPed*)m_threatEntity)->GetWeapon()->IsTypeMelee()) {
|
||||
SetObjective(OBJECTIVE_KILL_CHAR_ON_FOOT, m_threatEntity);
|
||||
} else {
|
||||
SetFlee(m_threatEntity, 6000);
|
||||
Say(SOUND_PED_FLEE_SPRINT);
|
||||
}
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -225,8 +232,7 @@ CEmergencyPed::MedicAI(void)
|
|||
m_pRevivedPed->RegisterReference((CEntity**)&m_pRevivedPed);
|
||||
m_pRevivedPed->m_pedIK.GetComponentPosition(*(RwV3d *)&midPos, PED_MID);
|
||||
m_pRevivedPed->m_pedIK.GetComponentPosition(*(RwV3d *)&headPos, PED_HEAD);
|
||||
SetSeek((headPos + midPos) * 0.5f, 1.0f);
|
||||
SetObjective(OBJECTIVE_NONE);
|
||||
SetObjective(OBJECTIVE_GOTO_AREA_ON_FOOT, CVector((headPos + midPos) * 0.5f));
|
||||
bIsRunning = true;
|
||||
m_nEmergencyPedState = EMERGENCY_PED_DETERMINE_NEXT_STATE;
|
||||
m_pAttendedAccident = nearestAccident;
|
||||
|
@ -239,6 +245,7 @@ CEmergencyPed::MedicAI(void)
|
|||
CPed* driver = m_pMyVehicle->pDriver;
|
||||
if (driver && driver->m_nPedType != PEDTYPE_EMERGENCY && m_objective != OBJECTIVE_KILL_CHAR_ON_FOOT) {
|
||||
SetObjective(OBJECTIVE_KILL_CHAR_ON_FOOT, driver);
|
||||
|
||||
} else if (m_objective != OBJECTIVE_ENTER_CAR_AS_DRIVER
|
||||
&& m_objective != OBJECTIVE_ENTER_CAR_AS_PASSENGER
|
||||
&& m_objective != OBJECTIVE_KILL_CHAR_ON_FOOT) {
|
||||
|
@ -265,8 +272,7 @@ CEmergencyPed::MedicAI(void)
|
|||
}
|
||||
m_pRevivedPed->m_pedIK.GetComponentPosition(*(RwV3d *)&midPos, PED_MID);
|
||||
m_pRevivedPed->m_pedIK.GetComponentPosition(*(RwV3d *)&headPos, PED_HEAD);
|
||||
SetSeek((headPos + midPos) * 0.5f, nearestAccident->m_nMedicsPerformingCPR * 0.5f + 1.0f);
|
||||
SetObjective(OBJECTIVE_NONE);
|
||||
SetObjective(OBJECTIVE_GOTO_AREA_ON_FOOT, CVector((headPos + midPos) * 0.5f));
|
||||
bIsRunning = true;
|
||||
--m_pAttendedAccident->m_nMedicsAttending;
|
||||
++nearestAccident->m_nMedicsAttending;
|
||||
|
@ -296,11 +302,11 @@ CEmergencyPed::MedicAI(void)
|
|||
} else {
|
||||
m_pRevivedPed->m_bloodyFootprintCountOrDeathTime = CTimer::GetTimeInMilliseconds();
|
||||
SetMoveState(PEDMOVE_STILL);
|
||||
m_nPedState = PED_CPR;
|
||||
SetPedState(PED_CPR);
|
||||
m_nLastPedState = PED_CPR;
|
||||
SetLookFlag(m_pRevivedPed, 0);
|
||||
SetLookTimer(500);
|
||||
//Say(SOUND_PED_HEALING);
|
||||
Say(SOUND_PED_HEALING);
|
||||
if (m_pAttendedAccident->m_nMedicsPerformingCPR) {
|
||||
SetIdle();
|
||||
m_nEmergencyPedState = EMERGENCY_PED_STAND_STILL;
|
||||
|
@ -355,12 +361,12 @@ CEmergencyPed::MedicAI(void)
|
|||
break;
|
||||
}
|
||||
m_nEmergencyPedState = EMERGENCY_PED_STOP_CPR;
|
||||
m_nPedState = PED_NONE;
|
||||
SetPedState(PED_NONE);
|
||||
SetMoveState(PEDMOVE_WALK);
|
||||
m_pVehicleAnim = nil;
|
||||
if (!m_pRevivedPed->bBodyPartJustCameOff) {
|
||||
m_pRevivedPed->m_fHealth = 100.0f;
|
||||
m_pRevivedPed->m_nPedState = PED_NONE;
|
||||
m_pRevivedPed->SetPedState(PED_NONE);
|
||||
m_pRevivedPed->m_nLastPedState = PED_WANDER_PATH;
|
||||
m_pRevivedPed->SetGetUp();
|
||||
m_pRevivedPed->bUsesCollision = true;
|
||||
|
@ -369,6 +375,8 @@ CEmergencyPed::MedicAI(void)
|
|||
m_pRevivedPed->bIsPedDieAnimPlaying = false;
|
||||
m_pRevivedPed->bKnockedUpIntoAir = false;
|
||||
m_pRevivedPed->m_pCollidingEntity = nil;
|
||||
m_pRevivedPed->bKnockedOffBike = false;
|
||||
m_pRevivedPed->Say(SOUND_PED_ACCIDENTREACTION1);
|
||||
}
|
||||
break;
|
||||
case EMERGENCY_PED_STOP_CPR:
|
||||
|
@ -389,7 +397,7 @@ CEmergencyPed::MedicAI(void)
|
|||
break;
|
||||
case EMERGENCY_PED_STOP:
|
||||
m_bStartedToCPR = false;
|
||||
m_nPedState = PED_NONE;
|
||||
SetPedState(PED_NONE);
|
||||
if (m_pAttendedAccident) {
|
||||
m_pAttendedAccident->m_pVictim = nil;
|
||||
--m_pAttendedAccident->m_nMedicsAttending;
|
||||
|
|
|
@ -7,11 +7,10 @@
|
|||
#include "Sprite.h"
|
||||
#include "Text.h"
|
||||
|
||||
// TODO(Miami)
|
||||
static char ObjectiveText[][28] = {
|
||||
"No Obj",
|
||||
"Wait on Foot",
|
||||
"Wait on Foot For Cop",
|
||||
"Wait on Foot for cop",
|
||||
"Flee on Foot Till Safe",
|
||||
"Guard Spot",
|
||||
"Guard Area",
|
||||
|
@ -22,8 +21,8 @@ static char ObjectiveText[][28] = {
|
|||
"Flee Char on Foot Till Safe",
|
||||
"Flee Char on Foot Always",
|
||||
"GoTo Char on Foot",
|
||||
"GoTo Char on Foot Walking",
|
||||
"Hassle Char",
|
||||
"GoTo Char on Foot walking",
|
||||
"Hassle char",
|
||||
"Follow Char in Formation",
|
||||
"Leave Car",
|
||||
"Enter Car as Passenger",
|
||||
|
@ -40,14 +39,30 @@ static char ObjectiveText[][28] = {
|
|||
"Guard Attack",
|
||||
"Set Leader",
|
||||
"Follow Route",
|
||||
"Solicit",
|
||||
"Solicit vehicle",
|
||||
"Take Taxi",
|
||||
"Catch Train",
|
||||
"Buy IceCream",
|
||||
"Steal Any Car",
|
||||
"Steal Any Mission Car",
|
||||
"Steal any mission car",
|
||||
"Mug Char",
|
||||
"Leave Car and Die",
|
||||
"Lv car die",
|
||||
"Goto seat",
|
||||
"Goto atm",
|
||||
"Flee car",
|
||||
"Sunbathe",
|
||||
"Goto bus stop",
|
||||
"Goto pizza",
|
||||
"Goto shelter",
|
||||
"Aim gun at",
|
||||
"Wander",
|
||||
"Wait on foot at shltr",
|
||||
"Sprint to area",
|
||||
"Kill char on boat",
|
||||
"Solicit ped",
|
||||
"Wait at bus stop",
|
||||
"Goto ice cream van foot",
|
||||
"Wait foot icecream van"
|
||||
};
|
||||
|
||||
static char StateText[][18] = {
|
||||
|
@ -84,11 +99,11 @@ static char StateText[][18] = {
|
|||
"Investigate",
|
||||
"Step away",
|
||||
"On Fire",
|
||||
"Sun Bathe",
|
||||
"Bathe",
|
||||
"Flash",
|
||||
"Jog",
|
||||
"Answer Mobile",
|
||||
"Unknown",
|
||||
"Answer mobile",
|
||||
"Hang out",
|
||||
"STATES_NO_AI",
|
||||
"Abseil",
|
||||
"Sit",
|
||||
|
@ -114,7 +129,7 @@ static char StateText[][18] = {
|
|||
"Exit Car",
|
||||
"Hands Up",
|
||||
"Arrested",
|
||||
"Deploying Stinger"
|
||||
"Deply stgr"
|
||||
};
|
||||
|
||||
static char PersonalityTypeText[][18] = {
|
||||
|
@ -141,8 +156,7 @@ static char PersonalityTypeText[][18] = {
|
|||
"Geek Girl",
|
||||
"Old Girl",
|
||||
"Tough Girl",
|
||||
"Tramp Male",
|
||||
"Tramp Female",
|
||||
"Tramp",
|
||||
"Tourist",
|
||||
"Prostitute",
|
||||
"Criminal",
|
||||
|
@ -151,8 +165,6 @@ static char PersonalityTypeText[][18] = {
|
|||
"Psycho",
|
||||
"Steward",
|
||||
"Sports Fan",
|
||||
"Shopper",
|
||||
"Old Shopper"
|
||||
};
|
||||
|
||||
static char WaitStateText[][16] = {
|
||||
|
@ -177,6 +189,21 @@ static char WaitStateText[][16] = {
|
|||
"Play HandsCower",
|
||||
"Play Chat",
|
||||
"Finish Flee",
|
||||
"Sit down",
|
||||
"Sit down rvrs",
|
||||
"Sit up",
|
||||
"Sit idle",
|
||||
"Use atm",
|
||||
"Sunbth pre",
|
||||
"Sunbth down",
|
||||
"Sunbth idle",
|
||||
"Riot",
|
||||
"Fast fall",
|
||||
"Bomber",
|
||||
"Stripper",
|
||||
"Ground attack",
|
||||
"Lance sitting",
|
||||
"Handsup simple"
|
||||
};
|
||||
|
||||
void
|
||||
|
|
|
@ -390,12 +390,11 @@ CMessages::InsertNumberInString(wchar *str, int32 n1, int32 n2, int32 n3, int32
|
|||
if (str[c] == '~' && str[c + 1] == '1' && str[c + 2] == '~') {
|
||||
#endif
|
||||
c += 3;
|
||||
for (int j = 0; j < outLen; j++)
|
||||
for (int j = 0; j < outLen; )
|
||||
*(outstr++) = wNumStr[j++];
|
||||
|
||||
i++;
|
||||
switch (i) {
|
||||
case 0: sprintf(numStr, "%d", n1); break;
|
||||
case 1: sprintf(numStr, "%d", n2); break;
|
||||
case 2: sprintf(numStr, "%d", n3); break;
|
||||
case 3: sprintf(numStr, "%d", n4); break;
|
||||
|
|
Loading…
Reference in a new issue