Raw model (for completeness)
{
"meta": {
"id": "07ee9a3a-f8b9-4d7c-94e3-fee021316cfe",
"sha1": "30ded1622aa516fa6e3396e33fdb0199e7551da3",
"sha256": "6f1527e75bfe8a89576e2b3b79ee70d0ba2707926f11752b7bda2d608991f91e",
"filenames": [
"expwep-mmrf-b1h.pk3"
],
"additional": {
"engines": [
"ZDOOM"
],
"iwad": [],
"filename": null,
"added": "2018-06-30 12:52:01",
"locked": false,
"canDownload": true,
"adult": false,
"hidden": false,
"name": null,
"description": null,
"maps": null,
"graphicOverrides": null,
"screenshots": null,
"palettes": null,
"categories": null
},
"flags": {
"locked": false,
"canDownload": true,
"adult": false,
"hidden": false
},
"added": "2018-06-30 12:52:01",
"file": {
"type": "PK3",
"size": 80001,
"url": "https://wadarchive2.nyc3.digitaloceanspaces.com/30ded1622aa516fa6e3396e33fdb0199e7551da3/30ded1622aa516fa6e3396e33fdb0199e7551da3.pk3.gz",
"corrupt": false
},
"content": {
"counts": {
"endoom": 0,
"graphics": 0,
"lumps": 82,
"maps": 0,
"palettes": 0
},
"engines_guess": [
"ZDOOM"
]
},
"analysis": {
"title": "expwep-mmrf-b1h",
"description": "This WAD is a small add-on pack focused on introducing new weapons and projectiles, compatible with ZDoom-based engines. It contains no maps and centers on custom weapon actors with unique ammo types and firing mechanics. The content emphasizes experimental armaments with moderate ammo usage and specialized effects rather than traditional map or combat scenarios. The textures and themes are not map-based but weapon-centric, with no direct ties to classic Doom IWADs or vanilla compatibility. Overall, it serves as a weapon expansion rather than a full gameplay or level experience.",
"tags": [
"ammo_moderate",
"custom_projectiles",
"experimental_weapons",
"no_maps",
"weapon_addon",
"zdoom"
],
"origin": "gpt-4.1-mini"
},
"text_files": [
{
"source": "pk3",
"name": "actors/weapons/circuitbreaker.txt",
"contents": "actor CircuitBreakerWep : BaseMM8BDMWep 15000\n//actor CircuitBreakerWep : BaseMM8BDMWep 10036\n{\n//$Category MM8BDM-Weapons\n//$Title Circuit Breaker\nWeapon.AmmoUse 2\nWeapon.AmmoGive 28\nWeapon.SlotNumber 3\nInventory.Pickupmessage \"$PU_CIRCUITBREAKER\"\nObituary \"$OB_CIRCUITBREAKER\"\nTag \"$TAG_CIRCUITBREAKER\"\nweapon.ammotype \"CircuitBreakerAmmo\"\ninventory.icon \"CIBRI\"\nStates\n{\nSpawn:\nCBRK A 1\nloop\nReady:\nCBRK C 0 ACS_ExecuteAlways(998,0,750)\nCBRK C 1 A_WeaponReady\nGoto Ready+1\nDeselect:\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower\nCBRK C 1 A_Lower\nLoop\nSelect:\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise\nCBRK C 1 A_Raise\nLoop\nFire:\nCBRK C 0 A_JumpIfNoAmmo(\"NoAmmo\")\nCBRK C 0 A_PlaySoundEx(\"weapon/circuit\",\"Weapon\")\nCBRK DE 2\nCBRK C 0 A_FireCustomMissile(\"CircuitBreaker\",-8,1,3,12,0)\nCBRK C 0 A_FireCustomMissile(\"CircuitBreaker\",8,0,-3,6,0)\nCBRK F 3\nCBRK ED 1\nCBRK D 0 A_Refire\nGoto Ready+1\nNoAmmo:\nCBRK C 1 ACS_Execute(979,0)\nGoto Ready+1\n}\n}\n\nactor CircuitBreakerAmmo : Ammo\n{\ninventory.amount 1\ninventory.maxamount 28\n+INVENTORY.IGNORESKILL\n}\n\nactor CircuitBreaker\n{\nPROJECTILE\nRadius 5\nHeight 5\nscale 2.5\ndamagetype \"CircuitBreaker\"\nObituary \"$OB_CIRCUITBREAKER\"\ndamage (2)\nspeed 55\nStates\n{\nSpawn:\nCBRK B 1\nloop\nDeath:\nNAPA A 0 A_Stop\nNAPA A 0 A_PlaySoundEx(\"misc/mm3explosion\", \"Weapon\")\nNAPA A 0 A_ChangeFlag(\"NOGRAVITY\",1)\nNAPA D 0 A_Explode(12, 96, 0)\nNAPA FGHIJKLMNOPQRS 2\nstop\n}\n}"
},
{
"source": "pk3",
"name": "actors/weapons/pulsestopper.txt",
"contents": "actor PulseStopperWep : BaseMM8BDMWep 15001\n{\n//$Category MM8BDM-Weapons\n//$Title Pulse Stopper\nWeapon.AmmoUse 1\nWeapon.AmmoGive 28\nWeapon.SlotNumber 4\nInventory.Pickupmessage \"$PU_PULSESTOPPER\"\nObituary \"$OB_PULSESTOPPER\"\nTag \"$TAG_PULSESTOPPER\"\nweapon.ammotype \"PulseStopperAmmo\"\ninventory.icon \"PSTOPI\"\nStates\n{\nSpawn:\nPSTP A 1\nloop\nReady:\nPSTP A 0 ACS_ExecuteAlways(998,0,751)\nPSTP C 1 A_WeaponReady\nGoto Ready+1\nDeselect:\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower\nPSTP C 1 A_Lower\nLoop\nSelect:\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise\nPSTP C 1 A_Raise\nLoop\nFire:\nPSTP A 0 A_JumpIfNoAmmo(\"NoAmmo\")\nPSTP DE 1\nPSTP C 0 A_PlaySoundEx(\"weapon/pulse\",\"Weapon\")\nGoto Hold\nHold:\nPSTP A 0 A_JumpIfNoAmmo(\"NoAmmo\")\nTNT1 A 0 A_JumpIfInventory(\"IsBot\", 1, \"Botfire\")\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius2\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius2\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP A 0 A_Refire\nGoto Throw1\nThrow1:\nPSTP A 0 A_FireCustomMissile(\"PulseStopper\",0,1,0,0)\nPSTP ED 5\nPSTP C 12 A_ClearRefire\nGoto Ready+1\nBotfire:\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius2\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius2\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius2\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius2\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius2\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius2\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius2\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP E 1 A_SpawnItemEx(\"PulseStopRadius2\",2,0,32,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)\nPSTP A 0 A_FireCustomMissile(\"PulseStopper\",0,1,0,0)\nPSTP ED 5\nPSTP C 7 A_ClearRefire\nGoto Ready+1\nNoAmmo:\nPSTP D 1 ACS_Execute(979,0)\nPHAN A 0 A_Refire\nGoto Ready+1\n}\n}\n\nactor PulseStopperAmmo : Ammo\n{\ninventory.amount 1\ninventory.maxamount 28\n+INVENTORY.IGNORESKILL\n}\n\nactor PulseStopper\n{\nPROJECTILE\nRadius 10\nHeight 10\nscale 2.5\ndamage (8)\ndamagetype \"PulseStopper\"\nObituary \"$OB_PULSESTOPPER\"\n+RIPPER\n+FORCEXYBILLBOARD\nspeed 16\nStates\n{\nSpawn:\nPSTP B 1\nloop\nDeath:\nPSTP B 1 A_FadeOut(0.2)\nloop\n}\n}\n\nactor PulseStopRadius\n{\n-SOLID\n+NOGRAVITY\n+FORCEXYBILLBOARD\nScale 2.5\ndamagetype \"PulseStopper\"\nObituary \"$OB_PULSESTOPPER\"\nStates\n{\nSpawn:\nPSTP B 0\nPSTP B 2 A_Explode(8,80,0)\nstop\n}\n}\n\nactor PulseStopRadius2\n{\n-SOLID\n+NOGRAVITY\n+FORCEXYBILLBOARD\nScale 2.5\ndamagetype \"PulseStopper\"\nObituary \"$OB_PULSESTOPPER\"\nStates\n{\nSpawn:\nPSTP B 0\nPSTP B 2 //A_Explode(2,80,0)\nstop\n}\n}"
},
{
"source": "pk3",
"name": "actors/weapons/cryptcloak.txt",
"contents": "actor CryptCloakWep : BaseMM8BDMWep 15002\n{\n//$Category MM8BDM-Weapons\n//$Title Crypt Cloak\nWeapon.AmmoUse 1\nWeapon.AmmoGive 108\nWeapon.SlotNumber 7\nInventory.Pickupmessage \"$PU_CRYPTCLOAK\"\nObituary \"$OB_CRYPTCLOAK\"\nTag \"$TAG_CRYPTCLOAK\"\nweapon.ammotype \"CryptCloakAmmo\"\ninventory.icon \"CRYPTI\"\nStates\n{\nSpawn:\nCRCL A 1\nloop\nReady:\nCRCL E 0 ACS_ExecuteAlways(998,0,752)\nCRCL E 1 A_WeaponReady\nGoto Ready+1\nDeselect:\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower\nCRCL E 1 A_Lower\nLoop\nSelect:\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise\nCRCL E 1 A_Raise\nLoop\nFire:\nSKLA A 0 A_JumpIfInventory(\"IsBot\", 1, \"ScrewBot\")\nSKLA A 0 A_JumpIfInventory(\"CloakedCheck\", 1, \"Uncloak\")\nSKLA A 0 A_JumpIfNoAmmo(\"NoAmmo\")\ngoto Cloak\nCloak:\nSKLA A 0 A_GiveInventory(\"CloakedCheck\", 1)\nTNT1 A 0 A_GiveInventory(\"ShieldCheck\", 1)\nSKLA A 0 ACS_ExecuteAlways(991,0,758)\nCRCL G 0 A_TakeInventory(\"CryptCloakAmmo\",2)\nCENF D 0 A_PlaySoundEx(\"weapon/cloakon\", \"weapon\")\nCRCL J 1 A_SetTranslucent(0.9)\nCRCL J 1 A_SetTranslucent(0.8)\nCRCL K 1 A_SetTranslucent(0.7)\nCRCL K 1 A_SetTranslucent(0.6)\nCRCL L 1 A_SetTranslucent(0.5)\nCRCL L 1 A_SetTranslucent(0.4)\nCRCL L 1 A_SetTranslucent(0.3)\nCRCL L 1 A_SetTranslucent(0.2)\nCRCL L 1 A_SetTranslucent(0.1)\nCRCL L 1 A_SetTranslucent(0.0)\nCRCL F 0 A_ChangeFlag(CANTSEEK, true)\nCRCL F 0 A_ChangeFlag(INVISIBLE, true)\nCloakActivate:\nCRCL L 5\nCloakActive:\nSKLA A 0 A_JumpIfNoAmmo(\"Uncloak\")\nCRCL L 1 A_WeaponReady(WRF_NOSWITCH)\nCRCL L 1 A_WeaponReady(WRF_NOSWITCH)\nCRCL G 0 A_TakeInventory(\"CryptCloakAmmo\",1)\nTOPH A 0 A_CheckFloor(\"CloakActive\")\ngoto Airtime\nAirTime:\nSKLA A 0 A_JumpIfNoAmmo(\"Uncloak\")\nCRCL L 1 A_WeaponReady(WRF_NOSWITCH)\nCRCL L 1 A_WeaponReady(WRF_NOSWITCH)\nCRCL G 0 A_TakeInventory(\"CryptCloakAmmo\",1)\nTOPH A 0 A_CheckFloor(\"Stomp\")\ngoto Airtime\nStomp:\nNAPA A 0 A_PlaySoundEx(\"misc/mm3explosion\", \"Weapon\")\nCRCL G 0 A_SpawnItemEx(\"CloakWave\",0,0,0,35,0,0,0)\nCRCL G 0 A_SpawnItemEx(\"CloakWave\",0,0,0,35,0,0,45)\nCRCL G 0 A_SpawnItemEx(\"CloakWave\",0,0,0,35,0,0,90)\nCRCL G 0 A_SpawnItemEx(\"CloakWave\",0,0,0,35,0,0,135)\nCRCL G 0 A_SpawnItemEx(\"CloakWave\",0,0,0,35,0,0,180)\nCRCL G 0 A_SpawnItemEx(\"CloakWave\",0,0,0,35,0,0,-45)\nCRCL G 0 A_SpawnItemEx(\"CloakWave\",0,0,0,35,0,0,-90)\nCRCL G 0 A_SpawnItemEx(\"CloakWave\",0,0,0,35,0,0,-135)\ngoto CloakActive\nUncloak:\nCENF D 0 A_PlaySoundEx(\"weapon/cloakoff\", \"weapon\")\nSKLA A 0 ACS_ExecuteAlways(991,0,752)\nTNT1 A 0 A_TakeInventory(\"ShieldCheck\", 1)\nSKLA K 0 A_TakeInventory(\"CloakedCheck\", 1)\nCRCL F 0 A_ChangeFlag(INVISIBLE, false)\nCRCL F 0 A_ChangeFlag(CANTSEEK, false)\nCRCL H 1 A_SetTranslucent(0.1)\nCRCL H 1 A_SetTranslucent(0.2)\nCRCL H 1 A_SetTranslucent(0.3)\nCRCL G 1 A_SetTranslucent(0.4)\nCRCL G 1 A_SetTranslucent(0.5)\nCRCL G 1 A_SetTranslucent(0.6)\nCRCL F 1 A_SetTranslucent(0.7)\nCRCL F 1 A_SetTranslucent(0.8)\nCRCL F 1 A_SetTranslucent(0.9)\nCRCL E 1 A_SetTranslucent(1.0)\nGoto Ready+1\nNoAmmo:\nCRCL E 1 ACS_Execute(979,0)\nGoto Ready+1\nScrewBot:\nSKLA A 0\nGoto Deselect\n}\n}\n\nactor CryptCloakAmmo : Ammo\n{\ninventory.amount 1\ninventory.maxamount 108\n+INVENTORY.IGNORESKILL\n}\n\nactor CloakedCheck : Inventory\n{\ninventory.amount 1\ninventory.maxamount 1\n}\n\nactor CloakWave\n{\n-SOLID\nPROJECTILE\n-NOGRAVITY\nDamage (15)\ndamagetype \"CryptCloak\"\nObituary \"$OB_CRYPTCLOAK\"\nHeight 40\nRadius 6\nScale 2.5\ngravity 900.0\nspeed 35\nStates\n{\nSpawn:\nTNT1 A 1\nCRCL A 0 A_GiveInventory(\"Clip\",1)\nCRCL BCD 3 A_SpawnItemEx(\"CloakTrail\",-1,0,0,0,0,0)\nGoto Spawn+2\nCrash:\nXDeath:\nTNT1 A 0\nstop\nDeath:\nTNT1 A 0 A_JumpIfInventory(\"Clip\",1,\"Continue\")\nTNT1 A 1\nstop\nContinue:\nTNT1 A 0 A_CustomMissile(\"CloakWave\",0,0,0,2,0)\nTNT1 A 1\nstop\n}\n}\n\nactor CloakTrail\n{\n+NOINTERACTION\n+NOGRAVITY\n+CLIENTSIDEONLY\n+FORCEXYBILLBOARD\n-SOLID\nscale 2.5\nheight 0\nradius 0\nStates\n{\nSpawn:\nTNT1 A 0\nCRCL DCB 3\nstop\n}\n}"
},
{
"source": "pk3",
"name": "actors/weapons/phantomfuse.txt",
"contents": "actor PhantomFuseWep : BaseMM8BDMWep 15003\n{\n//$Category MM8BDM-Weapons\n//$Title Phantom Fuse\nWeapon.AmmoUse 3\nWeapon.AmmoGive 28\nWeapon.SlotNumber 5\nObituary \"$OB_PHANTOMFUSE\"\nTag \"$TAG_PHANTOMFUSE\"\nInventory.Pickupmessage \"$PU_PHANTOMFUSE\"\nweapon.ammotype \"PhantomFuseAmmo\"\ninventory.icon \"PHNFUI\"\nStates\n{\nSpawn:\nPHFU A 1\nloop\nReady:\nPHFU A 0 ACS_ExecuteAlways(998,0,753)\nPHFU F 1 A_WeaponReady\nGoto Ready+1\nDeselect:\nPHFU A 0 A_JumpIfInventory(\"BlackHoleFlag\",1,\"DeselectSwitch\")\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower\nPHFU F 1 A_Lower\nGoto Deselect+1\nDeselectSwitch:\nPHFU F 2 A_GiveInventory(\"BlackHoleFlag\",3)\nPHFU F 0 A_TakeInventory(\"BlackHoleFlag\",999)\nGoto Deselect+1\nSelect:\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise\nPHFU F 1 A_Raise\nLoop\nFire:\nBHUD A 0 A_JumpIfInventory(\"BlackHoleBombCooldown\", 1, \"NoAmmo\")\nBHUD A 0 A_JumpIfInventory(\"BlackHoleFlag\",1,\"NoAmmo\")\nBHUD A 0 A_JumpIfNoAmmo(\"NoAmmo\")\nPHFU F 1 A_PlaySoundEx(\"weapon/fuse\", \"Weapon\")\nBHUD A 0 A_SpawnItemEx(\"PhantomFuse\", 0, 8, 32, cos(-pitch)*10, 0, sin(-pitch)*10, 0, SXF_TRANSFERPITCH)\nBHUD A 0 A_TakeInventory(\"PhantomFuseAmmo\", 3)\nBHUD A 0 A_GiveInventory(\"BlackHoleFlag\",1)\nPHFU GH 3\nPHFU F 10\nBlackHoleWait:\nPHFU A 0 A_JumpIfInventory(\"BlackHoleFlag\",2,\"NoAmmo\")\nPHFU F 1 A_WeaponReady\nloop\nCooldown:\nPHFU F 1 A_RailWait\nBHUD A 0 A_JumpIfInventory(\"BlackHoleBombCooldown\", 1, \"Cooldown\")\nBHUD A 0 A_TakeInventory(\"BlackHoleFlag\",999)\nGoto Ready+1\nNoAmmo:\nPHFU F 1 ACS_Execute(979,0)\nGoto Ready+1\n}\n}\n\nactor PhantomFuseAmmo : Ammo\n{\ninventory.amount 1\ninventory.maxamount 28\n+INVENTORY.IGNORESKILL\n}\n\nactor PhantomFuse\n{\nPROJECTILE\n+NOTARGETSWITCH\n+FORCEXYBILLBOARD\n+RIPPER\n+SKYEXPLODE\nObituary \"$OB_PHANTOMFUSE\"\nRadius 15\nHeight 8\nscale 2.5\ndamage (0)\ndamagetype \"PhantomFuse\"\nspeed 64\nStates\n{\nSpawn:\nPHFU B 0\nPHFU B 1 A_JumpIfInTargetInventory(\"BlackHoleFlag\",3,\"Death\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU B 1 A_JumpIfInTargetInventory(\"BlackHoleFlag\",3,\"Death\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU B 0 ACS_ExecuteAlways(259, 0, 1)\nPHFU B 0 A_ChangeVelocity(cos(-pitch)*40, 0, sin(-pitch)*40, CVF_RELATIVE|CVF_REPLACE)\nPHFU B 1 A_JumpIfInTargetInventory(\"BlackHoleFlag\",3,\"Death\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU B 1 A_JumpIfInTargetInventory(\"BlackHoleFlag\",3,\"Death\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU B 0 ACS_ExecuteAlways(259, 0, 1)\nPHFU B 0 A_ChangeVelocity(cos(-pitch)*40, 0, sin(-pitch)*40, CVF_RELATIVE|CVF_REPLACE)\n\nPHFU C 1 A_JumpIfInTargetInventory(\"BlackHoleFlag\",3,\"Death\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU C 1 A_JumpIfInTargetInventory(\"BlackHoleFlag\",3,\"Death\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU B 0 A_SpawnItemEx(\"PhantomFX\",random(10,-10),random(10,-10),random(10,-10))\nPHFU B 0 A_ChangeVelocity(cos(-pitch)*40, 0, sin(-pitch)*40, CVF_RELATIVE|CVF_REPLACE)\nPHFU C 1 A_JumpIfInTargetInventory(\"BlackHoleFlag\",3,\"Death\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU C 1 A_JumpIfInTargetInventory(\"BlackHoleFlag\",3,\"Death\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU B 0 A_SpawnItemEx(\"PhantomFX\",random(10,-10),random(10,-10),random(10,-10))\nPHFU B 0 A_ChangeVelocity(cos(-pitch)*40, 0, sin(-pitch)*40, CVF_RELATIVE|CVF_REPLACE)\n\n/*PHFU BB 1 A_JumpIfInTargetInventory(\"BlackHoleFlag\",3,\"Death\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU B 0 ACS_ExecuteAlways(259, 0, 1)\nPHFU B 0 A_ChangeVelocity(cos(-pitch)*30, 0, sin(-pitch)*30, CVF_RELATIVE|CVF_REPLACE)\nPHFU BB 1 A_JumpIfInTargetInventory(\"BlackHoleFlag\",3,\"Death\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU B 0 ACS_ExecuteAlways(259, 0, 1)\nPHFU B 0 A_ChangeVelocity(cos(-pitch)*30, 0, sin(-pitch)*30, CVF_RELATIVE|CVF_REPLACE)\n\nPHFU CC 1 A_JumpIfInTargetInventory(\"BlackHoleFlag\",3,\"Death\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU B 0 A_SpawnItemEx(\"PhantomFX\",random(10,-10),random(10,-10),random(10,-10))\nPHFU B 0 A_ChangeVelocity(cos(-pitch)*30, 0, sin(-pitch)*30, CVF_RELATIVE|CVF_REPLACE)\nPHFU CC 1 A_JumpIfInTargetInventory(\"BlackHoleFlag\",3,\"Death\")\nPHFU B 0 A_SpawnItemEx(\"PhantomTrail\")\nPHFU B 0 A_SpawnItemEx(\"PhantomFX\",random(10,-10),random(10,-10),random(10,-10))\nPHFU B 0 A_ChangeVelocity(cos(-pitch)*30, 0, sin(-pitch)*30, CVF_RELATIVE|CVF_REPLACE)*/\nloop\nDeath:\nPHFU B 1\nNAPA A 0 A_PlaySoundEx(\"misc/mm3explosion\", \"Weapon\")\nBLKH B 0 A_TakeFromTarget(\"BlackHoleFlag\",999)\nPHFU B 0 A_Explode(50,128,0)\nPHFU B 0 A_SpawnItemEx(\"PhantomExplosion2\",0,0,0,0,0,0,0)\nPHFU B 0 A_SpawnItemEx(\"PhantomExplosion\",random(-128,128),random(-128,128),random(-64,64),0,0,0,0)\nPHFU B 0 A_SpawnItemEx(\"PhantomExplosion\",random(-128,128),random(-128,128),random(-64,64),0,0,0,0)\nPHFU B 0 A_SpawnItemEx(\"PhantomExplosion\",random(-128,128),random(-128,128),random(-64,64),0,0,0,0)\nPHFU B 0 A_SpawnItemEx(\"PhantomExplosion\",random(-128,128),random(-128,128),random(-64,64),0,0,0,0)\nstop\n}\n}\n\nactor PhantomTrail\n{\n+NOINTERACTION\n+NOGRAVITY\n+CLIENTSIDEONLY\n+FORCEXYBILLBOARD\n-SOLID\nscale 2.5\nheight 0\nradius 0\nStates\n{\nSpawn:\nTNT1 A 2\nPHFU EEEEE 3\nstop\n}\n}\n\nactor PhantomFX : PhantomTrail\n{\nStates\n{\nSpawn:\nPHFU D 2 A_Fadeout(0.1)\nloop\n}\n}\n\nactor PhantomExplosion : PhantomTrail\n{\nStates\n{\nSpawn:\nTNT1 A 0\nNAPA FGHIJKLMNOPQRS 2\nstop\n}\n}\n\nactor PhantomExplosion2 : PhantomTrail\n{\nscale 3.5\nStates\n{\nSpawn:\nTNT1 A 0\nNAPA FGHIJKLMNOPQRS 2\nstop\n}\n}"
},
{
"source": "pk3",
"name": "actors/weapons/photonflare.txt",
"contents": "actor PhotonFlareWep : BaseMM8BDMWep 15004\n{\n//$Category MM8BDM-Weapons\n//$Title Photon Flare\nWeapon.AmmoUse 4\nWeapon.AmmoGive 28\nWeapon.SlotNumber 6\nInventory.Pickupmessage \"$PU_PHOTONFLARE\"\nObituary \"$OB_PHOTONFLARE\"\nTag \"$TAG_PHOTONFLARE\"\nweapon.ammotype \"PhotonFlareAmmo\"\ninventory.icon \"PHOFLI\"\nStates\n{\nSpawn:\nPHFL A 1\nloop\nReady:\nPHFL A 0 ACS_ExecuteAlways(998,0,754)\nPHFL E 1 A_WeaponReady\nGoto Ready+1\nDeselect:\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower\nPHFL E 1 A_Lower\nloop\nSelect:\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise\nPHFL E 1 A_Raise\nLoop\nFire:\nPHFL E 0 A_JumpIfInventory(\"PhotonFlareCooldown\",57,\"NoFire\")\ngoto FireReal\nNoFire:\nPHFL E 1\ngoto Ready+1\nFireReal:\nPHFL E 0 A_JumpIfNoAmmo(\"NoAmmo\")\nPHFL E 0 A_SpawnItemEx(\"PhotonFlare\",0,0,8,0,0,0,0)\nPHFL E 0 A_TakeInventory(\"PhotonFlareAmmo\",4)\nPHFL E 0 A_PlaySoundEx(\"weapon/photon\",\"Weapon\")\nPHFL E 0 A_SpawnItemEx(\"PhotonWatcher\")\nPHFL FGHI 2\nTNT1 A 3\nPHFL IHGF 4\nPHFL E 2\nPHFL E 0 A_Refire\nGoto Ready+1\nNoAmmo:\nPHFL E 1 ACS_Execute(979,0)\ngoto Ready+1\n}\n}\n\nactor PhotonFlareAmmo : Ammo\n{\ninventory.amount 1\ninventory.maxamount 28\n+INVENTORY.IGNORESKILL\n}\n\nactor PhotonFlareCooldown : Inventory\n{\ninventory.amount 1\ninventory.maxamount 112\n}\n\nactor PhotonFlare\n{\nPROJECTILE\n+SEEKERMISSILE\n+LOOKALLAROUND\n+DONTBLAST\nradius 16\nheight 16\nScale 2.5\nspeed 0\nmeleerange 256\nreactiontime 50\nStates\n{\nSpawn:\nPHFL B 0\nPHFL BCDCBCDC 3 A_ChangeVelocity(0,0,3,CVF_REPLACE)\nPHFL BCDC 3 A_ChangeVelocity(0,0,2,CVF_REPLACE)\nPHFL BCDC 3 A_ChangeVelocity(0,0,1,CVF_REPLACE)\nPHFL B 0 A_Stop\nPHFL B 0 //A_SpawnItemEx(\"PhotonWatcher\")\nLook:\nPHFL B 1 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256, 2)\nPHFL BCDC 3 A_JumpIfTargetInLOS(\"Explode\", 0, JLOSF_PROJECTILE, 256)\nPHFL B 0 A_CountDown\nloop\nPain:\nPHFL A 0 A_Stop\nPHFL B 1 A_SpawnItem(\"PainFX\",0,8)\nGoto Look\nSee:\nExplode:\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,6,0,4,0)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,6,0,4,-45)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,6,0,4,45)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,6,0,4,90)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,6,0,4,-90)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,6,0,4,-135)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,6,0,4,135)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,6,0,4,180)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,12,0,4,0)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,12,0,4,-45)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,12,0,4,45)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,12,0,4,90)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,12,0,4,-90)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,12,0,4,-135)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,12,0,4,135)\nPHFL B 0 A_SpawnItemEx(\"PhotonFlare2\",0,0,4,12,0,4,180)\n//PHFL B 0 A_TakeFromTarget(\"PhotonFlag\",1)\nDeath:\nNAPA A 0 A_PlaySoundEx(\"misc/mm3explosion\", \"Weapon\")\nNAPA FGHIJKLMNOPQRS 2\nstop\n}\n}\n\nactor PhotonFlare2\n{\nPROJECTILE\ndamagetype \"PhotonFlare\"\nObituary \"$OB_PHOTONFLARE\"\nRadius 6\nHeight 7\nscale 2.5\n-NOGRAVITY\nspeed 0\nreactiontime 15\nStates\n{\nSpawn:\nPHFL A 0\nPHFL A 0 A_CountDown\nPHFL BC 3\nGoto Spawn+1\nDeath:\nNAPA A 0 A_Stop\nNAPA A 0 A_PlaySoundEx(\"misc/mm3explosion\", \"Weapon\")\nNAPA A 0 A_ChangeFlag(\"NOGRAVITY\",1)\nNAPA D 0 A_Explode(18, 160, 0)\nNAPA FGHIJKLMNOPQRS 2\nstop\n}\n}\n\nactor PhotonWatcher\n{\nHeight 0\nRadius 0\n+NOINTERACTION\n-SOLID\n+NOGRAVITY\n+MISSILE\n+DONTBLAST\nStates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_JumpIfInTargetInventory(\"PhotonFlareCooldown\",1,\"JustGive\")\nTNT1 A 0 A_GiveToTarget(\"PhotonFlareCooldown\",56)\ngoto Spawn2\nJustGive:\nTNT1 A 0 A_GiveToTarget(\"PhotonFlareCooldown\",56)\nstop\nSpawn2:\nTNT1 A 1\nTNT1 A 0 A_JumpIfInTargetInventory(\"PhotonFlareCooldown\",1,1)\nstop\nTNT1 A 0 A_GiveInventory(\"CutterFlag\",1)\nTNT1 A 0 A_JumpIfInventory(\"CutterFlag\",12,\"TakeCooldown\")\ngoto Spawn2\nTakeCooldown:\nTNT1 A 0 A_TakeFromTarget(\"PhotonFlareCooldown\",1)\nTNT1 A 0 A_JumpIfInTargetInventory(\"PhotonFlareCooldown\",1,1)\nstop\nTNT1 A 0 A_TakeInventory(\"CutterFlag\",999)\ngoto Spawn2\n}\n}"
},
{
"source": "pk3",
"name": "actors/weapons/shockgauntlet.txt",
"contents": "actor ShockGauntletWep : BaseMM8BDMWep 15005\n{\n//$Category MM8BDM-Weapons\n//$Title Shock Gauntlet\nWeapon.AmmoUse 2\nWeapon.AmmoGive 28\nWeapon.SlotNumber 4\nInventory.Pickupmessage \"$PU_SHOCKGAUNTLET\"\nObituary \"$OB_SHOCKGAUNTLET\"\nTag \"$TAG_SHOCKGAUNTLET\"\nweapon.ammotype \"ShockGauntletAmmo\"\ninventory.icon \"SHOGSI\"\nStates\n{\nSpawn:\nSHCG A 1\nloop\nReady:\nSHCG E 0 ACS_ExecuteAlways(998,0,755)\nSHCG D 1 A_WeaponReady\nGoto Ready+1\nDeselect:\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower\nSHCG D 1 A_Lower\nLoop\nSelect:\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise\nSHCG D 1 A_Raise\nLoop\nFire:\nSHCG D 0 A_JumpIfNoAmmo(\"NoAmmo\")\nSHCG D 0 A_PlaySoundEx(\"weapon/thunderbolt\",\"Weapon\")\nSHCG D 0 A_FireCustomMissile(\"ShockGauntlet\",0,1,8,0)\nSHCG EF 4\nSHCG D 15\nSHCG E 0 A_Refire\nGoto Ready+1\nNoAmmo:\nSHCG D 1 ACS_Execute(979,0)\nGoto Ready+1\n}\n}\n\nactor ShockGauntletAmmo : Ammo\n{\ninventory.amount 1\ninventory.maxamount 28\n+INVENTORY.IGNORESKILL\n}\n\nactor ShockGauntlet : FastProjectile\n{\nPROJECTILE\nRadius 12\nHeight 12\nscale 2.5\ndamage (3)\n+RIPPER\n+NOTARGETSWITCH\n+PIERCEARMOR\nmeleerange 12\ndamagetype \"ShockGauntlet\"\nObituary \"$OB_SHOCKGAUNTLET\"\nspeed 64\nreactiontime 15\nStates\n{\nSpawn:\nSHCG B 1 A_Countdown\nloop\nDeath:\nRING A 0\nRING A 0 A_CustomMissile(\"ReturningGauntlet\",0,0,0,0)\nstop\n}\n}\n\nactor ReturningGauntlet : ShockGauntlet\n{\n+PAINLESS\ndamage (0)\nradius 0\nheight 0\nspeed 25\nStates\n{\nSpawn:\nSHCG C 0\nSHCG C 0 A_JumpIfCloser(32,\"Death\")\nSHCG CC 1 ACS_ExecuteAlways(347, 0, 140, 32, 80)\nSHCG C 0 A_JumpIfCloser(32,\"Death\")\nSHCG CC 1 ACS_ExecuteAlways(347, 0, 140, 32, 80)\nSHCG C 0 A_FaceTarget\nSHCG C 0 A_CustomMissile(\"ReturningGauntlet\",0,0,0,0)\nstop\nDeath:\nSHCG C 0\nSHCG C 1\nstop\n}\n}"
},
{
"source": "pk3",
"name": "actors/weapons/virusoutbreak.txt",
"contents": "actor VirusOutbreakWep : BaseMM8BDMWep 15007\n{\n//$Category MM8BDM-Weapons\n//$Title Virus Outbreak\nWeapon.AmmoUse 1\nWeapon.AmmoGive 112\nWeapon.SlotNumber 7\nInventory.Pickupmessage \"$PU_VIRUSOUTBREAK\"\nObituary \"$OB_VIRUSOUTBREAK\"\nTag \"$TAG_VIRUSOUTBREAK\"\nweapon.ammotype \"VirusOutbreakAmmo\"\ninventory.icon \"VIRUOI\"\nStates\n{\nSpawn:\nVIRU Z 1\nloop\nReady:\nSWHE G 0 ACS_ExecuteAlways(998,0,757)\nVIRU B 0 A_JumpIfInventory(\"VirusOutbreakAmmo\",1,\"Ready2\")\nVIRU B 0 A_TakeInventory(\"ReadyToGiveExtends\",999)\nVIRU B 1 A_WeaponReady\nGoto Ready+1\nReady2:\nVIRU B 0 A_JumpIfInventory(\"VirusExtend\",1,\"Ready3\")\nVIRU B 1 A_WeaponReady\nGoto Ready+1\nReady3:\nVIRU B 0 A_GiveInventory(\"AmmoTake\",1)\nVIRU B 0 A_JumpIfInventory(\"AmmoTake\",5,\"ReadyTake\")\nVIRU B 1 A_WeaponReady\nGoto Ready+1\nReadyTake:\nVIRU B 0 A_TakeInventory(\"AmmoTake\",999)\nVIRU B 0 A_TakeInventory(\"VirusExtend\",2)\nVIRU B 1 A_WeaponReady\nGoto Ready+1\nDeselect:\nTNT1 A 0 A_GiveInventory(\"VirusCancel\",1)\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower\nVIRU B 1 A_Lower\nLoop\nSelect:\nTNT1 A 0 A_TakeInventory(\"VirusCancel\",999)\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise\nVIRU B 1 A_Raise\nLoop\nReadyBuffer:\nTNT1 A 0\ngoto Ready+1 //agh why is there no better way of doing this\nFire:\nVIRU B 0 A_JumpIfNoAmmo(\"NoAmmo\")\nTNT1 A 0 A_JumpIfInventory(\"VirusExtend\",28,\"ReadyBuffer\")\nTNT1 A 0 A_JumpIfInventory(\"ReadyToGiveExtends\",1,\"HoldSkipStart\")\nVIRU B 0 A_SpawnItemEX(\"VirusOutbreakShieldHandler\")\nVIRU B 0 A_SpawnItemEX(\"VirusAmmoWatcher\")\nVIRU B 0 A_PlaySoundEx(\"weapon/virus\",\"Weapon\")\nVIRU CDEFG 2\nGoto Hold\nHold:\nTNT1 A 0 A_JumpIfInventory(\"ReadyToGiveExtends\",1,\"HoldSkip\")\nTNT1 A 0 A_GiveInventory(\"ReadyToGiveExtends\",1)\nTNT1 A 0 A_Refire\nGoto ThrowNormal\nHoldSkipStart:\nVIRU CDEFG 2\ngoto HoldSkip\nHoldSkip:\nTNT1 A 0 A_JumpIfInventory(\"VirusOutbreakAmmo\",1,\"HoldStart\")\nGoto Throw\nHoldStart:\nVIRU B 0 A_PlaySoundEx(\"weapon/virus\",\"Weapon\")\nTNT1 A 5 A_GiveInventory(\"VirusExtend\",4)\nTNT1 A 0 A_Refire\nGoto Throw\nThrow:\nVIRU HI 2 A_ClearRefire\nGoto Ready+1\nThrowNormal:\nTNT1 A 5\nVIRU HI 2 A_ClearRefire\nGoto Ready+1\nNoAmmo:\nVIRU B 1 ACS_Execute(979,0)\nGoto Ready+1\n}\n}\n\nactor VirusOutbreakAmmo : Ammo\n{\ninventory.amount 1\ninventory.maxamount 112\n+INVENTORY.IGNORESKILL\n}\n\nactor VirusExtend : Inventory\n{\ninventory.amount 1\ninventory.maxamount 28\n+INVENTORY.IGNORESKILL\n}\n\nactor AmmoTake : Inventory\n{\ninventory.amount 1\ninventory.maxamount 175\n+INVENTORY.IGNORESKILL\n}\n\nactor ReadyToGiveExtends : Inventory\n{\ninventory.amount 1\ninventory.maxamount 1\n+INVENTORY.IGNORESKILL\n}\n\nactor VirusCancel : Inventory\n{\ninventory.amount 1\ninventory.maxamount 1\n+INVENTORY.IGNORESKILL\n}\n\nactor VirusOutbreakShieldHandler\n{\n+NOCLIP\n//height 0\n//radius 0\nPROJECTILE\n+RIPPER\n+NOINTERACTION\n+DONTSPLASH\n+NOBLOCKMONST\n+NOTELEFRAG\ndamagetype \"VirusOutbreak\"\nvar int user_owner;\nStates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 3 A_SetUserVar(\"user_owner\",ACS_ExecuteWithResult(257,0))\nTNT1 A 0 A_JumpIf(user_owner<=0, \"Death\")\nOkPerfect:\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusCancel\",1,\"Death\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",27,\"OkPerfect8\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",23,\"OkPerfect7\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",29,\"OkPerfect6\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",15,\"OkPerfect5\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",11,\"OkPerfect4\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",7,\"OkPerfect3\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",3,\"OkPerfect2\")\nTNT1 A 1 Thing_Move(0,user_owner,1)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreakSpawn\")\nTNT1 A 0 A_Explode(5,54,0)\nTNT1 A 0 A_SetAngle(angle+12)\nTNT1 A 0\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"OkPerfect\")\ngoto Death\nOkPerfect2:\nTNT1 A 1 Thing_Move(0,user_owner,1)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreakSpawn2\")\nTNT1 A 0 A_Explode(5,64,0)\nTNT1 A 0 A_SetAngle(angle+12)\nTNT1 A 0\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"OkPerfect\")\ngoto Death\nOkPerfect3:\nTNT1 A 1 Thing_Move(0,user_owner,1)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreakSpawn3\")\nTNT1 A 0 A_Explode(5,76,0)\nTNT1 A 0 A_SetAngle(angle+12)\nTNT1 A 0\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"OkPerfect\")\ngoto Death\nOkPerfect4:\nTNT1 A 1 Thing_Move(0,user_owner,1)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreakSpawn4\")\nTNT1 A 0 A_Explode(5,88,0)\nTNT1 A 0 A_SetAngle(angle+12)\nTNT1 A 0\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"OkPerfect\")\ngoto Death\nOkPerfect5:\nTNT1 A 1 Thing_Move(0,user_owner,1)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreakSpawn5\")\nTNT1 A 0 A_Explode(5,100,0)\nTNT1 A 0 A_SetAngle(angle+12)\nTNT1 A 0\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"OkPerfect\")\ngoto Death\nOkPerfect6:\nTNT1 A 1 Thing_Move(0,user_owner,1)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreakSpawn6\")\nTNT1 A 0 A_Explode(5,112,0)\nTNT1 A 0 A_SetAngle(angle+12)\nTNT1 A 0\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"OkPerfect\")\ngoto Death\nOkPerfect7:\nTNT1 A 1 Thing_Move(0,user_owner,1)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreakSpawn7\")\nTNT1 A 0 A_Explode(5,124,0)\nTNT1 A 0 A_SetAngle(angle+12)\nTNT1 A 0\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"OkPerfect\")\ngoto Death\nOkPerfect8:\nTNT1 A 1 Thing_Move(0,user_owner,1)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreakSpawn8\")\nTNT1 A 0 A_Explode(5,136,0)\nTNT1 A 0 A_SetAngle(angle+12)\nTNT1 A 0\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"OkPerfect\")\ngoto Death\nDeath:\nTNT1 A 0\nstop\n}\n}\n\nactor VirusOutbreakSpawn : VirusOutbreakShieldHandler\n{\n//+NONETID\n//+CLIENTSIDEONLY\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,50,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",50,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,-50,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-50,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",40,40,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",40,-40,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-40,40,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-40,-40,32,0,0,0,0)\nstop\n}\n}\n\nactor VirusOutbreakSpawn2 : VirusOutbreakSpawn\n{\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,60,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",60,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,-60,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-60,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",50,50,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",50,-50,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-50,50,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-50,-50,32,0,0,0,0)\nstop\n}\n}\n\nactor VirusOutbreakSpawn3 : VirusOutbreakSpawn\n{\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,70,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",70,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,-70,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-70,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",60,60,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",60,-60,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-60,60,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-60,-60,32,0,0,0,0)\nstop\n}\n}\n\nactor VirusOutbreakSpawn4 : VirusOutbreakSpawn\n{\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,80,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",80,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,-80,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-80,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",70,70,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",70,-70,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-70,70,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-70,-70,32,0,0,0,0)\nstop\n}\n}\n\nactor VirusOutbreakSpawn5 : VirusOutbreakSpawn\n{\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,90,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",90,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,-90,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-90,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",80,80,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",80,-80,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-80,80,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-80,-80,32,0,0,0,0)\nstop\n}\n}\n\nactor VirusOutbreakSpawn6 : VirusOutbreakSpawn\n{\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,100,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",100,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,-100,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-100,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",90,90,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",90,-90,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-90,90,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-90,-90,32,0,0,0,0)\nstop\n}\n}\n\nactor VirusOutbreakSpawn7 : VirusOutbreakSpawn\n{\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,110,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",110,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,-110,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-110,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",100,100,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",100,-100,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-100,100,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-100,-100,32,0,0,0,0)\nstop\n}\n}\n\nactor VirusOutbreakSpawn8 : VirusOutbreakSpawn\n{\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,120,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",120,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",0,-120,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-120,0,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",110,110,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",110,-110,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-110,110,32,0,0,0,0)\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreak\",-110,-110,32,0,0,0,0)\nstop\n}\n}\n\nactor VirusOutbreak\n{\nPROJECTILE\nRenderStyle \"Translucent\"\nAlpha 0.8\n+CLIENTSIDEONLY\n//+NONETID\n+NOINTERACTION\nScale 2.5\nSpeed 0\nStates\n{\nSpawn:\nTNT1 A 0\nVIRU A 1\nstop\n}\n}\n\nactor VirusAmmoWatcher\n{\nHeight 0\nRadius 0\n+NOINTERACTION\n-SOLID\n+NOGRAVITY\n+MISSILE\n+DONTBLAST\nStates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusCancel\",1,\"Death\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",27,\"OkPerfect8\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",23,\"OkPerfect7\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",29,\"OkPerfect6\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",15,\"OkPerfect5\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",11,\"OkPerfect4\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",7,\"OkPerfect3\")\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusExtend\",3,\"OkPerfect2\")\nTNT1 A 1 A_GiveInventory(\"AmmoTake\",1)\nTNT1 A 0 A_JumpIfInventory(\"AmmoTake\",8,1)\ngoto Spawn\nTNT1 A 0 A_TakeInventory(\"AmmoTake\",999)\nTNT1 A 0 A_TakeFromTarget(\"VirusOutbreakAmmo\",1)\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"Spawn\")\ngoto Death\nOkPerfect2:\nTNT1 A 1 A_GiveInventory(\"AmmoTake\",1)\nTNT1 A 0 A_JumpIfInventory(\"AmmoTake\",7,1)\ngoto Spawn\nTNT1 A 0 A_TakeInventory(\"AmmoTake\",999)\nTNT1 A 0 A_TakeFromTarget(\"VirusOutbreakAmmo\",1)\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"Spawn\")\ngoto Death\nOkPerfect3:\nTNT1 A 1 A_GiveInventory(\"AmmoTake\",1)\nTNT1 A 0 A_JumpIfInventory(\"AmmoTake\",6,1)\ngoto Spawn\nTNT1 A 0 A_TakeInventory(\"AmmoTake\",999)\nTNT1 A 0 A_TakeFromTarget(\"VirusOutbreakAmmo\",1)\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"Spawn\")\ngoto Death\nOkPerfect4:\nTNT1 A 1 A_GiveInventory(\"AmmoTake\",1)\nTNT1 A 0 A_JumpIfInventory(\"AmmoTake\",5,1)\ngoto Spawn\nTNT1 A 0 A_TakeInventory(\"AmmoTake\",999)\nTNT1 A 0 A_TakeFromTarget(\"VirusOutbreakAmmo\",1)\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"Spawn\")\ngoto Death\nOkPerfect5:\nTNT1 A 1 A_GiveInventory(\"AmmoTake\",1)\nTNT1 A 0 A_JumpIfInventory(\"AmmoTake\",4,1)\ngoto Spawn\nTNT1 A 0 A_TakeInventory(\"AmmoTake\",999)\nTNT1 A 0 A_TakeFromTarget(\"VirusOutbreakAmmo\",1)\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"Spawn\")\ngoto Death\nOkPerfect6:\nTNT1 A 1 A_GiveInventory(\"AmmoTake\",1)\nTNT1 A 0 A_JumpIfInventory(\"AmmoTake\",3,1)\ngoto Spawn\nTNT1 A 0 A_TakeInventory(\"AmmoTake\",999)\nTNT1 A 0 A_TakeFromTarget(\"VirusOutbreakAmmo\",1)\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"Spawn\")\ngoto Death\nOkPerfect7:\nTNT1 A 1 A_GiveInventory(\"AmmoTake\",1)\nTNT1 A 0 A_JumpIfInventory(\"AmmoTake\",2,1)\ngoto Spawn\nTNT1 A 0 A_TakeInventory(\"AmmoTake\",999)\nTNT1 A 0 A_TakeFromTarget(\"VirusOutbreakAmmo\",1)\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"Spawn\")\ngoto Death\nOkPerfect8:\nTNT1 A 1 A_GiveInventory(\"AmmoTake\",1)\nTNT1 A 0 A_JumpIfInventory(\"AmmoTake\",1,1)\ngoto Spawn\nTNT1 A 0 A_TakeInventory(\"AmmoTake\",999)\nTNT1 A 0 A_TakeFromTarget(\"VirusOutbreakAmmo\",1)\nTNT1 A 0 A_JumpIfInTargetInventory(\"VirusOutbreakAmmo\",1,\"Spawn\")\ngoto Death\nDeath:\nTNT1 A 0 A_TakeFromTarget(\"VirusExtend\",999)\nVIRU B 0 A_TakeFromTarget(\"ReadyToGiveExtends\",999)\nstop\n}\n}\n\nactor VirusWeakener : PowerProtection\n{\ndamagefactor \"normal\", 1.5\ndamagefactor \"VirusOutbreak\", 0.0\npowerup.duration 0x7fffffff\n}\n\nactor VirusTime : Inventory\n{\n\tinventory.amount 1\n\tinventory.maxamount 250\n}\n\nactor VirusWatcher\n{\n\tHeight 0\n\tRadius 0\n\t+NOINTERACTION\n\t-SOLID\n\t+NOGRAVITY\n\t+MISSILE\n\tStates\n\t{\n\tSpawn:\n\t\tTNT1 A 0\n\t\tTNT1 A 1 A_GiveToTarget(\"VirusDebuffFX\",1)\n\t\tTNT1 A 0 A_TakeFromTarget(\"VirusTime\", 1)\n\t\tTNT1 A 0 A_JumpIfInTargetInventory(\"VirusTime\", 1, \"Spawn\")\n\t\tTNT1 A 0 A_TakeFromTarget(\"VirusWeakener\", 999)\n\t\tstop\n\t}\n}\n\nactor VirusDebuffFX : CustomInventory\n{\nStates\n{\nPickup:\nTNT1 A 0\nTNT1 A 0 A_SpawnItemEx(\"VirusOutbreakFX\", random(-32, 32), random(-32, 32), random(0,64))\nstop\n}\n}\n\nactor VirusOutbreakFX\n{\nPROJECTILE\nrenderstyle translucent\n//+CLIENTSIDEONLY\n+NOINTERACTION\nScale 2.5\nSpeed 0\nStates\n{\nSpawn:\nTNT1 A 0\nVIRU A 1 A_SetTranslucent(0.2)\nVIRU A 1 A_SetTranslucent(0.4)\nVIRU A 1 A_SetTranslucent(0.6)\nVIRU A 1 A_SetTranslucent(0.8)\nVIRU A 1 A_SetTranslucent(0.6)\nVIRU A 1 A_SetTranslucent(0.4)\nVIRU A 1 A_SetTranslucent(0.2)\nstop\n}\n}"
},
{
"source": "pk3",
"name": "actors/weapons/charadeclone.txt",
"contents": "actor CharadeCloneWep : BaseMM8BDMWep 15008\n{\n//$Category MM8BDM-Weapons\nWeapon.AmmoUse 7\nWeapon.AmmoGive 28\nWeapon.SlotNumber 7\nInventory.Pickupmessage \"$PU_CHARADECLONE\"\nObituary \"$OB_CHARADECLONE\"\nTag \"$TAG_CHARADECLONE\"\nweapon.ammotype \"CharadeCloneAmmo\"\ninventory.icon \"CHRDICO\"\nStates\n{\nSpawn:\nCHRD A 1\nloop\nReady:\nCHRD B 0 ACS_ExecuteAlways(998,0,756)\nCHRD B 1 A_WeaponReady\nGoto Ready+1\nDeselect:\nTNT1 A 0 A_JumpIfInventory(\"ShieldCheck\",1,\"Deselect2\")\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower\nCHRD B 1 A_Lower\ngoto Deselect+1\nSelect:\nTNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise\nCHRD B 1 A_Raise\nLoop\nFire:\nTNT1 A 0 A_JumpIfInventory(\"ShieldCheck\",1,\"ShieldThrow\")\nTNT1 A 0 A_JumpIfNoAmmo(\"NoAmmo\")\ngoto ShieldActivate\nShieldActivate:\nCHRD B 1\nTNT1 A 0 A_GiveInventory(\"ShieldCheck\",1)\nTNT1 A 0 A_GiveInventory(\"CharadeArmor\",1)\nTNT1 A 0 A_GiveInventory(\"CharadeStart\",1)\nTNT1 A 0 A_GiveInventory(\"CharadeCloneCharge\",125)\nTNT1 A 0 A_TakeInventory(\"CharadeCloneCall\", 1)\nTNT1 A 0 A_TakeInventory(\"CharadeCloneWarp\", 1)\nTNT1 A 0 A_TakeInventory(\"CharadeCloneAmmo\", 7)\nTNT1 A 0 ACS_ExecuteAlways(291,0,4,3)\nTNT1 A 0 A_PlaySoundEx(\"weapon/charade\",\"Weapon\")\nTNT1 A 0 A_SpawnItemEx(\"CharadeClone\",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION,0)\nCHRD C 1\n\nTNT1 A 0 A_GiveInventory(\"CharadeContinue\",1)\nTNT1 A 0 A_TakeInventory(\"CharadeCloneCharge\",1)\nTNT1 A 0 A_JumpIfInventory(\"CharadeCloneCharge\",1,1)\ngoto ShieldThrow2\nTNT1 A 0 A_JumpIfInventory(\"BasicArmor\",1,1)\ngoto ShieldThrow\n\nCHRD C 1\n\nTNT1 A 0 A_GiveInventory(\"CharadeContinue\",1)\nTNT1 A 0 A_TakeInventory(\"CharadeCloneCharge\",1)\nTNT1 A 0 A_JumpIfInventory(\"CharadeCloneCharge\",1,1)\ngoto ShieldThrow2\nTNT1 A 0 A_JumpIfInventory(\"BasicArmor\",1,1)\ngoto ShieldThrow\n\nCHRD D 1\n\nTNT1 A 0 A_GiveInventory(\"CharadeContinue\",1)\nTNT1 A 0 A_TakeInventory(\"CharadeCloneCharge\",1)\nTNT1 A 0 A_JumpIfInventory(\"CharadeCloneCharge\",1,1)\ngoto ShieldThrow2\nTNT1 A 0 A_JumpIfInventory(\"BasicArmor\",1,1)\ngoto ShieldThrow\n\nCHRD D 1\n\nTNT1 A 0 A_GiveInventory(\"CharadeContinue\",1)\nTNT1 A 0 A_TakeInventory(\"CharadeCloneCharge\",1)\nTNT1 A 0 A_JumpIfInventory(\"CharadeCloneCharge\",1,1)\ngoto ShieldThrow2\nTNT1 A 0 A_JumpIfInventory(\"BasicArmor\",1,1)\ngoto ShieldThrow\n\nShieldLoop:\n\nTNT1 A 0 A_GiveInventory(\"CharadeContinue\",1)\nTNT1 A 0 A_TakeInventory(\"CharadeCloneCharge\",1)\nTNT1 A 0 A_JumpIfInventory(\"CharadeCloneCharge\",1,1)\ngoto ShieldThrow2\nTNT1 A 0 A_JumpIfInventory(\"BasicArmor\",1,1)\ngoto ShieldThrow\n\nTNT1 A 0 A_JumpIfInventory(\"CharadeCloneCharge\",110,2)\nTNT1 A 0 A_WeaponReady\nCHRD E 1\ngoto ShieldLoop\nShieldThrow:\nTNT1 A 0 A_TakeInventory(\"ShieldCheck\", 1)\nTNT1 A 0 A_GiveInventory(\"CharadeEnd\", 1)\nTNT1 A 0 A_TakeInventory(\"CharadeCloneCharge\",999)\nTNT1 A 0 A_GiveInventory(\"CharadeCloneWarp\", 1)\nTNT1 A 0 A_ChangeFlag(\"SHOOTABLE\", 0)\nTNT1 A 0 A_ChangeFlag(\"NONSHOOTABLE\", 1)\nCHRD D 1 ACS_ExecuteAlways(291,0,1,1)\nTNT1 A 0 A_ChangeFlag(\"SHOOTABLE\", 1)\nTNT1 A 0 A_ChangeFlag(\"NONSHOOTABLE\", 0)\nCHRD DCCBB 1 ACS_ExecuteAlways(291,0,1,1)\nCHRD B 9\nGoto Ready+1\nShieldThrow2:\nTNT1 A 0 A_TakeInventory(\"ShieldCheck\", 1)\nTNT1 A 0 A_GiveInventory(\"CharadeEnd\", 1)\nTNT1 A 0 A_TakeInventory(\"CharadeCloneCharge\",999)\nTNT1 A 0 A_GiveInventory(\"CharadeCloneCall\", 1)\nCHRD DDCCBB 1 ACS_ExecuteAlways(291,0,1,1)\nCHRD B 1\nGoto Ready+1\nDeselect2:\nTNT1 A 0 A_TakeInventory(\"ShieldCheck\", 1)\nTNT1 A 0 A_GiveInventory(\"CharadeEnd\", 1)\nTNT1 A 0 A_TakeInventory(\"CharadeCloneCharge\",999)\nTNT1 A 0 A_GiveInventory(\"CharadeCloneCall\", 1)\nCHRD DDCCBB 1 ACS_ExecuteAlways(291,0,1,1)\nCHRD B 1\ngoto Deselect+1\nNoAmmo:\nCHRD B 1 ACS_Execute(979,0)\nGoto Ready+1\n}\n}\n\nactor CharadeCloneAmmo : Ammo\n{\ninventory.amount 1\ninventory.maxamount 28\n+INVENTORY.IGNORESKILL\n}\n\nactor CharadeCloneCharge : WeaponCharge\n{\ninventory.maxamount 125\n}\n\nactor CharadeCloneWarp : Inventory\n{\ninventory.amount 1\ninventory.maxamount 1\n}\n\nactor CharadeCloneCall : Inventory\n{\ninventory.amount 1\ninventory.maxamount 1\n}\n\nactor CharadeClone\n{\n-SOLID\n+NOGRAVITY\n+DONTBLAST\n+DONTREFLECT\n+THRUACTORS\n//+NOCLIP\n//+NOINTERACTION\nheight 56\nradius 16\nscale 2.5\nrenderstyle translucent\nalpha 0.9\nStates\n{\nSpawn:\nCHRD F 0\nSpawn2:\nCHRD F 0 A_JumpIfInTargetInventory(\"CharadeCloneCall\",1,\"TeleportOff\")\nCHRD F 0 A_JumpIfInTargetInventory(\"CharadeCloneWarp\",1,\"TeleportBack\")\nCHRD F 0 A_JumpIfInventory(\"CutterFlag\", 200, \"Death\")\nCHRD F 0 A_GiveInventory(\"CutterFlag\", 1)\nCHRD F 1\nloop\nTeleportBack:\nTNT1 A 0 A_GiveToTarget(\"CharadeCloneExplodePickup\",1)\n\n//TNT1 A 0 Thing_Move(ACS_ExecuteWithResult(257,0),0,1)\n\nTNT1 A 0 Thing_ChangeTID(0,2000)\nTNT1 A 0 Thing_Move(ACS_ExecuteWithResult(257,0),TID,1)\nTNT1 A 0 Thing_ChangeTID(0,0)\n\nTNT1 A 0 A_GiveToTarget(\"CharadeNudge\",1)\nstop\nTeleportOff:\nTNT1 A 0 A_GiveToTarget(\"CharadeCloneBeamInPickup\",1)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,38,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,56,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,72,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,90,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,108,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,126,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,144,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,162,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,180,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,198,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,216,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,234,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,252,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,270,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,288,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,306,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,324,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nstop\nDeath:\nTNT1 A 0\nstop\n}\n}\n\nactor CharadeCloneTele\n{\nScale 2.5\n-SOLID\n+NOGRAVITY\n+CLIENTSIDEONLY\n+DONTBLAST\n+NOINTERACTION\n+NOTIMEFREEZE\nStates\n{\nSpawn:\nTFOG A 0\nTFOG A 1\nstop\n}\n}\n\nactor CharadeCloneExplodePickup : CustomInventory\n{\nstates\n{\nPickup:\n//TNT1 A 0 A_FireCustomMissile(\"CharadeCloneExplode\",0,0,8,0)\nTNT1 A 0 A_FireCustomMissile(\"CharadeCloneExplode\",0,0,0,0)\nstop\n}\n}\n\nactor CharadeCloneBeamInPickup : CustomInventory\n{\nstates\n{\nPickup:\n//CENF A 0 A_FireCustomMissile(\"CharadeCloneBeamIn\",0,0,8,0)\nTNT1 A 0 A_SpawnItemEx(\"CharadeCloneBeamIn\",0,0,28,0,0,0,0,SXF_TRANSFERTRANSLATION,0)\nstop\n}\n}\n\nactor CharadeCloneExplode\n{\nPROJECTILE\n+DONTBLAST\n+DONTREFLECT\n+NOINTERACTION\n+NOCLIP\n+THRUACTORS\ndamage 0\nradius 1\nheight 1\ndamagetype \"CharadeClone\"\nObituary \"$OB_CHARADECLONE\"\nscale 2.5\nStates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_Explode(40,128,0)\nSpawn2:\nTNT1 A 0 A_PlaySoundEx(\"misc/mm3explosion\",\"Weapon\")\nNAPA EFGHIJKLMNOPQRS 2\nstop\n}\n}\n\nactor CharadeCloneBeamIn : CharadeCloneExplode\n{\nStates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 17\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,324,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,306,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,288,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,270,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,252,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,234,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,216,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,198,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,180,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,162,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,144,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,126,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,108,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,90,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,72,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,56,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 1 A_SpawnItemEx(\"CharadeCloneTele\",0,0,38,0,0,0,0,SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION)\nTNT1 A 0 A_Explode(60,180,0)\ngoto Spawn2\n}\n}\n\nconst int CONST_CLONEHP = 20;\n\nactor CharadeArmor : BasicArmorPickup\n{\nArmor.Savepercent 0\nArmor.Saveamount 20\n}\n\nactor CharadeStart : CustomInventory\n{\nstates\n{\nPickup:\nTNT1 A 0 A_JumpIf(health>0&&health<CONST_CLONEHP+1,\"HealthLoan\")\nTNT1 A 0 A_SetUserVar(\"user_loanhp\",0)\ngoto Pickup2\nHealthLoan:\nTNT1 A 0 A_SetUserVar(\"user_loanhp\",CONST_CLONEHP+1-health)\nTNT1 A 0 HealThing(CONST_CLONEHP+1-health)\ngoto Pickup2\nPickup2:\nTNT1 A 0 A_SetUserVar(\"user_hp\",health)\n//TNT1 A 0 A_GiveInventory(\"CharadeArmor\",1)\nTNT1 A 0 SetPlayerProperty(0, 1, 16) //SetPlayerProperty(0, 1, PROP_BUDDHA)\nstop\n}\n}\n\nactor CharadeContinue : CustomInventory\n{\nstates\n{\nPickup:\n//TNT1 A 0 A_LogInt(ACS_ExecuteWithResult(811,CONST_VAR_HP))\n//TNT1 A 0 A_LogInt(health)\nTNT1 A 0 A_JumpIf(health<ACS_ExecuteWithResult(811,CONST_VAR_HP),\"GotHit\")\nTNT1 A 0 A_JumpIf(health>ACS_ExecuteWithResult(811,CONST_VAR_HP),\"Healed\")\nstop\nGotHit:\n//TNT1 A 0 A_LogInt(user_hp-health)\nTNT1 A 0 A_TakeInventory(\"BasicArmor\",ACS_ExecuteWithResult(811,CONST_VAR_HP)-health)\nTNT1 A 0 HealThing(ACS_ExecuteWithResult(811,CONST_VAR_HP)-health)\nstop\nHealed:\nTNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(811,CONST_VAR_LOANHP)>0,\"TakeLoanCheck\")\nTNT1 A 0 A_SetUserVar(\"user_hp\",health)\nstop\nTakeLoanCheck:\nTNT1 A 0 A_JumpIf(health>=ACS_ExecuteWithResult(811,CONST_VAR_LOANHP)+CONST_CLONEHP+1,\"TakeLoanfull\")\ngoto TakeLoanPartial\nTakeLoanFull:\nTNT1 A 0 A_ChangeFlag(\"NOPAIN\",1)\nTNT1 A 0 DamageThing(ACS_ExecuteWithResult(811,CONST_VAR_LOANHP))\nTNT1 A 0 A_ChangeFlag(\"NOPAIN\",0)\nTNT1 A 0 A_SetUserVar(\"user_loanhp\",0)\nTNT1 A 0 A_SetUserVar(\"user_hp\",health)\nstop\nTakeLoanPartial:\nTNT1 A 0 A_SetUserVar(\"user_loanhp\",ACS_ExecuteWithResult(811,CONST_VAR_LOANHP)-(health-ACS_ExecuteWithResult(811,CONST_VAR_HP)))\nTNT1 A 0 A_ChangeFlag(\"NOPAIN\",1)\nTNT1 A 0 DamageThing(health-ACS_ExecuteWithResult(811,CONST_VAR_HP))\nTNT1 A 0 A_ChangeFlag(\"NOPAIN\",0)\nstop\n}\n}\n\nactor CharadeEnd : CustomInventory\n{\nstates\n{\nPickup:\nTNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(811,CONST_VAR_LOANHP)>0,\"TakeLoan\")\ngoto Pickup2\nTakeLoan:\nTNT1 A 0 A_ChangeFlag(\"NOPAIN\",1)\nTNT1 A 0 DamageThing(ACS_ExecuteWithResult(811,CONST_VAR_LOANHP))\nTNT1 A 0 A_ChangeFlag(\"NOPAIN\",0)\ngoto Pickup2\nPickup2:\nTNT1 A 0 A_TakeInventory(\"BasicArmor\",999)\nTNT1 A 0 SetPlayerProperty(0, 0, 16) //SetPlayerProperty(0, 0, PROP_BUDDHA)\nstop\n}\n}\n\nactor CharadeNudge : CustomInventory\n{\nstates\n{\nPickup:\n//TNT1 A 0 A_Stop\nTNT1 A 0 A_Jumpif(Momx == 0 && Momy == 0, \"Pickup2\")\nstop\nPickup2:\nTNT1 A 0 A_Recoil(-1)\nstop\n}\n}"
},
{
"source": "pk3",
"name": "actors/player/megamanrf.txt",
"contents": "const int CONST_VAR_HP = 0;\nconst int CONST_VAR_LOANHP = 1;\n\nactor MegamanPainRF : MegamanPain749\n{\nvar int user_hp;\nvar int user_loanhp;\nStates\n{\nPain.VirusOutbreak:\nPLY1 H 0 A_JumpIfInventory(\"VirusTime\", 1, \"VirusReset\")\nPLY1 H 0 A_GiveInventory(\"VirusTime\", 250)\nPLY1 H 0 A_GiveInventory(\"VirusWeakener\", 1)\nPLY1 H 0 A_SpawnItemEx(\"VirusWatcher\")\ngoto Pain+1\nVirusReset: //technically impossible to get to this state but\nPLY1 H 0 A_GiveInventory(\"VirusTime\", 250)\ngoto Pain+1\n}\n}"
},
{
"source": "pk3",
"name": "actors/player/mod/megamanpain750.txt",
"contents": "//actor MegamanPain750 : MegamanPain749 {}\n\n#include \"actors/player/megamanrf.txt\"\n\nactor MegamanPain750 : MegamanPainRF {}"
}
]
},
"maps": []
}