mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-06 21:11:44 +00:00
85a2042394
- The definition of FxGlobalFunctionCall_CheckClass was big and scary. I would say this is a big improvement, since now it gets to leverage the same framework that action functions use. - The definition of FxGlobalFunctionCall_IsPointerEqual was not so big and scary, so this can't be called so much of an improvement as CheckClass was. (Which is not to say that it isn't better anyway.)
360 lines
18 KiB
Text
360 lines
18 KiB
Text
ACTOR Actor native //: Thinker
|
|
{
|
|
Scale 1
|
|
Health 1000
|
|
Reactiontime 8
|
|
Radius 20
|
|
Height 16
|
|
Mass 100
|
|
RenderStyle Normal
|
|
Alpha 1
|
|
MinMissileChance 200
|
|
MeleeRange 44
|
|
MaxDropoffHeight 24
|
|
MaxStepHeight 24
|
|
BounceFactor 0.7
|
|
WallBounceFactor 0.75
|
|
BounceCount -1
|
|
FloatSpeed 4
|
|
FloatBobPhase -1 // randomly initialize by default
|
|
Gravity 1
|
|
Friction 1
|
|
DamageFactor 1.0
|
|
PushFactor 0.25
|
|
WeaveIndexXY 0
|
|
WeaveIndexZ 16
|
|
DesignatedTeam 255
|
|
PainType Normal
|
|
DeathType Normal
|
|
TeleFogSourceType "TeleportFog"
|
|
TeleFogDestType "TeleportFog"
|
|
|
|
// Variables for the expression evaluator
|
|
// NOTE: fixed_t and angle_t are only used here to ensure proper conversion
|
|
// Internally they are handled as floats.
|
|
// Variables must be native.
|
|
native fixed_t alpha;
|
|
native angle_t angle;
|
|
native int args[5];
|
|
native fixed_t ceilingz;
|
|
native fixed_t floorz;
|
|
native int health;
|
|
native int mass;
|
|
native angle_t pitch;
|
|
native int special;
|
|
native int tid;
|
|
native int TIDtoHate;
|
|
native int waterlevel;
|
|
//native int damage;
|
|
native fixed_t x;
|
|
native fixed_t y;
|
|
native fixed_t z;
|
|
native fixed_t velx;
|
|
native fixed_t vely;
|
|
native fixed_t velz;
|
|
native fixed_t momx; // alias for velx
|
|
native fixed_t momy; // alias for vely
|
|
native fixed_t momz; // alias for velz
|
|
native fixed_t scaleX;
|
|
native fixed_t scaleY;
|
|
native int score;
|
|
native int accuracy;
|
|
native int stamina;
|
|
native fixed_t height;
|
|
native fixed_t radius;
|
|
native int reactiontime;
|
|
native fixed_t meleerange;
|
|
native fixed_t speed;
|
|
|
|
native bool CheckClass(class<Actor> checkclass, int ptr_select = AAPTR_DEFAULT, bool match_superclass = false);
|
|
native bool IsPointerEqual(int ptr_select1, int ptr_select2);
|
|
|
|
// Meh, MBF redundant functions. Only for DeHackEd support.
|
|
action native A_Turn(float angle = 0);
|
|
action native A_LineEffect(int boomspecial = 0, int tag = 0);
|
|
// End of MBF redundant functions.
|
|
|
|
action native A_MonsterRail();
|
|
action native A_BFGSpray(class<Actor> spraytype = "BFGExtra", int numrays = 40, int damagecount = 15, float/*angle*/ angle = 90, float distance = 16*64, float/*angle*/ vrange = 32, int damage = 0);
|
|
action native A_Pain();
|
|
action native A_NoBlocking();
|
|
action native A_XScream();
|
|
action native A_Look();
|
|
action native A_Chase(state melee = "*", state missile = "none", int flags = 0);
|
|
action native A_FaceTarget(float max_turn = 0, float max_pitch = 270);
|
|
action native A_FaceTracer(float max_turn = 0, float max_pitch = 270);
|
|
action native A_FaceMaster(float max_turn = 0, float max_pitch = 270);
|
|
action native A_PosAttack();
|
|
action native A_Scream();
|
|
action native A_SPosAttack();
|
|
action native A_SPosAttackUseAtkSound();
|
|
action native A_VileChase();
|
|
action native A_VileStart();
|
|
action native A_VileTarget(class<Actor> fire = "ArchvileFire");
|
|
action native A_VileAttack(sound snd = "vile/stop", int initialdmg = 20, int blastdmg = 70, int blastradius = 70, float thrustfac = 1.0, name damagetype = "Fire", int flags = 0);
|
|
action native A_StartFire();
|
|
action native A_Fire(float spawnheight = 0);
|
|
action native A_FireCrackle();
|
|
action native A_Tracer();
|
|
action native A_SkelWhoosh();
|
|
action native A_SkelFist();
|
|
action native A_SkelMissile();
|
|
action native A_FatRaise();
|
|
action native A_FatAttack1(class<Actor> spawntype = "FatShot");
|
|
action native A_FatAttack2(class<Actor> spawntype = "FatShot");
|
|
action native A_FatAttack3(class<Actor> spawntype = "FatShot");
|
|
action native A_BossDeath();
|
|
action native A_CPosAttack();
|
|
action native A_CPosRefire();
|
|
action native A_TroopAttack();
|
|
action native A_SargAttack();
|
|
action native A_HeadAttack();
|
|
action native A_BruisAttack();
|
|
action native A_SkullAttack(float speed = 20);
|
|
action native A_BetaSkullAttack();
|
|
action native A_Metal();
|
|
action native A_SpidRefire();
|
|
action native A_BabyMetal();
|
|
action native A_BspiAttack();
|
|
action native A_Hoof();
|
|
action native A_CyberAttack();
|
|
action native A_PainAttack(class<Actor> spawntype = "LostSoul", float angle = 0, int flags = 0, int limit = -1);
|
|
action native A_DualPainAttack(class<Actor> spawntype = "LostSoul");
|
|
action native A_PainDie(class<Actor> spawntype = "LostSoul");
|
|
action native A_KeenDie(int doortag = 666);
|
|
action native A_BrainPain();
|
|
action native A_BrainScream();
|
|
action native A_BrainDie();
|
|
action native A_BrainAwake();
|
|
action native A_BrainSpit(class<Actor> spawntype = "none"); // needs special treatment for default
|
|
action native A_SpawnSound();
|
|
action native A_SpawnFly(class<Actor> spawntype = "none"); // needs special treatment for default
|
|
action native A_BrainExplode();
|
|
action native A_Die(name damagetype = "none");
|
|
action native A_Detonate();
|
|
action native A_Mushroom(class<Actor> spawntype = "FatShot", int numspawns = 0, int flags = 0, float vrange = 4.0, float hrange = 0.5);
|
|
action native A_CallSpecial(int special, int arg1=0, int arg2=0, int arg3=0, int arg4=0, int arg5=0);
|
|
|
|
action native A_SetFloorClip();
|
|
action native A_UnSetFloorClip();
|
|
action native A_HideThing();
|
|
action native A_UnHideThing();
|
|
action native A_SetInvulnerable();
|
|
action native A_UnSetInvulnerable();
|
|
action native A_SetReflective();
|
|
action native A_UnSetReflective();
|
|
action native A_SetReflectiveInvulnerable();
|
|
action native A_UnSetReflectiveInvulnerable();
|
|
action native A_SetShootable();
|
|
action native A_UnSetShootable();
|
|
action native A_NoGravity();
|
|
action native A_Gravity();
|
|
action native A_LowGravity();
|
|
action native A_SetGravity(float gravity);
|
|
action native A_Fall();
|
|
action native A_SetSolid();
|
|
action native A_UnsetSolid();
|
|
action native A_SetFloat();
|
|
action native A_UnsetFloat();
|
|
|
|
action native A_M_Saw(sound fullsound = "weapons/sawfull", sound hitsound = "weapons/sawhit", int damage = 2, class<Actor> pufftype = "BulletPuff");
|
|
|
|
action native A_ScreamAndUnblock();
|
|
action native A_ActiveAndUnblock();
|
|
action native A_ActiveSound();
|
|
|
|
action native A_FastChase();
|
|
action native A_FreezeDeath();
|
|
action native A_FreezeDeathChunks();
|
|
action native A_GenericFreezeDeath();
|
|
action native A_IceGuyDie();
|
|
action native A_CentaurDefend();
|
|
action native A_BishopMissileWeave();
|
|
action native A_CStaffMissileSlither();
|
|
action native A_PlayerScream();
|
|
action native A_SkullPop(class<PlayerChunk> skulltype = "BloodySkull");
|
|
action native A_CheckPlayerDone();
|
|
|
|
action native A_Wander();
|
|
action native A_Look2();
|
|
action native A_TossGib();
|
|
action native A_SentinelBob();
|
|
action native A_SentinelRefire();
|
|
action native A_Tracer2();
|
|
action native A_SetShadow();
|
|
action native A_ClearShadow();
|
|
action native A_GetHurt();
|
|
action native A_TurretLook();
|
|
action native A_KlaxonBlare();
|
|
action native A_Countdown();
|
|
action native A_AlertMonsters(float maxdist = 0, int flags = 0);
|
|
action native A_ClearSoundTarget();
|
|
action native A_FireAssaultGun();
|
|
action native A_CheckTerrain();
|
|
action native A_FaceConsolePlayer(float MaxTurnAngle = 0); // [TP]
|
|
|
|
action native A_MissileAttack();
|
|
action native A_MeleeAttack();
|
|
action native A_ComboAttack();
|
|
action native A_BulletAttack();
|
|
action native A_WolfAttack(int flags = 0, sound whattoplay = "weapons/pistol", float snipe = 1.0, int maxdamage = 64, int blocksize = 128, int pointblank = 2, int longrange = 4, float runspeed = 160.0, class<Actor> pufftype = "BulletPuff");
|
|
action native A_PlaySound(sound whattoplay = "weapons/pistol", int slot = CHAN_BODY, float volume = 1.0, bool looping = false, float attenuation = ATTN_NORM);
|
|
action native A_PlayWeaponSound(sound whattoplay);
|
|
action native A_FLoopActiveSound();
|
|
action native A_LoopActiveSound();
|
|
action native A_StopSound(int slot = CHAN_VOICE); // Bad default but that's what is originally was...
|
|
action native A_PlaySoundEx(sound whattoplay, coerce name slot, bool looping = false, int attenuation = 0);
|
|
action native A_StopSoundEx(coerce name slot);
|
|
action native A_SeekerMissile(int threshold, int turnmax, int flags = 0, int chance = 50, int distance = 10);
|
|
action native A_Jump(int chance = 256, state label, ...);
|
|
action native A_CustomMissile(class<Actor> missiletype, float spawnheight = 32, int spawnofs_xy = 0, float angle = 0, int flags = 0, float pitch = 0);
|
|
action native A_CustomBulletAttack(float/*angle*/ spread_xy, float/*angle*/ spread_z, int numbullets, int damageperbullet, class<Actor> pufftype = "BulletPuff", float range = 0, int flags = 0);
|
|
action native A_CustomRailgun(int damage, int spawnofs_xy = 0, color color1 = "", color color2 = "", int flags = 0, int aim = 0, float maxdiff = 0, class<Actor> pufftype = "BulletPuff", float/*angle*/ spread_xy = 0, float/*angle*/ spread_z = 0, float range = 0, int duration = 0, float sparsity = 1.0, float driftspeed = 1.0, class<Actor> spawnclass = "none", float spawnofs_z = 0);
|
|
action native A_JumpIfHealthLower(int health, state label, int ptr_selector = AAPTR_DEFAULT);
|
|
action native A_JumpIfCloser(float distance, state label);
|
|
action native A_JumpIfTracerCloser(float distance, state label);
|
|
action native A_JumpIfMasterCloser(float distance, state label);
|
|
action native A_JumpIfTargetOutsideMeleeRange(state label);
|
|
action native A_JumpIfTargetInsideMeleeRange(state label);
|
|
action native A_JumpIfInventory(class<Inventory> itemtype, int itemamount, state label, int owner = AAPTR_DEFAULT);
|
|
action native A_JumpIfArmorType(name Type, state label, int amount = 1);
|
|
action native A_GiveInventory(class<Inventory> itemtype, int amount = 0, int giveto = AAPTR_DEFAULT);
|
|
action native A_TakeInventory(class<Inventory> itemtype, int amount = 0, int flags = 0, int giveto = AAPTR_DEFAULT);
|
|
action native A_SpawnItem(class<Actor> itemtype = "Unknown", float distance = 0, float zheight = 0, bool useammo = true, bool transfer_translation = false);
|
|
action native A_SpawnItemEx(class<Actor> itemtype, float xofs = 0, float yofs = 0, float zofs = 0, float xvel = 0, float yvel = 0, float zvel = 0, float angle = 0, int flags = 0, int failchance = 0, int tid=0);
|
|
action native A_Print(string whattoprint, float time = 0, name fontname = "");
|
|
action native A_PrintBold(string whattoprint, float time = 0, name fontname = "");
|
|
action native A_Log(string whattoprint);
|
|
action native A_LogInt(int whattoprint);
|
|
action native A_SetTranslucent(float alpha, int style = 0);
|
|
action native A_FadeIn(float reduce = 0.1, int flags = 0);
|
|
action native A_FadeOut(float reduce = 0.1, int flags = 1); //bool remove == true
|
|
action native A_FadeTo(float target, float amount = 0.1, int flags = 0);
|
|
action native A_SetScale(float scalex, float scaley = 0);
|
|
action native A_SetMass(int mass);
|
|
action native A_SpawnDebris(class<Actor> spawntype, bool transfer_translation = false, float mult_h = 1, float mult_v = 1);
|
|
action native A_CheckSight(state label);
|
|
action native A_ExtChase(bool usemelee, bool usemissile, bool playactive = true, bool nightmarefast = false);
|
|
action native A_DropInventory(class<Inventory> itemtype);
|
|
action native A_SetBlend(color color1, float alpha, int tics, color color2 = "");
|
|
action native A_ChangeFlag(string flagname, bool value);
|
|
action native A_CheckFlag(string flagname, state label, int check_pointer = AAPTR_DEFAULT);
|
|
action native A_JumpIf(bool expression, state label);
|
|
action native A_RemoveMaster(int flags = 0);
|
|
action native A_RemoveChildren(bool removeall = false, int flags = 0);
|
|
action native A_RemoveSiblings(bool removeall = false, int flags = 0);
|
|
action native A_KillMaster(name damagetype = "none", int flags = 0);
|
|
action native A_KillChildren(name damagetype = "none", int flags = 0);
|
|
action native A_KillSiblings(name damagetype = "none", int flags = 0);
|
|
action native A_RaiseMaster(bool copy = 0);
|
|
action native A_RaiseChildren(bool copy = 0);
|
|
action native A_RaiseSiblings(bool copy = 0);
|
|
action native A_CheckFloor(state label);
|
|
action native A_CheckCeiling(state label);
|
|
action native A_PlayerSkinCheck(state label);
|
|
action native A_BasicAttack(int meleedamage, sound meleesound, class<actor> missiletype, float missileheight);
|
|
action native A_Teleport(state teleportstate = "", class<SpecialSpot> targettype = "BossSpot", class<Actor> fogtype = "TeleportFog", int flags = 0, float mindist = 128, float maxdist = 0);
|
|
action native A_Warp(int ptr_destination, float xofs = 0, float yofs = 0, float zofs = 0, float angle = 0, int flags = 0, state success_state = "");
|
|
action native A_ThrowGrenade(class<Actor> itemtype, float zheight = 0, float xyvel = 0, float zvel = 0, bool useammo = true);
|
|
action native A_Weave(int xspeed, int yspeed, float xdist, float ydist);
|
|
|
|
action native A_Recoil(float xyvel);
|
|
action native A_JumpIfInTargetInventory(class<Inventory> itemtype, int amount, state label, int forward_ptr = AAPTR_DEFAULT);
|
|
action native A_GiveToTarget(class<Inventory> itemtype, int amount = 0, int forward_ptr = AAPTR_DEFAULT);
|
|
action native A_TakeFromTarget(class<Inventory> itemtype, int amount = 0, int flags = 0, int forward_ptr = AAPTR_DEFAULT);
|
|
action native A_RadiusGive(class<Inventory> itemtype, int distance, int flags, int amount = 0);
|
|
action native A_CountdownArg(int argnum, state targstate = "");
|
|
action native A_CustomMeleeAttack(int damage = 0, sound meleesound = "", sound misssound = "", name damagetype = "none", bool bleed = true);
|
|
action native A_CustomComboAttack(class<Actor> missiletype, float spawnheight, int damage, sound meleesound = "", name damagetype = "none", bool bleed = true);
|
|
action native A_Burst(class<Actor> chunktype);
|
|
action native A_Blast(int flags = 0, int strength = 255, int radius = 255, float speed = 20, class<Actor> blasteffect = "BlastEffect", sound blastsound = "BlastRadius");
|
|
action native A_RadiusThrust(int force = 128, int distance = -1, int flags = RTF_AFFECTSOURCE, int fullthrustdistance = 0);
|
|
action native A_Explode(int damage = -1, int distance = -1, int flags = XF_HURTSOURCE, bool alert = false, int fulldamagedistance = 0, int nails = 0, int naildamage = 10, class<Actor> pufftype = "BulletPuff");
|
|
action native A_Stop();
|
|
action native A_Respawn(int flags = 1);
|
|
action native A_BarrelDestroy();
|
|
action native A_QueueCorpse();
|
|
action native A_DeQueueCorpse();
|
|
action native A_LookEx(int flags = 0, float minseedist = 0, float maxseedist = 0, float maxheardist = 0, float fov = 0, state label = "");
|
|
action native A_ClearLastHeard();
|
|
action native A_ClearTarget();
|
|
action native A_CheckLOF(state jump, int flags = 0, float range = 0, float minrange = 0, float angle = 0, float pitch = 0, float offsetheight = 0, float offsetwidth = 0, int ptr_target = AAPTR_DEFAULT);
|
|
action native A_JumpIfTargetInLOS (state label, float/*angle*/ fov = 0, int flags = 0, float dist_max = 0, float dist_close = 0);
|
|
action native A_JumpIfInTargetLOS (state label, float/*angle*/ fov = 0, int flags = 0, float dist_max = 0, float dist_close = 0);
|
|
action native A_DamageMaster(int amount, name damagetype = "none", int flags = 0);
|
|
action native A_DamageChildren(int amount, name damagetype = "none", int flags = 0);
|
|
action native A_DamageSiblings(int amount, name damagetype = "none", int flags = 0);
|
|
action native A_SelectWeapon(class<Weapon> whichweapon);
|
|
action native A_Punch();
|
|
action native A_Feathers();
|
|
action native A_ClassBossHealth();
|
|
action native A_ShootGun();
|
|
action native A_RocketInFlight();
|
|
action native A_Bang4Cloud();
|
|
action native A_DropFire();
|
|
action native A_GiveQuestItem(int itemno);
|
|
action native A_RemoveForcefield();
|
|
action native A_DropWeaponPieces(class<Actor> p1, class<Actor> p2, class<Actor> p3);
|
|
action native A_PigPain ();
|
|
action native A_MonsterRefire(int chance, state label);
|
|
action native A_SetAngle(float angle = 0, int flags = 0);
|
|
action native A_SetPitch(float pitch, int flags = 0);
|
|
action native A_ScaleVelocity(float scale);
|
|
action native A_ChangeVelocity(float x = 0, float y = 0, float z = 0, int flags = 0);
|
|
action native A_SetArg(int pos, int value);
|
|
action native A_SetUserVar(name varname, int value);
|
|
action native A_SetUserArray(name varname, int index, int value);
|
|
action native A_SetSpecial(int spec, int arg0 = 0, int arg1 = 0, int arg2 = 0, int arg3 = 0, int arg4 = 0);
|
|
action native A_Quake(int intensity, int duration, int damrad, int tremrad, sound sfx = "world/quake");
|
|
action native A_SetTics(int tics);
|
|
action native A_SetDamageType(name damagetype);
|
|
action native A_DropItem(class<Actor> item, int dropamount = -1, int chance = 256);
|
|
action native A_SetSpeed(float speed);
|
|
action native A_DamageSelf(int amount, name damagetype = "none", int flags = 0);
|
|
action native A_DamageTarget(int amount, name damagetype = "none", int flags = 0);
|
|
action native A_DamageTracer(int amount, name damagetype = "none", int flags = 0);
|
|
action native A_KillTarget(name damagetype = "none", int flags = 0);
|
|
action native A_KillTracer(name damagetype = "none", int flags = 0);
|
|
action native A_RemoveTarget(int flags = 0);
|
|
action native A_RemoveTracer(int flags = 0);
|
|
action native A_Remove(int removee, int flags = 0);
|
|
action native A_GiveToChildren(class<Inventory> itemtype, int amount = 0);
|
|
action native A_GiveToSiblings(class<Inventory> itemtype, int amount = 0);
|
|
action native A_TakeFromChildren(class<Inventory> itemtype, int amount = 0);
|
|
action native A_TakeFromSiblings(class<Inventory> itemtype, int amount = 0);
|
|
action native A_SetTeleFog(name oldpos, name newpos);
|
|
action native A_SwapTeleFog();
|
|
|
|
action native A_CheckSightOrRange(float distance, state label);
|
|
action native A_CheckRange(float distance, state label);
|
|
|
|
action native A_RearrangePointers(int newtarget, int newmaster = AAPTR_DEFAULT, int newtracer = AAPTR_DEFAULT, int flags=0);
|
|
action native A_TransferPointer(int ptr_source, int ptr_recepient, int sourcefield, int recepientfield=AAPTR_DEFAULT, int flags=0);
|
|
action native A_CopyFriendliness(int ptr_source = AAPTR_MASTER);
|
|
|
|
action native ACS_NamedExecute(name script, int mapnum=0, int arg1=0, int arg2=0, int arg3=0);
|
|
action native ACS_NamedSuspend(name script, int mapnum=0);
|
|
action native ACS_NamedTerminate(name script, int mapnum=0);
|
|
action native ACS_NamedLockedExecute(name script, int mapnum=0, int arg1=0, int arg2=0, int lock=0);
|
|
action native ACS_NamedLockedExecuteDoor(name script, int mapnum=0, int arg1=0, int arg2=0, int lock=0);
|
|
action native ACS_NamedExecuteWithResult(name script, int arg1=0, int arg2=0, int arg3=0, int arg4=0);
|
|
action native ACS_NamedExecuteAlways(name script, int mapnum=0, int arg1=0, int arg2=0, int arg3=0);
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
TNT1 A -1
|
|
Stop
|
|
Null:
|
|
TNT1 A 1
|
|
Stop
|
|
GenericFreezeDeath:
|
|
// Generic freeze death frames. Woo!
|
|
"####" "#" 5 A_GenericFreezeDeath
|
|
"----" A 1 A_FreezeDeathChunks
|
|
Wait
|
|
GenericCrush:
|
|
POL5 A -1
|
|
Stop
|
|
}
|
|
}
|