76 default:
return "None";
110 default:
return "IDS_COMM_NONE";
171 for (cnt=1; cnt<iYOff; cnt++)
177 for (cnt=1; cnt<iXOff; cnt++)
188 for (int32_t cx=1; cx<10; cx++)
189 for (int32_t cy=0; cy<10; cy++)
233 if (!cObj)
return false;
243 int32_t iUpdate = 25;
265 bool fWaypoint=
false;
325 int32_t iTargetRange = iMoveToRange;
326 int32_t iRangeFactorTop=1, iRangeFactorBottom=1, iRangeFactorSide=1;
336 { iRangeFactorTop=3; iRangeFactorSide=3; iRangeFactorBottom=2; }
340 if (
Inside(cx-
Tx.
_getInt(),-iRangeFactorSide*iTargetRange,+iRangeFactorSide*iTargetRange)
341 &&
Inside(cy-
Ty,-iRangeFactorBottom*iTargetRange,+iRangeFactorTop*iTargetRange))
426 dx *= dScale; dy *= dScale;
479 if (
Inside(cx - tx, -iMoveToRange, +iMoveToRange)
480 &&
Inside(cy - ty, -iMoveToRange, +iMoveToRange))
623 int32_t ex,ey,ewdt,ehgt;
643 int32_t ex,ey,ewdt,ehgt;
794 if (Inside<int32_t>(
cObj->
GetX() - iTx, -iMoveToRange, +iMoveToRange) && Inside<int32_t>(
cObj->
GetY()-iTy,-15,+15))
933 bool fRejectCollect =
false;
948 if (!fSuccess) {
Finish();
return false; }
1086 int32_t iSideX=1;
if (
Random(2)) iSideX=-1;
1119 {
Finish(
true);
return; }
1190 {
Finish(
true);
return; }
1200 {
Finish(
true);
return; }
1226 if (pGrabbing && (pGrabbing!=
Target))
1251 int32_t iPosX,iPosY;
1360 default:
Finish();
break;
1380 Fail(szFailMessage);
1386 for (int32_t i=iExpGain; i; --i)
1485 int32_t iAngle =
Angle(cx,cy,
Tx.
_getInt(),
Ty);
while (iAngle>180) iAngle-=360;
1513 int32_t iAngle =
Angle(cx,cy,
Tx.
_getInt(),
Ty);
while (iAngle>180) iAngle-=360;
1532 if (Inside<int32_t>(cy-
Ty,10,40))
1535 int32_t iDist=5*
Abs(cy-
Ty)/6;
1538 if (Inside<int32_t>(iSideY-cy,-20,+20))
1552 int32_t iLowSideRange=5;
1579 int32_t iEntryX,iEntryY;
1583 if (!Inside<int32_t>(
cObj->
GetX()-pZone->
X,-5,pZone->
Wdt-1+5))
1595 {
Finish(
true);
return; }
1663 {
Finish(
true);
return; }
1670 if (1 == scriptresult)
return;
1671 if (2 == scriptresult)
1672 {
Finish(
true);
return; }
1673 if (3 == scriptresult)
1699 cObj->
AddCommand(
C4CMD_Buy,
nullptr,0,0,100,
nullptr,
true,
Data,
false,0,
nullptr,
C4CMD_Mode_Sub);
1709 bool ExecFail =
false;
1716 if (pBase) { pBase->
Failures++;
return; }
1717 else ExecFail =
true;
1726 if (!pBase || !pBase->
Retries) ExecFail =
true;
1739 char szCommandName[24 + 1];
1747 str = szFailMessage;
1769 if (szFailMessage)
break;
1778 if (szFailMessage)
break;
1812 bool fEvaluated, int32_t iRetries,
C4String * szText, int32_t iBaseMode)
1855 int32_t iVersion = 0;
1923 char szFunctionFailed[1024+1];
sprintf(szFunctionFailed,
"~%sFailed",
Text->
GetCStr());
const int32_t PushToRange
bool AdjustSolidOffset(int32_t &rX, int32_t &rY, int32_t iXOff, int32_t iYOff)
const int32_t LetGoRange1
const int32_t FollowRange
StdEnumAdapt< int32_t >::Entry EnumAdaptCommandEntries[C4CMD_Last - C4CMD_First+2]
int32_t CommandByName(const char *szCommand)
bool InitEnumAdaptCommandEntries()
bool FreeMoveTo(C4Object *cObj)
const char * CommandName(int32_t iCommand)
const int32_t JumpLowAngle
const int32_t MoveToRange
const char * CommandNameID(int32_t iCommand)
const bool InitEnumAdaptCommandEntriesDummy
void AdjustMoveToTarget(int32_t &rX, int32_t &rY, bool fFreeMove, int32_t iShapeHgt)
const int32_t JumpAngleRange
const int32_t JumpHighAngle
const int32_t MaxPathRange
const int32_t DigOutPositionRange
const int32_t FlightAngleRange
int32_t SolidOnWhichSide(int32_t iX, int32_t iY)
const int32_t LetGoRange2
const int32_t LetGoHangleAngle
const int32_t C4CMD_MoveTo_NoPosAdjust
const int32_t C4CMD_MoveTo_PushTarget
const int32_t C4CMD_Mode_Base
const int32_t C4CMD_Enter_PushTarget
const int32_t C4CMD_First
const int32_t C4CMD_Mode_Sub
const int32_t C4CMD_Mode_SilentSub
const uint32_t OCF_Carryable
const uint32_t OCF_HitSpeed1
const uint32_t OCF_Collection
const uint32_t OCF_Normal
const uint32_t OCF_Entrance
const uint32_t OCF_Available
const uint32_t OCF_InSolid
const uint32_t OCF_FullCon
const uint32_t OCF_CrewMember
const int32_t C4D_Grab_Put
const int32_t C4D_Grab_Get
C4GameMessageList Messages
const int32_t C4GM_Target
#define PSF_RejectContents
#define PSF_ControlCommandAcquire
#define PSF_ControlTransfer
#define PSF_CommandFailure
bool PathFree(int32_t x1, int32_t y1, int32_t x2, int32_t y2)
bool FindThrowingPosition(int32_t iTx, int32_t iTy, C4Real fXDir, C4Real fYDir, int32_t iHeight, int32_t &rX, int32_t &rY)
bool FindClosestFree(int32_t &rX, int32_t &rY, int32_t iAngle1, int32_t iAngle2, int32_t iExcludeAngle1, int32_t iExcludeAngle2)
bool GBackSemiSolid(int32_t x, int32_t y)
int32_t GBackDensity(int32_t x, int32_t y)
bool GBackSolid(int32_t x, int32_t y)
const char * LoadResStr(const char *id)
bool ObjectComThrow(C4Object *cObj, C4Object *pThing)
bool ObjectComPutTake(C4Object *cObj, C4Object *pTarget, C4Object *pThing)
bool ObjectComCancelAttach(C4Object *cObj)
bool ObjectComLetGo(C4Object *cObj, int32_t xdirf)
bool ObjectComTake(C4Object *cObj)
bool ObjectComUnGrab(C4Object *cObj)
bool ObjectComTake2(C4Object *cObj)
bool ObjectComGrab(C4Object *cObj, C4Object *pTarget)
bool ObjectComJump(C4Object *cObj)
bool ObjectComStop(C4Object *cObj)
bool ObjectComPut(C4Object *cObj, C4Object *pTarget, C4Object *pThing)
bool ObjectComDig(C4Object *cObj)
bool ObjectComDrop(C4Object *cObj, C4Object *pThing)
C4Fixed itofix(int32_t x)
C4Value C4VObj(C4Object *pObj)
C4Value C4VInt(int32_t i)
C4Value C4VString(C4String *pStr)
int32_t Angle(int32_t iX1, int32_t iY1, int32_t iX2, int32_t iY2, int32_t iPrec)
void SCopy(const char *szSource, char *sTarget, size_t iMaxL)
int32_t Distance(int32_t iX1, int32_t iY1, int32_t iX2, int32_t iY2)
bool SEqual(const char *szStr1, const char *szStr2)
bool Inside(T ival, U lbound, V rbound)
StdIntPackAdapt< T > mkIntPackAdapt(T &rVal)
StdParameterAdapt< T, P > mkParAdapt(T &&rObj, P &&rPar)
void ClearPointers(C4Object *pObj)
void Finish(bool fSuccess=false, const char *szFailMessage=nullptr)
void Denumerate(C4ValueNumbers *)
void Set(int32_t iCommand, C4Object *pObj, C4Object *pTarget, C4Value iTx, int32_t iTy, C4Object *pTarget2, C4Value iData, int32_t iUpdateInterval, bool fEvaluated, int32_t iRetries, C4String *szText, int32_t iBaseMode)
void CompileFunc(StdCompiler *pComp, C4ValueNumbers *)
void Fail(const char *szFailMessage=nullptr)
C4TransferZones TransferZones
C4Object * FindObject(C4Def *def, int32_t x=0, int32_t y=0, int32_t wdt=0, int32_t hgt=0, DWORD ocf=OCF_All, C4Object *find_next=nullptr)
bool Append(int32_t iType, const char *szText, C4Object *pTarget, int32_t iPlayer, int32_t iX, int32_t iY, uint32_t bCol, bool fNoDuplicates=false)
int32_t GetHeight() const
bool Enter(C4Object *pTarget, bool fCalls=true, bool fCopyMotion=true, bool *pfRejectCollect=nullptr)
bool At(int32_t ctx, int32_t cty) const
bool PutAwayUnusedObject(C4Object *pToMakeRoomForObject)
C4PropList * GetAction() const
bool AddCommand(int32_t iCommand, C4Object *pTarget, C4Value iTx, int32_t iTy=0, int32_t iUpdateInterval=0, C4Object *pTarget2=nullptr, bool fInitEvaluation=true, C4Value iData=C4VNull, bool fAppend=false, int32_t iRetries=0, C4String *szText=nullptr, int32_t iBaseMode=0)
void DoExperience(int32_t change)
bool ActivateEntrance(int32_t by_plr, C4Object *by_obj)
void SetCommand(int32_t iCommand, C4Object *pTarget, C4Value iTx, int32_t iTy=0, C4Object *pTarget2=nullptr, bool fControl=false, C4Value iData=C4VNull, int32_t iRetries=0, C4String *szText=nullptr)
bool SetActionByName(C4String *ActName, C4Object *pTarget=nullptr, C4Object *pTarget2=nullptr, int32_t iCalls=SAC_StartCall|SAC_AbortCall, bool fForce=false)
int32_t GetProcedure() const
bool ActivateMenu(int32_t iMenu, int32_t iMenuSelect=0, int32_t iMenuData=0, int32_t iMenuPosition=0, C4Object *pTarget=nullptr)
void SetDir(int32_t tdir)
C4NotifyingObjectList Contents
bool Exit(int32_t iX=0, int32_t iY=0, int32_t iR=0, C4Real iXDir=Fix0, C4Real iYDir=Fix0, C4Real iRDir=Fix0, bool fCalls=true)
BYTE GetEntranceArea(int32_t &aX, int32_t &aY, int32_t &aWdt, int32_t &aHgt) const
const C4ObjectLink * GetLink(const C4Object *obj) const
C4Object * Find(C4Def *def, int owner=ANY_OWNER, DWORD dwOCF=OCF_All)
C4Object * GetObject(int index=0) const
void DenumeratePointers()
void EnableTransferZones(bool fEnabled)
void SetLevel(int iLevel)
bool Find(int32_t iFromX, int32_t iFromY, int32_t iToX, int32_t iToY, SetWaypointFn fnSetWaypoint)
int32_t GetPropertyInt(C4PropertyName k, int32_t default_val=0) const
C4Value Call(C4PropertyName k, C4AulParSet *pPars=nullptr, bool fPassErrors=false)
const char * GetName() const override
StdStrBuf GetData() const
const char * GetCStr() const
C4String * RegString(StdStrBuf String)
bool GetEntryPoint(int32_t &rX, int32_t &rY, int32_t iToX, int32_t iToY)
C4TransferZone * Find(C4Object *pObj)
ALWAYS_INLINE bool CheckConversion(C4V_Type vtToType) const
void Denumerate(C4ValueNumbers *)
virtual bool Separator(Sep eSep=SEP_SEP)
virtual void NoSeparator()
void Value(const T &rStruct)
virtual bool isDeserializer()
void Ref(const char *pnData)
const char * getData() const
void Format(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
ObjectAddWaypoint(C4Object *obj)
bool operator()(int32_t iX, int32_t iY, C4Object *TransferTarget)