hotelfishing-1a.pk3

PK3 2.2 MiB 0 map(s)

Counts

endoom0
graphics0
lumps283
maps0
palettes0

Totals (across maps)

Things0
Linedefs0
Sectors0
Monsters0
Items0
Raw model (for completeness)
{
  "meta": {
    "id": "0cffcc28-87fa-41d4-835c-07f84305b010",
    "sha1": "8516faa78ec263402bf5548ac791ddcda9d5d04b",
    "sha256": "d8dc9388c5102e2d5420c76663f4750ecf4d868e7f08402c732f4ae6ab929fe9",
    "filenames": [
      "hotelfishing-1a.pk3"
    ],
    "additional": {
      "engines": [
        "ZDOOM"
      ],
      "iwad": [],
      "filename": null,
      "added": "2018-03-28 00:18:04",
      "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-03-28 00:18:04",
    "file": {
      "type": "PK3",
      "size": 2266032,
      "url": "https://wadarchive2.nyc3.digitaloceanspaces.com/8516faa78ec263402bf5548ac791ddcda9d5d04b/8516faa78ec263402bf5548ac791ddcda9d5d04b.pk3.gz",
      "corrupt": false
    },
    "content": {
      "counts": {
        "endoom": 0,
        "graphics": 0,
        "lumps": 283,
        "maps": 0,
        "palettes": 0
      },
      "engines_guess": [
        "ZDOOM"
      ]
    },
    "text_files": [
      {
        "source": "pk3",
        "name": "actors/basicfish.txt",
        "contents": "actor FishingRod : CustomInventory\n{\ninventory.amount 1\ninventory.maxamount 1\ninventory.icon \"FISHIC00\"\n+INVBAR\ninventory.pickupmessage \"Picked up a Fishing rod!\"\nInventory.PickupSound \"item/1up\"\nscale 2.0\nstates\n{\nSpawn:\nFROD D 1200\nstop\nUse:\nTNT1 A 0 A_JumpIfInventory(\"IsFishing\", 4, \"Cancel\")\nTNT1 A 0 A_JumpIfInventory(\"IsFishing\", 3, \"Fish\")\nTNT1 A 0 A_JumpIfInventory(\"IsFishing\", 2, \"Cancel\")\nTNT1 A 0 A_JumpIfInventory(\"IsFishing\", 1, \"End\")\nTNT1 A 0 A_GiveInventory(\"IsFishing\")\nTNT1 A 0 A_FireCustomMissile(\"FishingBobber\", frandom(-2,3), 0, 0, 0)\nGoto End\nFish:\nTNT1 A 0 A_GiveInventory(\"IsFishing\")\nfail\nCancel:\nTNT1 A 0 A_TakeInventory(\"IsFishing\", 999)\nEnd:\nTNT1 A 0\nfail\n}\n}\n\nactor IsFishing : Inventory { inventory.maxamount 999}\n\nactor FishingBobber\n{\nscale 2.5\nPROJECTILE\ngravity 0.62\n+DONTBLAST\n+DONTREFLECT\n+THRUACTORS\n-NOGRAVITY\n+DONTSPLASH\n+SKYEXPLODE\nspeed 13\nheight 3\nradius 3\nstates\n{\nSpawn:\nFROD B 0\nFROD B 0 Thing_ChangeTID(0, ACS_NamedExecuteWithResult(\"core_gettarget\") + 10000)\nFROD B 0 ACS_NamedExecuteAlways(\"hfish_drawline\", 0, ACS_NamedExecuteWithResult(\"core_gettarget\"), 15)\nFlying:\nFROD B 2 A_JumpIf(ACS_NamedExecuteWithREsult(\"hfish_checkwater\")==2, \"Sea\")\nloop\nSea:\nFROD B 0 A_ChangeFlag(\"NOGRAVITY\", 1)\nFROD B 0 A_Die\nDeath:\nFROD B 1\nFROD B 0 A_Stop\nFROD B 0 A_ChangeFlag(\"NOGRAVITY\", 1)\nFROD B 1 A_JumpIf(ACS_NamedExecuteWithREsult(\"hfish_checkwater\")==2, \"Success\")\nFROD B 0 A_JumpIf(floorz-z!=0, \"Fade\")\nFROD B 1 A_JumpIf(ACS_NamedExecuteWithREsult(\"hfish_checkwater\")>0, \"Success\")\nFade:\nFROD B 8\nGoto End\nSuccess:\nFROD B 0 A_SpawnITemex(\"MMSplash\")\nFROD B 0 ACS_NamedExecuteAlways(\"hfish_fishing\")\nFishing:\nFROD B 5 A_FaceTarget\nFROD B 35 A_JumpIfInTargetInventory(\"IsFishing\", 1, \"Fishing\")\nGoto End\nCaught:\nFROD DB 1\nFROD B 8 A_JumpIfInTargetInventory(\"IsFishing\", 1, \"Caught\")\nGoto End\nEnd:\nFROD B 0 A_TakeFromTarget(\"IsFishing\", 999)\nFROD BBBB 1 A_FadeOut(0.25)\nstop\n}\n}\n\nactor FishingRodFX\n{\n+CLIENTSIDEONLY\n+NOINTERACTION\nscale 2.5\nheight 1\nradius 1\nstates\n{\nSpawn:\nFROD A 2\nstop\n}\n}\n\nactor FishingRodLineFX\n{\n+CLIENTSIDEONLY\n+NOINTERACTION\nscale 2.5\nheight 1\nradius 1\nstates\n{\nSpawn:\nFROD C 2\nstop\n}\n}\n\nactor BaseFish : CustomInventory\n{\ninventory.maxamount 99\ninventory.amount 1\n+INVBAR\nheight 2\nradius 8\ninventory.icon \"FISHIC01\"\ninventory.pickupmessage \"Regular Fish!\"\nInventory.PickupSound \"item/1up\"\nscale 1.9\nstates\n{\nSpawn:\nFISI A 1200\nstop\nUse:\nFISI A 0\nfail\nFailure:\nTNT1 A 0\nfail\n}\n}\n\nactor FishJunk : CustomInventory\n{\nheight 2\nradius 2\nscale 1.9\n//+INVENTORY.QUIET\n+INVENTORY.ALWAYSPICKUP\ninventory.pickupmessage \"It's just junk...\"\nInventory.PickupSound \"\"\ninventory.amount 1\ninventory.maxamount 1\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 5 A_Jump(256, \"Junk1\", \"Junk2\", \"Junk3\", \"Junk4\")\nJunk1:\nFISI T 1200\nstop\nJunk2:\nFISI U 1200\nstop\nJunk3:\nFISI V 1200\nstop\nJunk4:\nFIS2 D 1200\nstop\nPickup:\nTNT1 A 0\nstop\n}\n}\n\nactor Fish_Bass : BaseFish\n{\ntranslation \"192:192=196:196\", \"198:198=206:206\", \"224:224=89:89\", \"225:225=94:94\"\ninventory.icon \"FISHIC02\"\ninventory.pickupmessage \"Picked up a Bass!\"\n}\n\nactor Fish_Minnow : BaseFish\n{\ntranslation \"192:192=210:210\", \"198:198=230:230\", \"224:224=151:151\", \"225:225=1:1\"\ninventory.icon \"FISHIC03\"\ninventory.pickupmessage \"Picked up a Minnow!\"\n}\n\nactor Fish_Salmon : BaseFish\n{\ntranslation \"192:192=4:4\", \"198:198=90:90\", \"224:224=203:203\", \"225:225=206:206\"\ninventory.icon \"FISHIC04\"\ninventory.pickupmessage \"Picked up a Salmon!\"\n}\n\nactor Fish_Tetra : BaseFish\n{\ntranslation \"192:192=202:202\", \"198:198=206:206\", \"224:224=177:177\", \"225:225=185:185\"\ninventory.icon \"FISHIC05\"\ninventory.pickupmessage \"Picked up a Tetra!\"\n}\n\nactor Fish_Trout : BaseFish\n{\ntranslation \"192:192=52:52\", \"198:198=220:220\", \"224:224=146:146\", \"225:225=144:144\"\ninventory.icon \"FISHIC06\"\ninventory.pickupmessage \"Picked up a Trout!\"\n}\n\nactor Fish_RedSnapper : BaseFish\n{\ntranslation \"192:192=172:172\", \"198:198=175:175\", \"224:224=179:179\", \"225:225=184:184\"\ninventory.icon \"FISHIC07\"\ninventory.pickupmessage \"Picked up a Red Snapper!\"\n}\n\nactor Fish_Cooldown : Powerup\n{\npowerup.duration 35\n}"
      },
      {
        "source": "pk3",
        "name": "actors/seahorse.txt",
        "contents": "actor Fish_SeaHorse : BaseFish\n{\ninventory.amount 10\ninventory.usesound \"weapon/GameBoyFire\"\nstates\n{\nSpawn:\nFISI F 1200\nstop\n}\n}\n\nactor Fish_FireySeaHorse : Fish_SeaHorse\n{\ntranslation \"192:192=227:227\", \"198:198=229:229\"\ninventory.icon \"FISHIC08\"\ninventory.pickupmessage \"Picked up a Firey Seahorse!\"\nstates {\nUse:\nTNT1 A 0 A_JumpIFInventory(\"Fish_Cooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"TurbomanMain1_CI\",1)\nTNT1 A 0 A_GiveInventory(\"Fish_Cooldown\", 1)\nstop\n}\n}\n\nactor Fish_FrozenSeaHorse : Fish_SeaHorse\n{\ntranslation \"192:192=192:192\", \"198:198=202:202\"\ninventory.icon \"FISHIC09\"\ninventory.pickupmessage \"Picked up a Frozen Seahorse!\"\nstates {\nUse:\nTNT1 A 0 A_JumpIFInventory(\"Fish_Cooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"FrostmanMain_CI\",1)\nTNT1 A 0 A_GiveInventory(\"Fish_Cooldown\", 1)\nstop\n}\n}\n\nactor Fish_ShockedSeaHorse : Fish_SeaHorse\n{\ntranslation \"192:192=229:229\", \"198:198=4:4\"\ninventory.icon \"FISHIC10\"\ninventory.pickupmessage \"Picked up a Shocked Seahorse!\"\nstates {\nUse:\nTNT1 A 0 A_JumpIFInventory(\"Fish_Cooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"CloudmanMain_CI\",1)\nTNT1 A 0 A_GiveInventory(\"Fish_Cooldown\", 1)\nstop\n}\n}\n\nactor Fish_VoidSeaHorse : Fish_SeaHorse\n{\ntranslation \"192:192=7:7\", \"198:198=239:239\"\ninventory.icon \"FISHIC11\"\ninventory.pickupmessage \"Picked up a Void Seahorse!\"\nstates {\nUse:\nTNT1 A 0 A_JumpIFInventory(\"Fish_Cooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"EvilMain3_CI\",1)\nTNT1 A 0 A_GiveInventory(\"Fish_Cooldown\", 1)\nstop\n}\n}\n\nactor Fish_DeepSeaHorse : Fish_SeaHorse\n{\n//translation \"192:192=199:199\", \"198:198=198:198\"\ninventory.icon \"FISHIC12\"\ninventory.pickupmessage \"Picked up a Deep sea Seahorse!\"\nstates {\nUse:\nTNT1 A 0 A_JumpIFInventory(\"Fish_Cooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"MegaWaterSAlt_CI\",1)\nTNT1 A 0 A_GiveInventory(\"Fish_Cooldown\", 1)\nstop\n}\n}\n\nactor Fish_StoneSeaHorse : Fish_SeaHorse\n{\ntranslation \"192:192=94:94\", \"198:198=85:85\"\ninventory.icon \"FISHIC13\"\ninventory.pickupmessage \"Picked up a Stone Seahorse!\"\nstates {\nUse:\nTNT1 A 0 A_JumpIFInventory(\"Fish_Cooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"ConcretemanMain_CI\",1)\nTNT1 A 0 A_GiveInventory(\"Fish_Cooldown\", 1)\nstop\n}\n}\n\nactor Fish_GoldenSeaHorse : Fish_SeaHorse\n{\ntranslation \"192:192=229:229\", \"198:198=232:23\"\ninventory.icon \"FISHIC14\"\ninventory.pickupmessage \"Picked up The Golden Seahorse!\"\ninventory.amount 1\nstates {\nUse:\nTNT1 A 0 A_JumpIFInventory(\"Fish_Cooldown\", 1, \"Failure\")\nTNT1 A 0 A_FireBullets(0, 0, 1, 500, \"SharkTorpedoDeath\")\nTNT1 A 0 A_GiveInventory(\"Fish_Cooldown\", 1)\nstop\n}\n}"
      },
      {
        "source": "pk3",
        "name": "actors/jellyfish.txt",
        "contents": "actor Fish_JellyFish : BaseFish\n{\ninventory.amount 1\ninventory.usesound \"weapon/OilShot\"\nstates\n{\nSpawn:\nFISI K 1200\nstop\nUse:\nTNT1 A 0\nstop\n}\n}\n\nactor Fish_BlueJellyFish : Fish_JellyFish\n{\n//translation \"192:192=227:227\", \"198:198=229:229\"\ninventory.icon \"FISHIC15\"\ninventory.pickupmessage \"Picked up a Blue Jellyfish!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_color\", 0, 0)\nstop\n}\n}\n\nactor Fish_RedJellyFish : Fish_JellyFish\n{\ntranslation \"192:192=227:227\", \"198:198=229:229\"\ninventory.icon \"FISHIC16\"\ninventory.pickupmessage \"Picked up a Red Jellyfish!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_color\", 0, 1)\nstop\n}\n}\n\nactor Fish_YellowJellyFish : Fish_JellyFish\n{\ntranslation \"192:192=229:229\", \"198:198=232:23\"\ninventory.icon \"FISHIC17\"\ninventory.pickupmessage \"Picked up a Yellow Jellyfish!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_color\", 0, 2)\nstop\n}\n}\n\nactor Fish_PinkJellyFish : Fish_JellyFish\n{\ntranslation \"192:192=239:239\", \"198:198=250:250\"\ninventory.icon \"FISHIC18\"\ninventory.pickupmessage \"Picked up a Pink Jellyfish!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_color\", 0, 3)\nstop\n}\n}\n\nactor Fish_GreenJellyFish : Fish_JellyFish\n{\ntranslation \"192:192=106:106\", \"198:198=41:41\"\ninventory.icon \"FISHIC19\"\ninventory.pickupmessage \"Picked up a Green Jellyfish!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_color\", 0, 4)\nstop\n}\n}\n\nactor Fish_GreyJellyFish : Fish_JellyFish\n{\ntranslation \"192:192=3:3\", \"198:198=92:92\"\ninventory.icon \"FISHIC20\"\ninventory.pickupmessage \"Picked up a Grey Jellyfish!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_color\", 0, 5)\nstop\n}\n}"
      },
      {
        "source": "pk3",
        "name": "actors/squid.txt",
        "contents": "actor Fish_Squid : BaseFish\n{\ninventory.amount 5\ninventory.usesound \"class/QuickRun\"\nstates\n{\nSpawn:\nFISI B 1200\nstop\nUse:\nTNT1 A 0\nstop\n}\n}\n\nactor Fish_ExcitableSquid : Fish_Squid\n{\ntranslation \"192:192=160:160\", \"198:198=162:162\"\ninventory.icon \"FISHIC21\"\ninventory.pickupmessage \"Picked up a Excitable Squid!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_GiveInventory(\"SquidSpeed\", 1)\nstop\n}\n}\n\nactor SquidSpeed : PowerSpeed\n{\npowerup.duration -35\nspeed 1.5\n}\n\nactor Fish_SnugglySquid : Fish_Squid\n{\ntranslation \"192:192=33:33\", \"198:198=238:238\"\ninventory.icon \"FISHIC22\"\ninventory.pickupmessage \"Picked up a Snuggly Squid!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_GiveInventory(\"SquidRegen\", 1)\nstop\n}\n}\n\nactor SquidRegen : PowerRegeneration\n{\npowerup.duration -60\npowerup.strength 5\n}\n\nactor Fish_ShySquid : Fish_Squid\n{\ntranslation \"192:192=90:90\", \"198:198=3:3\"\ninventory.icon \"FISHIC23\"\nrenderstyle translucent\nalpha 0.5\ninventory.pickupmessage \"Picked up a Shy Squid!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_GiveInventory(\"SquidShadow\", 1)\nstop\n}\n}\n\nactor SquidShadow : PowerShadow\n{\npowerup.duration -60\n}\n\nactor Fish_CourageousSquid : Fish_Squid\n{\ntranslation \"192:192=104:104\", \"198:198=111:111\"\ninventory.icon \"FISHIC24\"\ninventory.pickupmessage \"Picked up a Courageous Squid!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_GiveInventory(\"SquidInvul\", 1)\nstop\n}\n}\n\nactor SquidInvul : PowerInvulnerable\n{\nPowerup.Color GreenMap\npowerup.duration -12\n}\n\nactor Fish_FerociousSquid : Fish_Squid\n{\ntranslation \"192:192=177:177\", \"198:198=187:187\"\ninventory.icon \"FISHIC25\"\ninventory.pickupmessage \"Picked up a Ferocious Squid!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_GiveInventory(\"SquidDouble\", 1)\nstop\n}\n}\n\nactor SquidDouble : PowerDoubleFiringSpeed\n{\npowerup.duration -12\n}\n\nactor Fish_TroubledSquid : Fish_Squid\n{\ntranslation \"192:192=4:4\", \"198:198=172:172\"\ninventory.icon \"FISHIC26\"\ninventory.pickupmessage \"Picked up a Troubled Squid!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_GiveInventory(\"SquidSpeedR\", 1)\nstop\n}\n}\n\nactor SquidSpeedR : PowerSpeed\n{\npowerup.duration -100\nspeed -2.2\n}"
      },
      {
        "source": "pk3",
        "name": "actors/crab.txt",
        "contents": "actor Fish_Crab : BaseFish\n{\ninventory.amount 1\ninventory.usesound \"weapon/NeedleWham\"\nstates\n{\nSpawn:\nFISI E 1200\nstop\nUse:\nTNT1 A 0\nstop\n}\n}\n\nactor CrabPropUnsolider\n{\nPROJECTILE\nradius 40\nheight 8\n+THRUSPECIES\nspecies \"FishBlockable\"\ndamage 1\n+DONTBLAST\n+DONTREFLECT\n+HITTRACER\nrenderstyle none\nstates\n{\nSpawn:\nPLAY A 2\nstop\nDeath:\nPLAY A 2 A_JumpIfInventory(\"IsInGame\", 1, \"Give\", AAPTR_TRACER)\nstop\nGive:\nPLAY A 1 A_GiveInventory(\"UnSolider\",1,AAPTR_TRACER)\nPLAY A 0 A_GiveInventory(\"SolidifierSpawner\",1,AAPTR_TRACER)\nstop\n}\n}\n\nactor Fish_ExcavatorCrab : Fish_Crab\n{\ntranslation \"192:192=220:220\", \"198:198=223:223\"\ninventory.icon \"FISHIC27\"\ninventory.pickupmessage \"Picked up an Excavator Crab!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_Stop\nTNT1 C 0 A_SpawnItemEx(\"CrabPropRock\", 64, 0, 0)\nstop\n}\n}\n\nactor CrabPropRock\n{\n\t//$Category MM8BDM-Props\n\t+NOGRAVITY\n\t+SOLID\n\t+FORCEXYBILLBOARD\n\t//+SHOOTABLE\n\tHeight 64\n\tRadius 32\n\tScale 2.0\n\tHealth 2000\n\tMass 999999999\n\tStates\n\t{\n\tSpawn:\n\t\tHEAD A 5\n\t\tHEAD A 80 A_SpawnItemEx(\"CrabPropUnsoliderRock\",0,0,0,0,0,10*4)\n\t\tloop\n\tDeath:\n\t\tTNT1 A 0 A_SpawnItemEx(\"DrillExplode\", 0, 0, 32)\n\t\tstop\n\t}\n}\n\nactor CrabPropUnsoliderRock : CrabPropUnsolider {\nradius 30\n}\n\nactor Fish_LeapingCrab : Fish_Crab\n{\ntranslation \"192:192=33:33\", \"198:198=246:246\"\ninventory.icon \"FISHIC28\"\ninventory.pickupmessage \"Picked up a Leaping Crab!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_SpawnItemEx(\"CrabPropSpring\", 64)\nstop\n}\n}\n\nactor CrabSpringInventory : CustomInventory\n{\nstates\n{\nPickup:\nTNT1 A 0 A_PlaySoundEx(\"misc/boing\", \"Voice\")\nTNT1 A 0 ThrustThingZ(0, 110, 0, 0)\nstop\n}\n}\n\nactor CrabPropSpring\n{\nheight 4\nradius 16\n-SOLID\nscale 2.5\nStates\n{\nSpawn:\nSPRI A 5 A_RadiusGive(\"CrabSpringInventory\", 48, RGF_PLAYERS|RGF_MONSTERS|RGF_OBJECTS, 1)\nloop\n}\n}\n\nactor Fish_TrapperCrab : Fish_Crab\n{\ntranslation \"192:192=83:83\", \"198:198=103:103\"\ninventory.icon \"FISHIC29\"\ninventory.pickupmessage \"Picked up a Trapper Crab!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_SpawnItemEx(\"CrabPropSwitch\", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)\nstop\n}\n}\n\nactor CrabPropSwitch\n{\nscale 2.5\n-SOLID\n\ngravity 20.0\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_SpawnITemEx(\"CrabPropGate\", 128, 0, 0)\nTNT1 A 0 A_SpawnITemEx(\"CrabPropGate\", 128, 64, 0)\n//TNT1 A 0 A_SpawnITemEx(\"CrabPropGate\", 128, 64*2, 0)\nTNT1 A 0 A_SpawnITemEx(\"CrabPropGate\", 128, -64, 0)\n//TNT1 A 0 A_SpawnITemEx(\"CrabPropGate\", 128, -64*2, 0)\nSearching:\nFSFX I 4 A_LookEx(LOF_NOSOUNDCHECK, 0, 32, 0, 360, \"CheckHeight\")\nloop\nCheckHeight:\nTNT1 A 0 A_JumpIfCloser(38, \"Switch\")\nTNT1 A 5 A_ClearTarget\nGoto Searching\nSwitch:\nTNT1 A 6 A_GiveInventory(\"CutterFlag\", 1)\nTNT1 AAAA 6 A_JumpIfCloser(38, \"Switch\")\nTNT1 A 12 A_TakeInventory(\"CutterFlag\", 9999)\nGoto Searching\n}\n}\n\nactor CrabPropGate\n{\nHeight 128\nRadius 42\nscale 2.5\ngravity 20.0\n+SOLID\n+MISSILE\n+THRUSPECIES\nspecies \"FishBlockable\"\nstates\n{\nSpawn:\nSBOX E 0\nSBOX E 0 A_ChangeFlag(\"MISSILE\",0)\nUp:\nSBOX EEEEEE 5 A_JumpIfInTargetInventory(\"CutterFlag\",1, \"Lower\")\nSBOX E 0 A_SpawnItemEx(\"CrabPropUnsolider\",0,0,0,0,0,25*4)\nloop\nLower:\nSBOX CBA 3\nSBOX A 3 A_ChangeFlag(\"SOLID\", 0)\nLowered:\nSBOX A 3\nSBOX A 2 A_JumpIfInTargetInventory(\"CutterFlag\",1,\"Lowered\")\nRaise:\nSBOX A 5 A_ChangeFlag(\"SOLID\", 1)\nSBOX ABC 3\nSBOX D 3\nGoto Up\n}\n}\n\nactor UnSolider : CustomInventory\n{\nstates\n{\nPickup:\nTNT1 A 0 A_ChangeFlag(\"SOLID\", 0)\nstop\n}\n}\n\nactor SolidifierSpawner : CustomInventory\n{\nstates\n{\nPickup:\nTNT1 A 0 A_SpawnItemEx(\"ReSolidifier\")\nstop\n}\n}\n\nactor Fish_StepperCrab : Fish_Crab\n{\ntranslation \"192:192=176:176\", \"198:198=173:173\"\ninventory.icon \"FISHIC30\"\ninventory.pickupmessage \"Picked up a Stepper Crab!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_SpawnItemEx(\"CrabShadowPlatform\", 64, 0, 32, 0, 0, 0, 0, 0)\nstop\n}\n}\n\nactor CrabShadowPlatform : ShadowPlatform\n{\nStates\n{\nSpawn:\nSHPL A 0\nSHPL A 0 A_SpawnItemEx(\"ShadowPlatformDetect\", 0, 0, 25)\nSHPL AAAAAAAAAA 4 A_JumpIfInventory(\"ShadowPlatformFlag\",1,\"PlatOpen\")\nSHPL A 0 A_SpawnItemEx(\"CrabPropUnsoliderPlatform\",0,0,0,0,0,4*2)\ngoto Spawn+2\nPlatOpen:\nSHPL A 3 A_TakeInventory(\"ShadowPlatformFlag\",1)\nSHPL BC 3\nSHPL D 3 A_ChangeFlag(\"SOLID\",0)\nSHPL EEEEEEEEEEEE 4\nGoto PlayerCheck\nPlayerCheck:\nSHPL E 2\nSHPL E 2 A_JumpIf(ACS_ExecuteWithResult(261, 64) == 1, \"PlayerCheck\")\nSHPL D 0 A_ChangeFlag(\"SOLID\",1)\nSHPL DCB 3\nSHPL A 2\ngoto Spawn+1\n}\n}\n\nactor CrabPropUnsoliderPlatform : CrabPropUnsolider {\nradius 21\n}\n\nactor Fish_GardenerCrab : Fish_Crab\n{\ntranslation \"192:192=104:104\", \"198:198=110:110\"\ninventory.icon \"FISHIC31\"\ninventory.pickupmessage \"Picked up a Gardener Crab!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_SpawnItemEx(\"CrabBush\", 64 + 48, 48, 0, 0, 0, 0, 0, 0)\nTNT1 C 0 A_SpawnItemEx(\"CrabBush\", 64 + 48, -48, 0, 0, 0, 0, 0, 0)\nTNT1 C 0 A_SpawnItemEx(\"CrabBush\", 64 - 48, 48, 0, 0, 0, 0, 0, 0)\nTNT1 C 0 A_SpawnItemEx(\"CrabBush\", 64 - 48, -48, 0, 0, 0, 0, 0, 0)\nstop\n}\n}\n\nactor CrabBush\n{\n-SOLID\nradius 16\nheight 16\n+FORCEYBILLBOARD\nscale 2.0\nrenderstyle translucent\nalpha 0.9\ntranslation \"192:192=110:110\", \"198:198=110:110\"\nstates\n{\nSpawn:\nHSN8 Y -1\nstop\n}\n}\n\nactor Fish_BlockerCrab : Fish_Crab\n{\ntranslation \"192:192=227:227\", \"198:198=229:229\"\ninventory.icon \"FISHIC32\"\ninventory.pickupmessage \"Picked up a Blocker Crab!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_SpawnItemEx(\"CrabBaccone\", 64, 0, 0, 0, 0, 0, 0, 0)\nstop\n}\n}\n\nactor CrabBaccone\n{\n//$Category MM8BDM-Props\n+SOLID\n-NOBLOCKMONST\n+PUSHABLE\nheight 60\nradius 18\nscale 2.5\nspeed 0\nStates\n{\nSpawn:\nBACC A 2 A_Wander\nloop\n}\n}\n\nactor Fish_PrickleyCrab : Fish_Crab\n{\ntranslation \"192:192=92:92\", \"198:198=0:0\"\ninventory.icon \"FISHIC33\"\ninventory.pickupmessage \"Picked up a Prickley Crab!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_SpawnItemEx(\"CrabSpike\", 64, -16-8, 0, 0, 0, 0, 0, 0)\nTNT1 C 0 A_SpawnItemEx(\"CrabSpike\", 64, -64-8, 0, 0, 0, 0, 0, 0)\nTNT1 C 0 A_SpawnItemEx(\"CrabSpike\", 64, 16+8, 0, 0, 0, 0, 0, 0)\nTNT1 C 0 A_SpawnItemEx(\"CrabSpike\", 64, 64+8, 0, 0, 0, 0, 0, 0)\nstop\n}\n}\n\nactor CrabSpike\n{\n+DONTBLAST\n+NOGRAVITY\n+THRUGHOST\n+NORADIUSDMG\n+DONTRIP\nHeight 16\nRadius 16\nscale 2.5\nMass 9999999999\n+SHOOTABLE\nHealth 15000\nobituary \"%o was prickled by some spikes.\"\nstates\n{\nSpawn:\nHAZA K 18 A_SpawnItemEx(\"CrabSpikeDamager\")\nloop\n}\n}\n\nactor CrabSpikeDamager\n{\nPROJECTILE\n+DONTBLAST\n+DONTREFLECT\nheight 16\nradius 16\ndamagetype \"Misc\"\ndamage (15)\nrenderstyle none\nstates\n{\nSpawn:\nTNT1 A 18\nstop\n}\n}\n\nactor Fish_BoxerCrab : Fish_Crab\n{\ntranslation \"192:192=37:37\", \"198:198=226:226\"\ninventory.icon \"FISHIC34\"\ninventory.pickupmessage \"Picked up a Boxer Crab!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 C 0 A_SpawnItemEx(\"CrabBoxingTrap\", 64, 0, 0, 0, 0, 0, 0, 0)\nstop\n}\n}\n\nactor CrabBoxingTrap\n{\nHeight 8\nRadius 32\nscale 2.5\n-SOLID\nobituary \"%o was knocked out by a boxing trap.\"\nmeleerange 40\nstates\n{\nSpawn:\nCBOX A 3 A_LookEx(LOF_NOSOUNDCHECK, 0, 32, 0, 360, \"See\")\nloop\nSee:\nCBOX A 0 A_JumpIfCloser(38, \"Switch\")\nCBOX A 12 A_ClearTarget\nGoto Spawn\nSwitch:\nCBOX A 10\nCBOX BCDEFEF 3 A_SpawnItemEx(\"CrabBoxingDamager\", 0, 0, 0, 0, 0, 50, 0)\nCBOX FFFFFFFFFFFFFFFFFF 3 A_SpawnItemEx(\"CrabBoxingDamager\", 0, 0, 0, 0, 0, 50, 0)\nCBOX EDCBAA 3 A_ClearTarget\nGoto Spawn\n}\n}\n\nactor CrabBoxingDamager : CrabSpikeDamager\n{\nradius 32\ndamage (5)\nrenderstyle none\nstates\n{\nSpawn:\nPLAY A 2\nstop\n}\n}"
      },
      {
        "source": "pk3",
        "name": "actors/slug.txt",
        "contents": "actor Fish_Slug : BaseFish\n{\ninventory.amount 1\ninventory.usesound \"weapon/TrioCharge3\"\nstates\n{\nSpawn:\nFISI G 1200\nstop\nUse:\nTNT1 A 0\nstop\n}\n}\n\nactor Fish_SmellySlug : Fish_Slug\n{\ntranslation \"192:192=232:232\", \"198:198=234:234\"\ninventory.icon \"FISHIC35\"\ninventory.pickupmessage \"Picked up a Smelly Slug!\"\ninventory.usesound \"\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 A_PlaySoundEx(\"BaBH/Fart\", \"Voice\")\nTNT1 A 0 A_SpawnITemEx(\"SlugFart\")\nstop\n}\n}\n\nactor SlugFart\n{\nPROJECTILE\ndamage 0\npoisondamage 50\nobituary \"%o could not withstand the smell of %k.\"\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 1 A_Explode(10, 512, 0, 1, 10)\nstop\n}\n}\n\nactor Fish_StickySlug : Fish_Slug\n{\ntranslation \"192:192=4:4\", \"198:198=104:104\"\ninventory.icon \"FISHIC36\"\ninventory.pickupmessage \"Picked up a Sticky Slug!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult(\"hfish_findplayer\", 128)>0, \"Stick\")\nfail\nStick:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_sticktoplayer\", 0, ACS_NamedExecuteWithResult(\"hfish_findplayer\", 128))\nstop\n}\n}\n\nactor IsStickingPlayer : OnceC {}\n\nactor Fish_LonelySlug : Fish_Slug\n{\ntranslation \"192:192=152:152\", \"198:198=157:157\"\ninventory.icon \"FISHIC37\"\ninventory.pickupmessage \"Picked up a Lonely Slug!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 A_SpawnItemEx(\"LonleySlugTP\", 0, 0, 0, 20)\nstop\n}\n}\n\nactor LonleySlugTP\n{\nPROJECTILE\n-NOBLOCKMAP\n+RIPPER\nrenderstyle none\nradius 16\nheight 56\nstates\n{\nSpawn:\nPLAY A 0\nPLAY A 0 A_ChangeFlag(\"MISSILE\", 0)\nPLAY A 5\nDeath:\nPLAY A 0 A_stop\nPLAY A 80 ACS_NamedExecuteAlways(\"hfish_teleporttoplayer\", 0)\nstop\n}\n}\n\nactor Fish_DizzySlug : Fish_Slug\n{\ntranslation \"192:192=250:250\", \"198:198=238:238\"\ninventory.icon \"FISHIC38\"\ninventory.pickupmessage \"Picked up a Dizzy Slug!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult(\"hfish_findplayer\", 256)>0, \"Spin\")\nfail\nSpin:\nTNT1 A 0 A_SpawnItemEx(\"DizzySlugSpin\")\nstop\n}\n}\n\nactor DizzySlugSpin\n{\n+NOINTERACTION\n+MISSILE\nreactiontime 1050\nrenderstyle none\nstates\n{\nSpawn:\nPLAY A 0\nPLAY A 1 A_TransferPointer(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TRACER, AAPTR_TARGET)\nSpin:\nPLAY A 1 A_CountDown\nPLAY A 0 A_GiveToTarget(\"DizzySlugAngler\",1)\nloop\n}\n}\n\nactor DizzySlugAngler : CustomInventory\n{\nStates\n{\nPickup:\nTNT1 A 0 A_SetAngle(angle-20.0)\nTNT1 A 0 A_SpawnITemEx(\"TopTwistFX\",5)\nstop\n}\n}\n\nactor Fish_VibratingSlug : Fish_Slug\n{\ntranslation \"192:192=200:200\", \"198:198=93:93\"\ninventory.icon \"FISHIC39\"\ninventory.pickupmessage \"Picked up a Vibrating Slug!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 A_Quake(4, 1000, 0, 600, 0)\nstop\n}\n}"
      },
      {
        "source": "pk3",
        "name": "actors/cheepcheep.txt",
        "contents": "actor Fish_CheepCheep : BaseFish\n{\ninventory.amount 1\ninventory.usesound \"misc/brgillusion\"\nstates\n{\nSpawn:\nFISI M 1200\nstop\nUse:\nTNT1 A 0\nstop\nFailure:\nTNT1 A 0\nstop\n}\n}\n\nactor Fish_WorkerCheepCheep : Fish_CheepCheep\n{\ntranslation \"192:192=110:110\", \"198:198=229:229\"\ninventory.icon \"FISHIC41\"\ninventory.pickupmessage \"Picked up a Worker Cheep Cheep!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult(\"hfish_monstercount\")>0, \"Failure\")\nTNT1 A 0 A_SpawnItemEx(\"CheepMetool\", 128 - 32, 0, 0, 0, 0, 0, 0)\nTNT1 A 0 A_SpawnItemEx(\"CheepMetool\", 128 + 32, 32, 0, 0, 0, 0, 0)\nTNT1 A 0 A_SpawnItemEx(\"CheepMetool\", 128 + 32, -32, 0, 0, 0, 0, 0)\nstop\n}\n}\n\nactor CheepMetool\n{\n//$Category MM8BDM-Enemies\nscale 2.5\nHealth 20\nHeight 50\npainchance 0\nRadius 32\nObituary \"%o was shot by a metool.\"\n+SOLID\nmaxstepheight 50\n+DROPOFF\n+COUNTKILL\nmass 999999\n//MONSTER\n+SHOOTABLE\n+NOBLOOD\n+RANDOMIZE\n+LOOKALLAROUND\n+INVULNERABLE\n+DONTBLAST\n+DROPOFF\n+NOBLOCKMONST\n+DONTBLAST\nspeed 8\ndamagefactor \"Enemy\", 0.0\npainsound \"misc/devilpain\"\npainchance 0\nStates\n{\nSpawn:\nMETT D 6\nLook:\nMETT D 6 A_LookEx(0,0,0,0,180,\"See\")\nloop\nSee:\nMETT DDDDDDD 5 A_JumpIfCloser(56,\"Missile\")\nMETT D 1 A_Jump(180, \"See\")\nMissile:\nMETT E 4 A_ChangeFlag(\"INVULNERABLE\",0)\nMETT F 1 A_FaceTarget\nMETT F 0 A_CustomMissile(\"CheepMetEnemyShot\",8,0,-18,0)\nMETT F 0 A_CustomMissile(\"CheepMetEnemyShot\",8,0,18,0)\nMETT F 5 A_CustomMissile(\"CheepMetEnemyShot\",8,0,0,0)\nMETT B 4\nMETT B 1 A_JumpIf(Args[0]==1, \"Hide\")\nMETT AAABBBCCCBBB 1 A_Chase(\"\",\"\")\nMETT AAABBBCCCBBB 1 A_Chase(\"\",\"\")\nHide:\nMETT BE 5\nMETT D 5 A_ChangeFlag(\"INVULNERABLE\",1)\nMETT D 2 A_ClearTarget\nGoto Look\nDeath:\nMETT A 0 A_Stop\nMETT A 0 A_Pain\nMETT A 0 A_Fall\nMETT A 0 A_ChangeFlag(\"NOGRAVITY\",1)\nMMFX BCDE 3\nTNT1 A -1\nstop\n}\n}\n\nactor CheepMetEnemyShot\n{\nPROJECTILE\nDamage (30)\ndamagetype \"Enemy\"\nSpeed 18\nscale 2.5\nHeight 8\nRadius 8\nSeeSound \"misc/devilfire\"\nStates\n{\nSpawn:\nBASB A 1\nloop\n}\n}\n\nactor Fish_FriskyCheepCheep : Fish_CheepCheep\n{\ntranslation \"192:192=51:51\", \"198:198=226:226\"\ninventory.icon \"FISHIC42\"\ninventory.pickupmessage \"Picked up a Frisky Cheep Cheep!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult(\"hfish_monstercount\")>0, \"Failure\")\nTNT1 A 0 A_SpawnItemEx(\"CheepHarry\", 164, 0, 0, 0, 0, 0, 0)\nstop\n}\n}\n\nactor CheepHarry\n{\n//$Category MM8BDM-Enemies\n+SOLID\n+SHOOTABLE\n+COUNTKILL\n+DROPOFF\n+DONTBLAST\n+NOBLOCKMONST\nHeight 52\nRadius 52\nObituary \"%o was popped by Needle Harry.\"\nHealth 250\nscale 2.5\n//translation \"192:192=227:227\", \"198:198=110:110\"\nmaxstepheight 50\npainchance 256\n+LOOKALLAROUND\nmass 99999999\npainsound \"misc/devilpain\"\nspeed 8\nmeleerange 55\ndamagefactor \"Enemy\", 0.0\nStates\n{\nSpawn:\nTNT1 A 0\nLook:\nNHAR A 0 A_ChangeFlag(\"INVULNERABLE\",0)\nNHAR A 1 A_LookEx(0,0,0,0,360,\"See\")\nGoto Look+1\nSee:\nNHAR A 0 A_ChangeFlag(\"INVULNERABLE\",0)\nNHAR AAAAAA 5 A_FaceTarget\nGoto Missile\nMissile:\nNHAR A 0 A_FaceTarget\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,0)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,15)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,30)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,45)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,60)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,75)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,90)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,105)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,120)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,135)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,150)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,165)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,180)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,195)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,210)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,225)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,240)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,255)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,270)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,285)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,300)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,315)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,330)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,345)\nNHAR A 0 A_PlaySoundEx(\"weapon/junkshield\",\"Voice\")\nNHAR BC 10 //A_Chase(\"Melee\",\"\",CHF_DONTMOVE)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,0)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,15)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,30)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,45)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,60)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,75)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,90)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,105)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,120)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,135)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,150)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,165)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,180)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,195)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,210)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,225)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,240)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,255)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,270)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,285)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,300)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,315)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,330)\nNHAR A 0 A_SpawnItemEx(\"CheepHarryNeedle\",10,0,40,30,0,0,345)\nNHAR A 0 A_PlaySoundEx(\"weapon/junkshield\",\"Voice\")\nNHAR BC 10 //A_Chase(\"Melee\",\"\",CHF_DONTMOVE)\nGoto Roll\nRoll:\nNHAR A 0 A_ChangeFlag(\"INVULNERABLE\",1)\nNHAR DDDEEEDDDEEEDDDEEE 1 A_Chase(\"Melee\",\"\")\nRolling:\nNHAR DDDEEE 1 A_Chase(\"Melee\",\"See\")\nloop\nMelee:\nNHAR D 0 A_CustomMeleeAttack(8)\nNHAR D 0 A_FaceTarget\nNHAR DDDEEE 1\nGoto Rolling\nDeath:\nCRAZ A 0 A_Pain\nCRAZ A 0 A_Fall\nCRAZ A 0 A_SpawnItem(\"EnemyDeathFX\",0,32)\nTNT1 A -1\nstop\n}\n}\n\nactor EnemyDeathFX\n{\nScale 2.5\n+NOGRAVITY\n-SOLID\nStates\n{\nSpawn:\nMMFX BCDE 3\nstop\n}\n}\n\nactor CheepHarryNeedle\n{\nPROJECTILE\ndamage (20)\nscale 2.5\ndamagetype \"Enemy\"\nHeight 8\nRadius 8\nSpeed 25\nStates\n{\nSpawn:\nNHAR F 2\nloop\n}\n}\n\nactor Fish_ElasticCheepCheep : Fish_CheepCheep\n{\ntranslation \"192:192=4:4\", \"198:198=41:41\"\ninventory.icon \"FISHIC43\"\ninventory.pickupmessage \"Picked up an Elastic Cheep Cheep!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult(\"hfish_monstercount\")>0, \"Failure\")\nTNT1 A 0 A_SpawnItemEx(\"CheepSpringer\", 164, 0, 0, 0, 0, 0, 0)\nstop\n}\n}\n\nactor CheepSpringer\n{\n//$Category MM8BDM-Enemies\nHeight 52\nRadius 52\nObituary \"%o was shot by a giant springer.\"\nHitObituary \"%o was bounced by a giant springer.\"\nHealth 300\nscale 2.5\n//translation \"192:192=227:227\", \"198:198=110:110\"\nmaxstepheight 50\npainchance 256\n+SHOOTABLE\n+COUNTKILL\n+DONTBLAST\n+SOLID\n+LOOKALLAROUND\n+NOBLOCKMONST\ndamagefactor \"Enemy\", 0.0\nmass 99999999\npainsound \"misc/devilpain\"\nspeed 2\nmeleerange 90\nStates\n{\nSpawn:\nTNT1 A 0\nLook:\nGSPR A 5 A_LookEx(LOF_NOSOUNDCHECK,0,0,0,360,\"See\")\nGoto Look\nSee:\nGSPR AAAAABBBBBAAAAABBBBBAAAAABBBBBAAAAABBBBBAAAAABBBBBAAAAABBBBB 1 A_Chase(\"Melee\",\"\")\nGSPR A 0 A_LookEx(LOF_NOSOUNDCHECK,0,3000,0,360,\"Missile\")\nGoto See\nMissile:\nGSPR A 0 A_FaceTarget\nGSPR A 0 A_PlaySoundEx(\"weapon/magnetmissile\",\"Voice\")\nGSPR A 0 A_CustomMissile(\"SpringerHomingMissile\",64,0,0)//A_SpawnItemEx(\"SpringerHomingMissile\",0,0,64,0,0,12,0)\nGoto See\nMelee:\nGSPR D 0 A_CustomMeleeAttack(90)\nGSPR D 0 A_FaceTarget\nGSPR CDEDCDEDCDEDCDEDCDED 4\nGoto See\nDeath:\nCRAZ A 0 A_Pain\nCRAZ A 0 A_Fall\nCRAZ A 0 A_SpawnItem(\"EnemyDeathFX\",0,32)\nTNT1 A -1\nstop\n}\n}\n\nactor SpringerHomingMissile// : MageStaffFX2\n{\n+MISSILE\n+NOGRAVITY\n-NOBLOCKMAP\n-SOLID\n+SHOOTABLE\n+SEEKERMISSILE\n+DONTBLAST\ndamagetype \"Enemy\"\nHealth 10\nHeight 16\nRadius 16\nscale 2.5\nspeed 13\nDamage (15)\ndamagefactor \"Enemy\", 0.0\nStates\n{\nSpawn:\nGSPR F 0\nGSPR F 10  A_ChangeVelocity(0.0,0.0,12.0,CVF_RELATIVE|CVF_REPLACE)// A_GiveInventory(\"CutterFlag\",1)\nGoto See\nSee:\nGSPR G 15 A_ChangeVelocity(12.0,0.0,0.0,CVF_RELATIVE|CVF_REPLACE)\nSee2:\nGSPR G 1  A_SeekerMissile(2, 10)//A_MStaffTrack\nloop\nDeath:\nCRAZ A 0 A_SpawnItem(\"EnemyDeathFX\",0,32)\nstop\n}\n}\n\nactor Fish_SniperCheepCheep : Fish_CheepCheep\n{\ntranslation \"192:192=102:102\", \"198:198=128:128\"\ninventory.icon \"FISHIC44\"\ninventory.pickupmessage \"Picked up a Sniper Cheep Cheep!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult(\"hfish_monstercount\")>0, \"Failure\")\nTNT1 A 0 A_SpawnItemEx(\"CheepSniperJoe\", 64, 0, 0, 0, 0, 0, 0)\nstop\n}\n}\n\nactor CheepSniperJoe\n{\n//$Category MM8BDM-Enemies\nHeight 52\nRadius 32\nObituary \"%o was sniped by a Sniper Joe.\"\nHealth 200\nscale 2.5\ntranslation \"192:192=4:4\", \"198:198=110:110\"\nmaxstepheight 50\npainchance 256\n+SOLID\n+SHOOTABLE\n+COUNTKILL\n+DONTBLAST\n+LOOKALLAROUND\n-NOBLOCKMONST\n+DROPOFF\n//dropitem \"BigWeaponEnergySP\", 32\n//dropitem \"BigHealth\", 32\nmass 99999999\npainsound \"misc/devilpain\"\nspeed 8\n\ndamagefactor \"Enemy\", 0.0\n\nStates\n{\nSpawn:\nTNT1 A 0\nTFOG A 0// Thing_ChangeTID(0, 1008)\nTNT1 A 0// ACS_ExecuteAlways(23,0)\nLook:\nSNIP A 5 A_LookEx(LOF_NOSOUNDCHECK,0,0,0,360,\"See\")\nloop\nSee:\nSNIP B 1\nSNIP B 1 A_JumpIf(Args[0]==1, \"See2\")\nSNIP B 1 //A_JumpIfTargetInLOS(\"ShieldUp\") // THIS FUNCTION IS BUGGED ONLINE ARGH!\nSNIP BBBB 1 A_Chase\nSNIP A 0// A_JumpIfTargetInLOS(\"ShieldUp\")\nSNIP CCCC 1 A_Chase\nSNIP A 0 //A_JumpIfTargetInLOS(\"ShieldUp\")\nSNIP DDDD 1 A_Chase\nSNIP A 0 //A_JumpIfTargetInLOS(\"ShieldUp\")\nSNIP EEEE 1 A_Chase\nGoto See+3\nSee2:\nSNIP A 1 //A_JumpIfTargetInLOS(\"ShieldUp\")\nGoto Missile\n//Pain:\n//TNT1 A 1 A_Pain\nShieldUp:\nMissile:\nTNT1 A 0 A_SpawnItemEx(\"SniperJoeShieldX\",23,-7,8,momx, momy, momz, 0, SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM, 0)\nTNT1 A 0 A_SpawnItemEx(\"SniperJoeShieldFX\",23,-17,8,momx, momy, momz, 0, SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM, 0)\nSNIP A 2 A_FaceTarget\nTNT1 A 0 A_GiveInventory(\"CutterFlag\",1)\nTNT1 A 0 A_JumpIfInventory(\"CutterFlag\",20,\"ReadyFire\")\nloop\nReadyFire:\nTNT1 A 0 A_TakeInventory(\"CutterFlag\",999)\nTNT1 A 0 A_SpawnItemEx(\"SniperJoeShieldX\",23,-7,8,momx, momy, momz, 0, SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM, 0)\nTNT1 A 0 A_SpawnItemEx(\"SniperJoeShieldFX\",23,-17,8,momx, momy, momz, 0, SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM, 0)\nSNIP A 2 A_FaceTarget\nSNIP A 0 A_Jump(20,\"ShieldFire\")\nSNIP A 0 //A_JumpIfTargetInLOS(\"ReadyFire\")\nGoto ReadyFire//See\nShieldFire:\nSNIP F 15 A_FaceTarget\nSNIP F 0 A_FaceTarget\nKYOR F 0 A_PlaySoundEx(\"misc/devilfire\",\"Voice\")\nSNIP F 0 A_CustomMissile(\"GammaSniperJoeShot\",12,6,0)\nSNIP F 17\nSNIP F 0 A_FaceTarget\nKYOR F 0 A_PlaySoundEx(\"misc/devilfire\",\"Voice\")\nSNIP F 0 A_CustomMissile(\"GammaSniperJoeShot\",12,6,0)\nSNIP F 17\nSNIP F 0 A_FaceTarget\nKYOR F 0 A_PlaySoundEx(\"misc/devilfire\",\"Voice\")\nSNIP F 0 A_CustomMissile(\"GammaSniperJoeShot\",12,6,0)\nSNIP F 17\nSNIP F 1 A_JumpIf(Args[0]==0, \"See\")\nSNIP A 0 A_ClearTarget\nGoto Look\nDeath:\nDeathFX:\nCRAZ A 0 A_Pain\nCRAZ A 0 A_Fall\nTNT1 A 5 A_SpawnItem(\"EnemyDeathFX\",0,32)\nTNT1 A -1\nstop\n}\n}\n\nactor CheepSniperJoeShot : GammaSniperJoeShot\n{\nDamage (30)\ndamagetype \"Enemy\"\nspeed 60\n}\n\nactor Fish_LawfulCheepCheep : Fish_CheepCheep\n{\nTranslation \"192:192=229:229\", \"198:198=73:73\"\ninventory.icon \"FISHIC45\"\ninventory.pickupmessage \"Picked up a Lawful Cheep Cheep!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult(\"hfish_monstercount\")>0, \"Failure\")\nTNT1 A 0 A_SpawnItemEx(\"CheepFakeman\", 80, 0, 0, 0, 0, 0, 0)\nstop\n}\n}\n\nactor CheepFakeman\n{\nTranslation \"192:192=71:71\", \"198:198=73:73\"\nscale 2.5\n//$Category MM8BDM-Bosses\nHeight 52\nRadius 34\nScale 2.5\nObituary \"%o was arrested by \\chFakeMan\\c-.\"\nHealth 250\nmass 99999999\ndamagefactor \"Enemy\", 0.0\npainchance 256\nSpeed 7\nDamage 0\nspecies \"Fakeman\"\n+COUNTKILL\n+SHOOTABLE\n+DONTBLAST\n+THRUSPECIES\n//-ISMONSTER\n//+NORADIUSDMG\n//+FLOAT\n-SOLID\n+DROPOFF\n+NOBLOOD\n+LOOKALLAROUND\n+SLIDESONWALLS\n//+NODAMAGE\n//MaxStepHeight 0\ngravity 1.0\nstates\n{\n\tSpawn:\n\tFAKM A 0\n\tFAKM O 1 A_JumpIf(floorz==z, \"Land\")\n\tloop\n\tLand:\n\tFAKM IIJJKKKL 4\n\tGoto Spawn2\n\tAim:\n\tFAKM F 1 A_PlaySoundEx(\"misc/fakereloadshort\", \"SoundSlot5\", 0, 0)\n\tFAKM F -1\n\tstop\n\tSpawn2:\n\tFAKM A 1 A_LookEx(0, 0, 0, 0, 180, \"See\")\n\tSpawn3:\n\tFAKM A 8 A_ClearTarget\n\tGoto Spawn2\n\tSee:\n\tFAKM B 0 A_JumpIfInTargetInventory(\"RevolverBusterBoss\", 1, \"Spawn3\")\n\tFAKM B 0 A_GiveInventory(\"CutterFlag\",1)\n\tFAKM BBBBCCCCDDDDEEEEBBBBCCCCDDDDEEEE 1 A_Chase(\"Missile\")\n\tFAKM B 0 A_ChangeFlag(\"NOPAIN\", 0)\n\tFAKM B 0 A_JumpIfInventory(\"CutterFlag\", 4, \"Missile\")\n\tloop\n\tPain:\n\tMissile:\n\tFAKM B 0 A_ChangeFlag(\"NOPAIN\", 1)\n\tFAKM B 0 A_TakeInventory(\"CutterFlag\", 9999)\n\tFAKM B 0 A_FaceTarget\n\tFAKM B 0 A_ChangeVelocity(-20, 0, 18, CVF_REPLACE|CVF_RELATIVE)\n\tFAKM O 4\n\tFAKM A 0 A_PlaySoundEx(\"misc/fakeshot\", \"SoundSlot5\", 0, 0)\n\tFAKM A 0 A_FaceTarget\n\tFAKM O 4 A_CustomMissile(\"FakemanBossShot\", 60, 10, 0, 0, 0)\n\tFAKM A 0 A_PlaySoundEx(\"misc/fakeshot\", \"SoundSlot5\", 0, 0)\n\tFAKM A 0 A_FaceTarget\n\tFAKM O 15 A_CustomMissile(\"FakemanBossShot\", 60, 10, 0, 0, 0)\n\tFAKM A 0 A_PlaySoundEx(\"misc/fakeshot\", \"SoundSlot5\", 0, 0)\n\tFAKM A 0 A_FaceTarget\n\tFAKM O 6 A_CustomMissile(\"FakemanPoliceShot\", 60, 10, 0, 0, 0)\n\tLeaping1:\n\tFAKM O 1 A_JumpIf(floorz==z, \"Leap1Land\")\n\tloop\n\tLeap1Land:\n\tFAKM G 0 A_FaceTarget\n\tFAKM G 10 A_Stop\n\tFAKM B 0 A_FaceTarget\n\tFAKM O 6 A_ChangeVelocity(30, 0, 18, CVF_REPLACE|CVF_RELATIVE)\n\tFAKM A 0 A_PlaySoundEx(\"misc/fakeshot\", \"SoundSlot5\", 0, 0)\n\tFAKM A 0 A_FaceTarget\n\tFAKM O 4 A_CustomMissile(\"FakemanBossShot\", 60, 10, 0, 0, 0)\n\tFAKM A 0 A_PlaySoundEx(\"misc/fakeshot\", \"SoundSlot5\", 0, 0)\n\tFAKM A 0 A_FaceTarget\n\tFAKM O 6 A_CustomMissile(\"FakemanBossShot\", 60, 10, 0, 0, 0)\n\tLeaping1:\n\tFAKM O 1 A_JumpIf(floorz==z, \"Leap2Land\")\n\tloop\n\tLeap2Land:\n\tFAKM G 0 A_FaceTarget\n\tFAKM G 12 A_Stop\n\tFAKM O 3 A_ChangeVelocity(5, random(-15,15), 18, CVF_REPLACE|CVF_RELATIVE)\n\tFAKM A 0 A_FaceTarget\n\tFAKM A 0 A_PlaySoundEx(\"misc/fakeshot\", \"SoundSlot5\", 0, 0)\n\tFAKM O 4 A_CustomMissile(\"FakemanBossShot\", 60, 10, 0, 0, 0)\n\tFAKM A 0 A_FaceTarget\n\tFAKM A 0 A_PlaySoundEx(\"misc/fakeshot\", \"SoundSlot5\", 0, 0)\n\tFAKM O 4 A_CustomMissile(\"FakemanBossShot\", 60, 10, 0, 0, 0)\n\tFAKM A 0 A_FaceTarget\n\tFAKM A 0 A_PlaySoundEx(\"misc/fakeshot\", \"SoundSlot5\", 0, 0)\n\tFAKM O 4 A_CustomMissile(\"FakemanBossShot\", 60, 10, 0, 0, 0)\n\tFAKM A 0 A_FaceTarget\n\tFAKM A 0 A_PlaySoundEx(\"misc/fakeshot\", \"SoundSlot5\", 0, 0)\n\tFAKM O 4 A_CustomMissile(\"FakemanBossShot\", 60, 10, 0, 0, 0)\n\tFAKM A 0 A_FaceTarget\n\tFAKM A 0 A_PlaySoundEx(\"misc/fakeshot\", \"SoundSlot5\", 0, 0)\n\tFAKM O 4 A_CustomMissile(\"FakemanBossShot\", 60, 10, 0, 0, 0)\n\tLeaping2:\n\tFAKM O 1 A_JumpIf(floorz==z, \"Leap3Land\")\n\tloop\n\tLeap3Land:\n\tFAKM G 0 A_FaceTarget\n\tFAKM G 0 A_Stop\n\tFAKM G 0 A_PlaySoundEx(\"misc/fakereload\", \"SoundSlot5\", 0, 0)\n\tFAKM IPQPQPQ 4\n\tGoto See\n\tDeath:\n\tFAKM H 0 A_FaceTarget\n\tFAKM H 0 A_SpawnItemEx(\"FakeDeathFX\", 0, 0, 50)\n\tFAKM A 0 A_PlaySoundEx(\"misc/devildeath\", \"SoundSlot5\", 0, 0)\n\tstop\n}\n}\n\nactor Fish_ArcticCheepCheep : Fish_CheepCheep\n{\nTranslation \"192:192=202:202\", \"198:198=192:192\"\ninventory.icon \"FISHIC67\"\ninventory.pickupmessage \"Picked up an Arctic Cheep Cheep!\"\ninventory.amount 1\nstates\n{\nUse:\nTNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult(\"hfish_monstercount\")>0, \"Failure\")\nTNT1 A 0 A_SpawnItemEx(\"CheepBomberPepe\", 80, 0, 0, 0, 0, 0, 0)\nstop\n}\n}\n\nactor CheepBomberPepe\n{\n//$Category MM8BDM-Enemies\nscale 2.5\nHealth 200\nHeight 55\npainchance 0\nRadius 32\nObituary \"%o bombed by a Bomber Pepe.\"\n-SOLID\nmaxstepheight 50\n+DROPOFF\nmass 999999\n+LOOKALLAROUND\n+DONTBLAST\n+SHOOTABLE\ndamagefactor \"Enemy\", 0.0\nspeed 0\npainsound \"misc/devilpain\"\npainchance 256\nStates\n{\nSpawn:\nTNT1 A 0\nLook:\nPENG C 20\nPENG C 6 A_LookEx(LOF_NOSOUNDCHECK,0,2000,0,360,\"See\")\nGoto Look+1\nSee:\nPENG C 20 A_Stop\nPENG C 0 A_CustomMissile(\"CheepPepeEgg\", 8, 0, random(-2,2))\nPENG DDDDDDDCCCCCCCCCCC 1 A_FaceTarget\nLeap:\nPENG C 0 ThrustThingZ(0,40,0,0)\nPENG E 4 A_Recoil(-6)//A_ChangeVelocity(6.0, 0.0, 10.0, CVF_RELATIVE|CVF_REPLACE)\nGoto Leaping\nLeaping:\nPENG E 1 A_JumpIf(z-floorz==0, \"Land\")\nloop\nLand:\nPENG C 5 A_Stop\nGoto Look+1\nDeath:\nPENG C 0 A_Stop\nPENG C 0 A_Pain\nPENG C 0 A_Fall\nPENG C 0 A_ChangeFlag(\"NOGRAVITY\",1)\nMMFX BCDE 3\nTNT1 A -1\nstop\n}\n}\n\nactor CheepPepeEgg\n{\nPROJECTILE\n-NOGRAVITY\n+DOOMBOUNCE\nHeight 32\nRadius 32\nspeed 20\ndamagetype \"Enemy\"\nscale 2.5\nstates\n{\nSpawn:\nPENG F 0\nPENG F 50 ThrustThingZ(0, 35, 0, 1)\nPENG F 0 A_Die\nDeath:\nPENG F 0 A_Stop\nBOMB A 0 A_PlaySoundEx(\"weapon/hyperbomb\", \"Weapon\")\nBOMB A 0 A_ChangeFlag(\"NOGRAVITY\",1)\nBOMB A 0 A_Explode(100, 180, 0)\nBOMB BCDEFGHIJKLMNOPQR 1\nstop\n}\n}"
      },
      {
        "source": "pk3",
        "name": "actors/angelfish.txt",
        "contents": "actor Fish_Angel : BaseFish\n{\ninventory.amount 1\ninventory.usesound \"weapon/RollHeal\"\nstates\n{\nSpawn:\nFISI L 1200\nstop\nUse:\nTNT1 A 0\nstop\nFailure:\nTNT1 A 0\nstop\n}\n}\n\nactor Fish_DawnAngel : Fish_Angel\n{\nTranslation \"192:192=4:4\", \"198:198=214:214\"\ninventory.icon \"FISHIC46\"\ninventory.pickupmessage \"Picked up a Dawn Angel!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_WingCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_WingCooldown\",1)\nGoto Wing\nWing:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setwings\", 0, 1)\nstop\n}\n}\n\nactor Fish_GlacialAngel : Fish_DawnAngel\n{\nTranslation \"192:192=201:201\", \"198:198=204:204\"\ninventory.icon \"FISHIC47\"\ninventory.pickupmessage \"Picked up a Glacial Angel!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_WingCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_WingCooldown\",1)\nGoto Wing\nWing:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setwings\", 0, 2)\nstop\n}\n}\n\nactor Fish_PhoenixAngel : Fish_DawnAngel\n{\nTranslation \"192:192=229:229\", \"198:198=227:227\"\ninventory.icon \"FISHIC48\"\ninventory.pickupmessage \"Picked up a Phoenix Angel!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_WingCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_WingCooldown\",1)\nGoto Wing\nWing:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setwings\", 0, 3)\nstop\n}\n}\n\nactor Fish_CottonAngel : Fish_DawnAngel\n{\nTranslation \"192:192=35:35\", \"198:198=39:39\"\ninventory.icon \"FISHIC49\"\ninventory.pickupmessage \"Picked up a Cotton Angel!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_WingCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_WingCooldown\",1)\nGoto Wing\nWing:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setwings\", 0, 4)\nstop\n}\n}\n\nactor Fish_AutumnAngel : Fish_DawnAngel\n{\nTranslation \"192:192=227:227\", \"198:198=46:46\"\ninventory.icon \"FISHIC50\"\ninventory.pickupmessage \"Picked up a Autumn Angel!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_WingCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_WingCooldown\",1)\nGoto Wing\nWing:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setwings\", 0, 5)\nTNT1 A 0 A_SpawnItemEx(\"AngelAutumnWings\")\nstop\n}\n}\n\nactor Fish_DuskAngel : Fish_DawnAngel\n{\nTranslation \"192:192=246:246\", \"198:198=245:245\"\ninventory.icon \"FISHIC51\"\ninventory.pickupmessage \"Picked up a Dusk Angel!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_WingCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_WingCooldown\",1)\nGoto Wing\nWing:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setwings\", 0, 6)\nstop\n}\n}\n\nactor Fish_BloodAngel : Fish_DawnAngel\n{\nTranslation \"192:192=176:176\", \"198:198=189:189\"\ninventory.icon \"FISHIC52\"\ninventory.pickupmessage \"Picked up a Blood Angel!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_WingCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_WingCooldown\",1)\nGoto Wing\nWing:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setwings\", 0, 7)\nstop\n}\n}\n\nactor Fish_DragonAngel : Fish_DawnAngel\n{\nTranslation \"192:192=104:104\", \"198:198=110:110\"\ninventory.icon \"FISHIC53\"\ninventory.pickupmessage \"Picked up a Dragon Angel!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_WingCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_WingCooldown\",1)\nGoto Wing\nWing:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setwings\", 0, 8)\nstop\n}\n}\n\nactor Fish_NeonAngel : Fish_DawnAngel\n{\nTranslation \"192:192=193:193\", \"198:198=198:198\"\ninventory.icon \"FISHIC54\"\ninventory.pickupmessage \"Picked up a Neon Angel!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_WingCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_WingCooldown\",1)\nGoto Wing\nWing:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setwings\", 0, 9)\nstop\n}\n}\n\nactor Fish_SteelAngel : Fish_DawnAngel\n{\nTranslation \"192:192=4:4\", \"198:198=92:92\"\ninventory.icon \"FISHIC55\"\ninventory.pickupmessage \"Picked up a Steel Angel!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_WingCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_WingCooldown\",1)\nGoto Wing\nWing:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setwings\", 0, 10)\nstop\n}\n}\n\nactor Fish_WingCooldown : Fish_Cooldown\n{\npowerup.duration 3\n}\n\nactor AngelDawnWings\n{\ntranslation \"192:192=4:4\", \"198:198=214:214\", \"0:0=248:248\"\n+MISSILE\n+CLIENTSIDEONLY\n+NOINTERACTION\n-SOLID\nheight 1\nradius 1\n+NOGRAVITY\nscale 2.5\nstates\n{\nSpawn:\nTNT1 A 5\nTNT1 A 1 ACS_NamedExecuteAlways(\"hfish_propwarper\", 0, 1)\nGoto Show\nShow:\nFWIN A 1 A_Warp(AAPTR_TARGET, -18, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)\nloop\n}\n}\n\nactor AngelGlacialWings : AngelDawnWings{translation \"192:192=201:201\", \"198:198=204:204\", \"0:0=240:240\"\nrenderstyle translucent\nalpha 0.8}\nactor AngelPhoenixWings : AngelDawnWings{translation \"192:192=229:229\", \"198:198=227:227\", \"0:0=47:47\"}\nactor AngelCottonWings : AngelDawnWings{translation \"192:192=35:35\", \"198:198=39:39\", \"0:0=253:253\"}\nactor AngelAutumnWings : AngelDawnWings{translation \"192:192=227:227\", \"198:198=46:46\", \"0:0=0:0\"}\n\nactor BatDuskWings : AngelDawnWings\n{\ntranslation \"192:192=246:246\", \"198:198=245:245\", \"250:250=8:8\"\nstates\n{\nSpawn:\nTNT1 A 5\nTNT1 A 1 ACS_NamedExecuteAlways(\"hfish_propwarper\", 0, 1)\nGoto Show\nShow:\nFWIN B 1 A_Warp(AAPTR_TARGET, -18, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)\nloop\n}\n}\n\nactor BatBloodWings : BatDuskWings{translation \"192:192=176:176\", \"198:198=189:189\", \"250:250=0:0\"}\nactor BatDragonWings : BatDuskWings{translation \"192:192=104:104\", \"198:198=110:110\", \"250:250=123:123\"}\nactor BatNeonWings : BatDuskWings{translation \"192:192=193:193\", \"198:198=198:198\", \"250:250=7:7\"}\nactor BatSteelWings : BatDuskWings{translation \"192:192=4:4\", \"198:198=92:92\", \"250:250=6:6\"}"
      },
      {
        "source": "pk3",
        "name": "actors/shrimp.txt",
        "contents": "actor Fish_Shrimp : BaseFish\n{\ninventory.amount 1\ninventory.usesound \"weapon/RollHeal\"\nstates\n{\nSpawn:\nFISI J 1200\nstop\n}\n}\n\nactor Fish_AuraCooldown : Fish_WingCooldown {}\n\nactor Fish_SpicyShrimp : Fish_Shrimp\n{\nTranslation \"192:192=182:182\", \"198:198=176:176\"\ninventory.icon \"FISHIC56\"\ninventory.pickupmessage \"Picked up a spicy Shrimp!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_AuraCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_AuraCooldown\",1)\nGoto Aura\nAura:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setaura\", 0, 1, 1)\nstop\n}\n}\n\nactor ShrimpSpicyAura\n{\nrenderstyle none\n+MISSILE\n+CLIENTSIDEONLY\n+NOINTERACTION\n-SOLID\nheight 1\nradius 1\n+NOGRAVITY\nstates\n{\nSpawn:\nTNT1 A 5\nTNT1 A 1 ACS_NamedExecuteAlways(\"hfish_propwarper\", 0, 1, 1)\nGoto Show\nShow:\nTNT1 AAA 0 A_SpawnItemEx(\"ShrimpSpicyFX\", 38 + random(0, 16), 0, random(4, 48), 0, 0, random(1,4), random(0,360), 0)\nBASS A 5 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)\nloop\n}\n}\n\nactor ShrimpSpicyFX\n{\nrenderstyle translucent\nalpha 1.0\nscale 2.0\n+NOINTERACTION\n+CLIENTSIDEONLY\nheight 1\nradius 1\n+NOGRAVITY\n+BRIGHT\nstates\n{\nSpawn:\nFSPK AAABBBCCCDDDEEE 1 bright A_FadeOut(0.05)\nstop\n}\n}\n\nactor Fish_RoyalShrimp : Fish_Shrimp\n{\nTranslation \"192:192=214:214\", \"198:198=229:229\"\ninventory.icon \"FISHIC57\"\ninventory.pickupmessage \"Picked up a Royal Shrimp!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_AuraCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_AuraCooldown\",1)\nGoto Aura\nAura:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setaura\", 0, 2, 1)\nstop\n}\n}\n\nactor ShrimpRoyalAura : ShrimpSpicyAura\n{\nstates\n{\nSpawn:\nTNT1 A 5\nTNT1 A 1 ACS_NamedExecuteAlways(\"hfish_propwarper\", 0, 1, 1)\nGoto Show\nShow:\nTNT1 AAAA 0 A_SpawnItemEx(\"RoyalShrimpSparkleFX\", 38 + random(0, 16), 0, random(4, 65), 0, 0, 0, random(0,360), 0, 128)\nTNT1 A 5 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)\nloop\n}\n}\n\nactor RoyalShrimpSparkleFX : SparkleFX\n{\n+FORCEXYBILLBOARD\ntranslation \"192:192=84:84\", \"198:198=88:88\"\n+CLIENTSIDEONLY\nrenderstyle translucent\nalpha 0.9\n\tstates\n\t{\n\tSpawn:\n\tFLAS A 0\n\tFSFX ABCDE 4 bright\n\tstop\n\t}\n}\n\nactor Fish_MintShrimp : Fish_Shrimp\n{\nTranslation \"192:192=4:4\", \"198:198=196:196\"\ninventory.icon \"FISHIC58\"\ninventory.pickupmessage \"Picked up a Mint Shrimp!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_AuraCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_AuraCooldown\",1)\nGoto Aura\nAura:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setaura\", 0, 3, 1)\nstop\n}\n}\n\nactor ShrimpMintAura : ShrimpSpicyAura\n{\nstates\n{\nSpawn:\nTNT1 A 5\nTNT1 A 1 ACS_NamedExecuteAlways(\"hfish_propwarper\", 0, 1, 1)\nGoto Show\nShow:\nTNT1 AAAA 0 A_SpawnItemEx(\"MintShrimpSparkleFX\", 38 + random(0, 16), 0, random(4, 65), 0, 0, 0, random(0,360), 0, 128)\nTNT1 A 5 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)\nloop\n}\n}\n\nactor MintShrimpSparkleFX : RoyalShrimpSparkleFX\n{\ntranslation \"192:192=192:192\", \"198:198=198:198\"\nrenderstyle add\nalpha 0.8\n}\n\nactor Fish_BloodShrimp : Fish_Shrimp\n{\nTranslation \"192:192=8:8\", \"198:198=42:42\"\ninventory.icon \"FISHIC59\"\ninventory.pickupmessage \"Picked up a Blood Shrimp!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_AuraCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_AuraCooldown\",1)\nGoto Aura\nAura:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setaura\", 0, 4, 1)\nstop\n}\n}\n\nactor ShrimpBloodAura : ShrimpSpicyAura\n{\nstates\n{\nSpawn:\nTNT1 A 5\nTNT1 A 1 ACS_NamedExecuteAlways(\"hfish_propwarper\", 0, 1, 1)\nGoto Show\nShow:\nTNT1 A 0 A_SpawnItemEx(\"BloodShrimpBatFX\", 8 + random(0, 32), 0, random(2, 16), frandom(0.2,1.1), 0, 1, random(0,360), 0)\nTNT1 A 4 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)\nloop\n}\n}\n\nactor BloodShrimpBatFX\n{\n+NOINTERACTION\n-SOLID\n+CLIENTSIDEONLY\n\nstates\n{\nSpawn:\nFSFX FFFFGGGGFFFFGGGG 1 A_ScaleVelocity(1.1)\nFSFX FFFFGGGGFFFFGGGG 1 A_FadeOut(0.15)\nstop\n}\n}\n\nactor Fish_SoapyShrimp : Fish_Shrimp\n{\nTranslation \"192:192=102:102\", \"198:198=96:96\"\ninventory.icon \"FISHIC60\"\ninventory.pickupmessage \"Picked up a Soapy Shrimp!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_AuraCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_AuraCooldown\",1)\nGoto Aura\nAura:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setaura\", 0, 5, 1)\nstop\n}\n}\n\nactor ShrimpSoapyAura : ShrimpSpicyAura\n{\nstates\n{\nSpawn:\nTNT1 A 5\nTNT1 A 1 ACS_NamedExecuteAlways(\"hfish_propwarper\", 0, 1, 1)\nGoto Show\nShow:\nTNT1 AA 0 A_SpawnItemEx(\"SoapyShrimpFX\", 28 + random(0, 2), 0, random(2, 32), frandom(-1.1,1.1), 0, frandom(-1.0,1.0), random(0,360), 0)\nTNT1 A 5 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)\nloop\n}\n}\n\nactor SoapyShrimpFX\n{\n+NOINTERACTION\n-SOLID\n+CLIENTSIDEONLY\nrenderstyle translucent\nalpha 0.8\nscale 0.5\nstates\n{\nSpawn:\nWAVB GGGGG 1 A_SetScale(scalex + 0.1, scaley + 0.1)\nWAVB GGGGG 1 A_SetScale(scalex - 0.1, scaley - 0.1)\nWAVB GGGGG 1 A_SetScale(scalex + 0.1, scaley + 0.1)\nWAVB GGGGG 1 A_SetScale(scalex - 0.1, scaley - 0.1)\nWAVB GGGGG 1 A_SetScale(scalex + 0.1, scaley + 0.1)\nWAVB GGGGG 1 A_SetScale(scalex - 0.1, scaley - 0.1)\nWAVB GGGGG 1 A_SetScale(scalex + 0.1, scaley + 0.1)\nWAVB GGGGG 1 A_SetScale(scalex - 0.1, scaley - 0.1)\nWAVB GGGGG 1 A_SetScale(scalex + 0.1, scaley + 0.1)\nWAVB H 3 A_Stop\nstop\n}\n}\n\nactor Fish_ColorfulShrimp : Fish_Shrimp\n{\nTranslation \"192:192=41:41\", \"198:198=197:197\", \"4:4=104:104\"\ninventory.icon \"FISHIC61\"\ninventory.pickupmessage \"Picked up a Colorful Shrimp!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_AuraCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_AuraCooldown\",1)\nGoto Aura\nAura:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setaura\", 0, 6, 1)\nstop\n}\n}\n\nactor ShrimpColorfulAura : ShrimpSpicyAura\n{\nstates\n{\nSpawn:\nTNT1 A 5\nTNT1 A 1 ACS_NamedExecuteAlways(\"hfish_propwarper\", 0, 1, 1)\nGoto Show\nShow:\nTNT1 A 0 A_SpawnItemEx(\"OrbShrimpFXRed\", 40, 0, 56, 0, 0, 0, 0, 0)\nTNT1 A 0 A_SpawnItemEx(\"OrbShrimpFXBlue\", 40, 0, 56, 0, 0, 0, 120, 0)\nTNT1 A 0 A_SpawnItemEx(\"OrbShrimpFXGreen\", 40, 0, 56, 0, 0, 0, -120, 0)\nTNT1 A 0 A_SetAngle(angle + 3)\nTNT1 A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION|WARPF_USECALLERANGLE)\nloop\n}\n}\n\nactor OrbShrimpFXRed\n{\ntranslation \"198:198=221:221\", \"192:192=229:229\"\n+NOINTERACTION\n+CLIENTSIDEONLY\n+NOGRAVITY\nscale 0.6\nrenderstyle add\nreactiontime 7\nstates\n{\nSpawn:\nFSFX H 0 A_FadeOut(0.12)\nFSFX H 0 A_Countdown\nFSFX H 1 A_SetScale(scalex - 0.08, scaley - 0.08)\nloop\n}\n}\n\nactor OrbShrimpFXBlue : OrbShrimpFXRed { translation \"198:198=198:198\", \"192:192=192:192\"}\nactor OrbShrimpFXGreen : OrbShrimpFXRed { translation \"192:192=105:105\", \"198:198=129:129\"}\n\nactor Fish_OilyShrimp : Fish_Shrimp\n{\nTranslation \"192:192=7:7\", \"198:198=5:5\"\ninventory.icon \"FISHIC62\"\ninventory.pickupmessage \"Picked up an Oily Shrimp!\"\nstates\n{\nUse:\nTNT1 A 0 A_JumpIfInventory(\"Fish_AuraCooldown\", 1, \"Failure\")\nTNT1 A 0 A_GiveInventory(\"Fish_AuraCooldown\",1)\nGoto Aura\nAura:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_setaura\", 0, 7, 1)\nstop\n}\n}\n\nactor ShrimpOilyAura : ShrimpSpicyAura\n{\n\nstates\n{\nSpawn:\nTNT1 A 5\nTNT1 A 1 ACS_NamedExecuteAlways(\"hfish_propwarper\", 0, 1, 1)\nGoto Show\nShow:\nTNT1 A 0 A_SpawnItemEx(\"ShrimpOilyFX\", 16, 0, frandom(5.0,10.0), frandom(1.0, 4.0), 0, 0, random(0,360), 0)\nTNT1 A 2 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION|WARPF_USECALLERANGLE)\nloop\n}\n}\n\nactor ShrimpOilyFX : ReprogramFX\n{\n+CLIENTSIDEONLY\nrenderstyle translucent\ntranslation \"1:255=0:0\"\nstates\n{\nSpawn:\nDARS F 0 A_SetScale(scalex + 0.12, scaley + 0.12)\nDARS F 0 A_FadeOut(0.04)\nFSFX H 1 A_ScaleVelocity(0.7)\nloop\n}\n}"
      },
      {
        "source": "pk3",
        "name": "actors/pets.txt",
        "contents": "actor Fish_Pet : BaseFish\n{\ninventory.amount 1\ninventory.maxamount 1\ninventory.usesound \"item/refill\"\nstates\n{\nSpawn:\nFISI A 1200\nstop\n}\n}\n\nactor Fish_ClawPet : Fish_Pet\n{\ninventory.icon \"FISHIU01\"\ninventory.pickupmessage \"Picked up a giant claw!\"\nstates\n{\nSpawn:\nFISI P 1200\nstop\nUse:\nTNT1 A 0 A_SpawnITemex(\"ClawPet\", 0, 0, 0, 0, 0, 0, tid-1000, SXF_ABSOLUTEANGLE)\nstop\n}\n}\n\nactor ClawPet\n{\nscale 2.5\nheight 16\nradius 18\n//+SOLID\nmaxstepheight 32\nmeleerange 64\n//+THRUACTORS\n+INVULNERABLE\n+DROPOFF\n//+CANPASS\n//+NOBLOCKMONST\nHealth 1\nspeed 7\n\nvar int user_owner;\nvar int user_color;\nstates\n{\nSpawn:\nCLAW C 0 A_Jump(256, \"Waiting\")\nCLAW A 0 ACS_NamedExecuteAlways(\"hfish_petsetowner\", 0, angle)\nCLAW C 0 A_ChangeFlag(\"MISSILE\",0)\nWaiting:\nCLAW CCCCCC 35 A_LookEx(LOF_NOSOUNDCHECK, 0, 0, 0, 180, \"See\")\nCLAW A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nloop\nSee:\nCLAW AAAABBBBAAAABBBBAAAABBBB 1 A_Chase\nCLAW A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nloop\nMelee:\nCLAW CCCCCCC 4 A_FaceTarget(30)\nBUBD A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nCLAW C 1 A_JumpIFCloser(128, \"Melee\")\nGoto See\nRecall:\nCLAW C 0 A_ChangeFlag(\"NOCLIP\",1)\nCLAW C 0 A_ChangeFlag(\"NOGRAVITY\",1)\nRecalling:\nCLAW C 0 A_FaceTracer(0, 0)\nCLAW C 0 A_SpawnITemEx(\"ClawPetBubbleFX\", 20, 0, 4, frandom(-1, 1), frandom(-5, 5), frandom(-1, 1), frandom(-5, 5))\nCLAW C 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch)*30,3)\nCLAW C 0 A_SpawnITemEx(\"ClawPetBubbleFX\", 20, 0, 4, frandom(-1, 1), frandom(-5, 5), frandom(-1, 1), frandom(-5, 5))\nCLAW C 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch)*30,3)\nCLAW C 0 A_SpawnITemEx(\"ClawPetBubbleFX\", 20, 0, 4, frandom(-1, 1), frandom(-5, 5), frandom(-1, 1), frandom(-5, 5))\nCLAW C 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch)*30,3)\nCLAW C 0 A_SpawnITemEx(\"ClawPetBubbleFX\", 20, 0, 4, frandom(-1, 1), frandom(-5, 5), frandom(-1, 1), frandom(-5, 5))\nCLAW C 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch)*30,3)\nCLAW C 0 A_SpawnITemEx(\"ClawPetBubbleFX\", 20, 0, 4, frandom(-1, 1), frandom(-5, 5), frandom(-1, 1), frandom(-5, 5))\nCLAW C 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch)*30,3)\nCLAW C 0 A_SpawnITemEx(\"ClawPetBubbleFX\", 20, 0, 4, frandom(-1, 1), frandom(-5, 5), frandom(-1, 1), frandom(-5, 5))\nCLAW C 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch)*30,3)\nCLAW C 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0, 1)\nloop\nReturn:\nCLAW C 0 A_ChangeFlag(\"NOCLIP\",0)\nCLAW C 0 A_Stop\nCLAW C 1 A_ChangeFlag(\"NOGRAVITY\",0)\nGoto Waiting\n}\n}\n\nactor ClawPetBubbleFX\n{\n+NOINTERACTION\n-SOLID\n+CLIENTSIDEONLY\nrenderstyle translucent\nalpha 0.8\nscale 0.5\n+MISSILE\nstates\n{\nSpawn:\nWAVB G 20\nWAVB H 2\nstop\n}\n}\n\nactor Fish_MobyPet : Fish_Pet\n{\ninventory.icon \"FISHIU02\"\ninventory.pickupmessage \"Picked up a lost anchor!\"\nstates\n{\nSpawn:\nFISI S 1200\nstop\nUse:\nTNT1 A 0 A_SpawnITemex(\"MobyPet\", 0, 0, 0, 0, 0, 0, tid-1000, SXF_ABSOLUTEANGLE)\nstop\n}\n}\n\nactor MobyPet : ClawPet\n{\nmeleerange 64\nspeed 8\n+NOGRAVITY\n+FLOATBOB\n+FLOAT\nscale 0.5\n+NOTARGETSWITCH\n\nstates\n{\nSpawn:\nMOBY C 0 A_Jump(256, \"Waiting\")\nMOBY A 0 ACS_NamedExecuteAlways(\"hfish_petsetowner\", 0, angle)\nMOBY C 0 A_ChangeFlag(\"MISSILE\",0)\nWaiting:\nMOBY A 0 A_ChangeVelocity(0,0,0,CVF_REPLACE)\nMOBY ABCDEFEDCBA 6 A_LookEx(LOF_NOSOUNDCHECK, 0, 0, 0, 180, \"See\")\nMOBY A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nGoto Waiting+1\nSee:\nMOBY AAAAAABBBBBBCCCCCCCDDDDDEEEEEEFFFFFFEEEEEEDDDDDDCCCCCCBBBBBB 1 A_Chase\nMOBY A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nloop\nMelee:\nMOBY AAABBBCCCCDDEEEFFFEEEDDDCCCBBB 2 A_FaceTarget(30)\nMOBY C 0 A_JumpIFCloser(128, \"Idle\")\nGoto See\nIdle:\nMOBY A 0 ACS_NamedExecuteAlways(\"hfish_randomangle\", 0)\nMOBY ABCDEFEDCBA 3\nMOBY A 0 A_Jump(120, 2)\nMOBY A 0 A_ChangeVelocity(1,0,0,CVF_RELATIVE|CVF_REPLACE)\nMOBY ABCDEFEDCBAABCDEFEDCBA 3\nMOBY A 0 ACS_NamedExecuteAlways(\"hfish_randomangle\", 0)\nMOBY A 0 A_Stop\nMOBY A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nMOBY C 0 A_JumpIFCloser(512, \"Idle\")\nGoto See\nRecall:\nMOBY C 0 A_ChangeFlag(\"NOCLIP\",1)\nRecalling:\nMOBY C 0 A_FaceTracer(0, 0)\nMOBY C 0 A_SpawnITemEx(\"ClawPetBubbleFX\", -8, 0, 4, frandom(-1, 1), frandom(-5, 5), frandom(-1, 1), frandom(-5, 5))\nMOBY A 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch+8)*30,3)\nMOBY C 0 A_SpawnITemEx(\"ClawPetBubbleFX\", -8, 0, 4, frandom(-1, 1), frandom(-5, 5), frandom(-1, 1), frandom(-5, 5))\nMOBY B 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch+8)*30,3)\nMOBY C 0 A_SpawnITemEx(\"ClawPetBubbleFX\", -8, 0, 4, frandom(-1, 1), frandom(-5, 5), frandom(-1, 1), frandom(-5, 5))\nMOBY C 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch+8)*30,3)\nMOBY C 0 A_SpawnITemEx(\"ClawPetBubbleFX\", -8, 0, 4, frandom(-1, 1), frandom(-5, 5), frandom(-1, 1), frandom(-5, 5))\nMOBY D 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch+8)*30,3)\nMOBY C 0 A_SpawnITemEx(\"ClawPetBubbleFX\", -8, 0, 4, frandom(-1, 1), frandom(-5, 5), frandom(-1, 1), frandom(-5, 5))\nMOBY E 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch+8)*30,3)\nMOBY C 0 A_SpawnITemEx(\"ClawPetBubbleFX\", -8, 0, 4, frandom(-1, 1), frandom(-5, 5), frandom(-1, 1), frandom(-5, 5))\nMOBY F 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch+8)*30,3)\nMOBY C 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0, 1)\nloop\nReturn:\nMOBY C 0 A_ChangeFlag(\"NOCLIP\",0)\nMOBY C 0 A_Stop\nMOBY C 1\nGoto Waiting\n}\n}\n\nactor Fish_BubbleDragonPet : Fish_Pet\n{\ninventory.icon \"FISHIU03\"\ninventory.pickupmessage \"Picked up a dragon in a bubble!\"\nstates\n{\nSpawn:\nFISI R 1200\nstop\nUse:\nTNT1 A 0 A_SpawnITemex(\"BubbleDragonPet\", 0, 0, 0, 0, 0, 0, tid-1000, SXF_ABSOLUTEANGLE)\nstop\n}\n}\n\nactor BubbleDragonPet : ClawPet\n{\nmaxstepheight 16\nspeed 9\n\nstates\n{\nSpawn:\nBUBD C 0 A_Jump(256, \"Waiting\")\nBUBD A 0 ACS_NamedExecuteAlways(\"hfish_petsetowner\", 0, angle)\nBUBD C 0 A_ChangeFlag(\"MISSILE\",0)\nWaiting:\nBUBD AAAAAA 35 A_LookEx(LOF_NOSOUNDCHECK, 0, 0, 0, 180, \"See\")\nBUBD A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nloop\nSee:\nBUBD BBBBCCCCDDDDEEEEBBBBCCCCDDDDEEEE 1 A_Chase(\"Melee\",\"\")\nBUBD B 0 A_GiveInventory(\"CutterFlag\", random(0,6))\nBUBD A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nloop\nMelee:\nBUDD A 0 A_JumpIfInventory(\"CutterFlag\", 20, \"Missile\")\nBUBD AAAAAAA 4 A_FaceTarget(30)\nBUBD A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nBUBD A 1 A_JumpIFCloser(128, \"Melee\")\nGoto See\nMissile:\nBUBD F 5 ACS_NamedExecuteAlways(\"hfish_randomangle\", 0)\nBUBD F 15 A_SpawnItemEx(\"BubbleDragonBubble\", 0, 0, 8, 15, 0, 0, 0, SXF_TRANSFERTRANSLATION)\nBUBD F 0 A_TakeInventory(\"CutterFlag\", 20)\nGoto Melee\nRecall:\nBUBD C 0 A_ChangeFlag(\"NOCLIP\",1)\nBUBD H 15 A_ChangeFlag(\"NOGRAVITY\",1)\nRecalling:\nBUBD C 0 A_FaceTracer(0, 0)\nBUBD IJ 4 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch)*30,3)\nBUBD C 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0, 1)\nloop\nReturn:\nBUBD A 0 A_ChangeFlag(\"NOCLIP\",0)\nBUBD A 0 A_Stop\nBUBD A 1 A_ChangeFlag(\"NOGRAVITY\",0)\nGoto Waiting\n}\n}\n\nactor BubbleDragonBubble\n{\nPROJECTILE\nDamage (0)\nheight 8\nradius 8\nscale 2.5\n+HITTRACER\nstates\n{\nSpawn:\nBUBD KLM 5\nBUBD N -1 A_ChangeVelocity(frandom(-1.0,1.0), frandom(-1.0,1.0), 1, CVF_REPLACE)\nstop\nCrash:\nXDeath:\nBUBD N 0 A_CheckFlag(\"PICKUP\", \"Trap\", AAPTR_TRACER)\nstop\nTrap:\nBUBD N 0 A_GiveInventory(\"BubbleDragonTrap\", 1, AAPTR_TRACER)\nstop\nDeath:\nBUBD OP 3\nstop\n}\n}\n\nactor BubbleDragonTrap : CustomInventory\n{\nstates\n{\nPickup:\nTNT1 A 0 A_SpawnItemEx(\"DangerTrapped\")\nstop\n}\n}\n\nactor Fish_MetroidPet : Fish_Pet\n{\ninventory.icon \"FISHIU04\"\ninventory.pickupmessage \"Picked up a chozo artifact!\"\nstates\n{\nSpawn:\nFISI Q 1200\nstop\nUse:\nTNT1 A 0 A_SpawnITemex(\"MetroidPet\", 0, 0, 0, 0, 0, 0, tid-1000, SXF_ABSOLUTEANGLE)\nstop\n}\n}\n\nactor MetroidPet : ClawPet\n{\nmeleerange 64\nspeed 12\n+NOGRAVITY\n+FLOATBOB\n+FLOAT\nscale 2.5\n+NOTARGETSWITCH\n\nstates\n{\nSpawn:\nMETR C 0 A_Jump(256, \"Waiting\")\nMETR A 0 ACS_NamedExecuteAlways(\"hfish_petsetowner\", 0, angle)\nMETR C 0 A_ChangeFlag(\"MISSILE\",0)\nWaiting:\nMETR A 0 A_ChangeVelocity(0,0,0,CVF_REPLACE)\nMETR ABABAB 12 A_LookEx(LOF_NOSOUNDCHECK, 0, 0, 0, 180, \"See\")\nMETR A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nGoto Waiting+1\nSee:\nMETR A 0 A_TakeInventory(\"CutterFlag\", 9999)\nMETR AAAAAAAAABBBBBBBBBAAAAAAAAABBBBBBBBBAAAAAAAAABBBBBBBBB 1 A_Chase\nMETR A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nloop\nMelee:\nMETR ABAB 12 A_FaceTarget(30)\nMETR A 0 A_GiveInventory(\"CutterFlag\", random(1,2))\nMETR A 0 A_JumpIfInventory(\"CutterFlag\", 5, \"Idle\")\nMETR C 0 A_JumpIFCloser(128, \"Melee\")\nGoto See\nIdle:\nMETR A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nMETR ABAB 12 A_FaceTarget(30)\nMETR B 30\nMETR B 1 A_PlaySoundEx(\"pets/metroidcry\", \"Voice\")\nMETR ABABABABABA 2\nMETR ABAB 12\nMETR C 0 A_JumpIFCloser(512, \"Idle\")\nGoto See\nRecall:\nMETR C 0 A_ChangeFlag(\"NOCLIP\",1)\nRecalling:\nMETR C 0 A_FaceTracer(0, 0)\nMETR AAABBB 1 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch+8)*30,3)\nMETR C 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0, 1)\nloop\nReturn:\nMOBY C 0 A_ChangeFlag(\"NOCLIP\",0)\nMOBY C 0 A_Stop\nMETR A 1\nGoto Waiting\n}\n}\n\nactor Fish_TurtlePet : Fish_Pet\n{\ninventory.icon \"FISHIU05\"\ninventory.pickupmessage \"Picked up an occupied turtle shell!\"\nstates\n{\nSpawn:\nFISI O 1200\nstop\nUse:\nTNT1 A 0 A_SpawnITemex(\"TurtlePet\", 0, 0, 0, 0, 0, 0, tid-1000, SXF_ABSOLUTEANGLE)\nstop\n}\n}\n\nactor TurtlePet : ClawPet\n{\nspeed 2\nscale 1.5\nstates\n{\nSpawn:\nTURT C 0 A_Jump(256, \"Waiting\")\nTURT A 0 ACS_NamedExecuteAlways(\"hfish_petsetowner\", 0, angle)\nTURT C 0 A_ChangeFlag(\"MISSILE\",0)\nWaiting:\nTURT AAAAAA 35 A_LookEx(LOF_NOSOUNDCHECK, 0, 0, 0, 180, \"See\")\nTURT A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nloop\nSee:\nTURT A 0 A_TakeInventory(\"CutterFlag\", 999)\nTURT AAABBBCCCBBBAAABBBCCCBBB 1 A_Chase\nTURT A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nloop\nMelee:\nTURT AA 12 A_FaceTarget(10)\nTURT A 0 A_GiveInventory(\"CutterFlag\", 1)\nTURT A 0 A_JumpIfInventory(\"CutterFlag\", 8, \"Idle\")\nTURT C 0 A_JumpIFCloser(128, \"Melee\")\nGoto See\nIdle:\nTURT AABBCCBB 2 A_Wander\nTURT A 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0)\nTURT C 0 A_JumpIFCloser(512, \"Idle\")\nGoto See\nRecall:\nTURT C 0 A_ChangeFlag(\"NOCLIP\",1)\nTURT C 0 A_ChangeFlag(\"NOGRAVITY\",1)\nRecalling:\nTURT C 0 A_FaceTracer(0, 0)\nTURT D 1 A_ChangeVelocity(cos(pitch)*20,0,sin(pitch)*20,3)\nTURT E 1 A_ChangeVelocity(cos(pitch)*20,0,sin(pitch)*20,3)\nTURT F 1 A_ChangeVelocity(cos(pitch)*20,0,sin(pitch)*20,3)\nTURT G 1 A_ChangeVelocity(cos(pitch)*20,0,sin(pitch)*20,3)\nTURT H 1 A_ChangeVelocity(cos(pitch)*20,0,sin(pitch)*20,3)\nTURT C 0 ACS_NamedExecuteAlways(\"hfish_petupdate\", 0, 1)\nloop\nReturn:\nTURT C 0 A_ChangeFlag(\"NOCLIP\",0)\nTURT C 0 A_Stop\nTURT A 1 A_ChangeFlag(\"NOGRAVITY\",0)\nGoto Waiting\n}\n}"
      },
      {
        "source": "pk3",
        "name": "actors/boss.txt",
        "contents": "// Octoboss by CutmanMike\n\nactor GigaOctoperOA\n{\nscale 7.0\nHeight 256\nRadius 256\n+SOLID\n+SHOOTABLE\n+COUNTKILL\n+DONTBLAST\n+DONTRIP\nspeed 0\nHealth 3500\n+QUICKTORETALIATE\ndamagefactor \"Enemy\", 0.0\ndamagefactor \"Misc\", 0.0\n\ndamagefactor \"QuintLeap\", 0.0\ndamagefactor \"Sakugarne\", 0.0\ndamagefactor \"SakugarneB\", 0.0\ndamagefactor \"StarCrashB\", 0.0\ndamagefactor \"StoneLeap\", 0.0\ndamagefactor \"IceWaveB\", 0.0\ndamagefactor \"LaserTrident\", 0.5\ndamagefactor \"ClassPainLess\", 0.2\ndamagefactor \"ClassPainLess2\", 0.2\n\ndamagefactor \"MagicCardB\", 0.2\ndamagefactor \"MagicCard\", 0.2\ndamagefactor \"MagicCardBF\", 0.2\ndamagefactor \"BusterRodG\", 0.4\ndamagefactor \"ElectricShockB\", 0.1\n\nspecies \"Enemy\"\nmass 99999999999\nobituary \"%o was destroyed by the Giga OctoperOA.\"\n\nvar int user_octo;\nstates\n{\nSpawn:\nOCTO A 1 A_Jump(256, \"Look\")\nOCTO A 1 A_SpawnItemEx(\"GigaOctoperIntro\")\nOCTO A 10 A_SpawnItemEx(\"GigaOctoperOATentacle\", 550, 550, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)\nOCTO A 10 A_SpawnItemEx(\"GigaOctoperOATentacle\", -550, 550, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)\nOCTO A 10 A_SpawnItemEx(\"GigaOctoperOATentacle\", 550, -550, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)\nOCTO A 10 A_SpawnItemEx(\"GigaOctoperOATentacle\", -550, -550, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)\nLook:\nOCTO A 0 A_JumpIfInventory(\"AtomicFireAmmo\",1, \"Escape\")\nOCTO A 8 A_SpawnItemEx(\"OctopusEyes\",0,0,512)\nOCTO A 0 A_CheckFlag(\"PICKUP\", \"See\", AAPTR_TARGET)\nloop\nSee:\nOCTO A 0 A_SpawnItemEx(\"OctoperBodyDamage\")\nOCTO AAAAAAAAAAAAAAAAA 4 A_FaceTarget(10)\nOCTO A 0 A_JumpIfCloser(2500, \"ChooseAttack\")\nGoto Look\nChooseAttack:\nOCTO A 0 A_SpawnItemEx(\"OctoperBodyDamage\")\nOCTO A 1 A_Jump(256, \"Bubbler\", \"Bomber\", \"Hoser\")\nGoto Look\nHoser:\nOCTO A 0 A_SpawnItemEx(\"OctopusHoserStartFX\")\nOCTO A 0 A_ChangeFlag(\"NOTARGETSWITCH\", 1)\nOCTO AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_FaceTarget(5)\nOCTO A 35 A_FaceTarget\nTNT1 A 0 A_PlaySoundEx(\"misc/mwsburst\", \"Soundslot7\", 0, 1)\nOCTO AAAAAAAAAAAAAAAA 2 A_SpawnItemEx(\"OctoperHose\", 256, 0, 128, 50, 0, 0, 0)\nHoseLeft:\nOCTO A 0 A_SetAngle(angle - 5)\nOCTO A 0 A_SetUSerVar(\"user_octo\", user_octo+1)\nOCTO A 2 A_SpawnItemEx(\"OctoperHose\", 256, 0, 80, 50, 0, 0, 0)\nOCTO A 0 A_JumpIf(user_octo> 30, \"HoseRight\")\nloop\nHoseRight:\nOCTO A 0 A_SetAngle(angle + 5)\nOCTO A 0 A_SetUSerVar(\"user_octo\", user_octo+1)\nOCTO A 2 A_SpawnItemEx(\"OctoperHose\", 256, 0, 128, 50, 0, 0, 0)\nOCTO A 0 A_JumpIf(user_octo> 90, \"HoseEnd\")\nloop\nHoseEnd:\nOCTO A 0 A_ChangeFlag(\"NOTARGETSWITCH\", 0)\nOCTO AAA 50 A_SetUSerVar(\"user_octo\", 0)\nGoto Look\nBomber:\nOCTO A 0 A_ChangeFlag(\"NOTARGETSWITCH\", 1)\nOCTO AAAAAAAAAAAAAAAAAAAAAAAAA 1 A_FaceTarget(25)\nOCTO A 40 A_SpawnItemEx(\"OctoperBomb\", 0, 0, 380, 28, 0, 16, random(-16,16),0)\nOCTO A 0 A_FaceTarget\nOCTO A 40 A_SpawnItemEx(\"OctoperBomb\", 0, 0, 380, 28, 0, 16, random(-16,16),0)\nOCTO A 0 A_FaceTarget\nOCTO A 40 A_SpawnItemEx(\"OctoperBomb\", 0, 0, 380, 28, 0, 16, random(-16,16),0)\nOCTO A 0 A_FaceTarget\nOCTO A 40 A_SpawnItemEx(\"OctoperBomb\", 0, 0, 380, 28, 0, 16, random(-16,16),0)\nOCTO A 0 A_FaceTarget\nOCTO A 40 A_SpawnItemEx(\"OctoperBomb\", 0, 0, 380, 28, 0, 16, random(-16,16),0)\nOCTO AAA 50 A_FaceTarget\nGoto Look\nBubbler:\nOCTO AAAAAAAAAAAAAAAAAAAAAAAAA 1 A_FaceTarget(25)\nTNT1 A 0 A_PlaySoundEx(\"boss/octopusbubbler\", \"Soundslot7\", 0, 1)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*0)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*1)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*2)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*3)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*4)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*5)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*6)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*7)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*8)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*9)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*10)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*11)\nOCTO A 0 A_SpawnItemEx(\"OctoperBubbleHugger\", 512, 0, 0, 0, 0, 0, 30*12)\nOCTO A 5 A_FaceTarget\nGoto Look\n\nEscape:\nOCTO A 1 A_SpawnItemEx(\"OctoperEscape\",0,0,0,20,0,0,90,SXF_ABSOLUTEANGLE)\nstop\n\nDeath:\nOCTO A 2 A_SpawnItemEx(\"OctoperDeath\")\nstop\n}\n}\n\nactor OctoperBomb\n{\nSpeed 35\n+THRUACTORS\nPROJECTILE\n-NOGRAVITY\ngravity 0.7\n+DONTBLAST\ndamagetype \"Enemy\"\nscale 5.0\nheight 32\nradius 32\ntranslation \"96:135=41:41\"\nobituary \"%o was blown up by Giga OctoperOA's bombs.\"\nstates\n{\nSpawn:\nPOAZ B 0\nPOAZ B 0 A_PlaySoundEx(\"misc/sharktorpedo\", \"Soundslot7\", 0, 1)\nPAOZ B -1\nstop\nDeath:\nPOAZ B 0 A_Explode(10, 400, 0)\nPOAZ B 0 A_PlaySoundEx(\"weapon/wrapexplode\", \"Soundslot7\", 0, 1)\nPOAZ B 0 A_SpawnITemEx(\"MiniOctoperBomb\", 0,0,0,15,0,18,0)\nPOAZ B 0 A_SpawnITemEx(\"MiniOctoperBomb\", 0,0,0,15,0,18,45*1)\nPOAZ B 0 A_SpawnITemEx(\"MiniOctoperBomb\", 0,0,0,15,0,18,45*2)\nPOAZ B 0 A_SpawnITemEx(\"MiniOctoperBomb\", 0,0,0,15,0,18,45*3)\nPOAZ B 0 A_SpawnITemEx(\"MiniOctoperBomb\", 0,0,0,15,0,18,45*4)\nPOAZ B 0 A_SpawnITemEx(\"MiniOctoperBomb\", 0,0,0,15,0,18,45*5)\nPOAZ B 0 A_SpawnITemEx(\"MiniOctoperBomb\", 0,0,0,15,0,18,45*6)\nPOAZ B 0 A_SpawnITemEx(\"MiniOctoperBomb\", 0,0,0,15,0,18,45*7)\nPOAZ BBBBBBBBB 1 A_SpawnItemEx(\"OctoperbombExplode\", random(-256, 256), random(-256, 256), random(0, 128))\nstop\n}\n}\n\nactor MiniOctoperBomb : OctoperBomb\n{\nscale 2.5\ngravity 1.5\nstates\n{\nSpawn:\nPAOZ B -1\nstop\nDeath:\nPOAZ B 0 A_Explode(50, 256, 0)\nPOAZ B 0 A_PlaySoundEx(\"weapon/wrapexplode\", \"Soundslot7\", 0, 0)\nPOAZ BBBBBBBBB 1 A_SpawnItemEx(\"DrillExplode\", random(-128, 128), random(-128, 128), random(0, 64))\nstop\n}\n}\n\nactor OctoperbombExplode : DrillExplode\n{\n+CLIENTSIDEONLY\nscale 5.0\n}\n\nactor OctoperDeath\n{\n+NOINTERACTION\n+MISSILE\n-SOLID\nheight 32\nradius 32\nscale 7.0\nvar int user_speed;\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_PlaySoundEx(\"boss/octopusdeath\", \"SoundSlot6\", 0, 1)\nSpin:\nOCTO A 1 A_SetAngle(angle + 0.1 * user_speed)\nOCTO A 0 A_SetUserVar(\"user_speed\", user_speed+5)\nOCTO A 1 A_SpawnITemEx(\"OctoperBombExplode\", random(-512, 512), 0, random(64, 600), 0, 0, 0, random(0,360))\nOCTO A 0 A_JumpIf(user_speed>35*17, \"Death\")\nOCTO A 0 A_FadeOut(0.005)\nloop\nDeath:\nTNT1 A 0 A_PlaySoundEx(\"misc/gammadeath2\", \"SoundSlot6\", 0, 1)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX1\",300,0,0,2,90)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX1\",300,0,0,2,-90)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX1\",300,0,90,2,45)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX1\",300,0,-90,2,-45)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX1\",300,0,90,2,0)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX1\",300,0,-90,2,0)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX1\",300,0,90,2,-45)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX1\",300,0,-90,2,45)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX2\",300,0,0,2,90)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX2\",300,0,0,2,-90)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX2\",300,0,90,2,45)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX2\",300,0,-90,2,-45)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX2\",300,0,90,2,0)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX2\",300,0,-90,2,0)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX2\",300,0,90,2,-45)\nTNT1 A 0 A_CustomMissile(\"OctoperDeathFX2\",300,0,-90,2,45)\nTNT1 A 0 A_ChangeVelocity(0,0,5)\nTNT1 A 300 ACS_NAmedExecuteAlways(\"hfish_octopusattack\", 0, 4)\nstop\n}\n}\n\nactor OctoperDeathFX1 : GammaDeathFX1 {\ntranslation \"0:0=0:0\"\nspeed 25\n+CLIENTSIDEONLY scale 7.0\n}\nactor OctoperDeathFX2 : GammaDeathFX2 {\ntranslation \"0:0=0:0\"\nspeed 10\n+CLIENTSIDEONLY scale 7.0\n}\n\nactor OctoperBodyDamage\n{\n+NOINTERACTION\nPROJECTILE\nheight 5\nradius 5\ndamagetype \"Enemy\"\nobituary \"%o was devoured by the Giga OctoperOA.\"\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 5 A_Explode(90, 256, 0, 0, 90)\nstop\n}\n}\n\nactor OctoperEscape\n{\nscale 7.0\n-SOLID\n+NOINTERACTION\nstates\n{\nSpawn:\nOCTO A 50\nFade:\nOCTO A 5 A_FadEOut(0.1)\nloop\n}\n}\n\nactor OctoperTentacleEscape : OctoperEscape\n{\nscale 7.0\nstates\n{\nSpawn:\nOCTO C 50\nFade:\nOCTO C 5 A_fadeOut(0.1)\nloop\n}\n}\n\nactor OctoperWaterTower\n{\nPROJECTILE\n+DONTBLAST\n+DONTREFLECT\n+THRUACTORS\n-MISSILE\nradius 2\nheight 2\nscale 2.5\ndamagetype \"Misc\"\nobituary \"%o could not hide from the Giga OctoperOA.\"\ndamage 0\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 AAA 1 A_LookEx(LOF_NOSOUNDCHECK, 2700, 0, 0, 360, \"See\")\nstop\nSee:\nTNT1 A 2 A_GiveToTarget(\"OctoperWaterTowerSpawner\")//A_Warp(AAPTR_TARGET, 0,0,0,0,WARPF_NOCHECKPOSITION)\nstop\n}\n}\n\nactor OctoperWaterTowerSpawner : CustomInventory\n{\nstates\n{\nPickup:\nTNT1 A 0 A_SpawnITemEx(\"OctoperWaterTowerReal\")\nstop\n}\n}\n\nactor OctoperWaterTowerReal : OctoperWaterTower\n{\nstates\n{\nSpawn:\nTNT1 A 1\nTNT1 A 1 ACS_NAmedExecuteAlways(\"hfish_octopusattack\",0,2)\nTNT1 A 0 A_PlaySoundEx(\"misc/mwsburst\",\"Weapon\")\nTNT1 A 2 ThrustThingZ(0, 500, 1, 1)\nAQUT ABCDEFGHIJKLMNOPQRS 2 A_Explode(5, 64, 0, 0, 5)\nAQUT TUVTUVTUVTUVTUVTUVTUVTUVTUVTUVTU 2 A_Explode(5, 64, 0, 0, 5)\nAQUT SRQPONMLKJIHGFEDCBA 2 A_Explode(5, 64, 0, 0, 5)\nstop\n}\n}\n\nactor OctoperBubbleHugger\n{\n+FLOORHUGGER\n+NOCLIP\nspeed 20\nPROJECTILE\n+RIPPER\n+DONTBLAST\ndamage 0\nheight 16\nradius 16\nreactiontime 15\n+SERVERSIDEONLY\nrenderstyle none\nvar int user_speed;\nvar int user_maxturn;\nvar int user_turndivisor;\nvar int user_turndivisor_add;\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_SetUserVar(\"user_speed\", 33)\nTNT1 A 0 A_SetUserVar(\"user_maxturn\", 1500)\nTNT1 A 0 A_SetUserVar(\"user_turndivisor\", 50)\nTNT1 A 0 A_SetUserVar(\"user_turndivisor_add\", 8)\nSpawn3:\nTNT1 A 0 A_Setangle(angle-user_maxturn/user_turndivisor+user_turndivisor_add)\nPOWS D 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)\nTNT1 A 0 A_SetUserVar(\"user_turndivisor\",user_turndivisor+user_turndivisor_add)\nTNT1 A 0 A_Setangle(angle-user_maxturn/user_turndivisor)\nPOWS D 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)\nTNT1 A 0 A_SetUserVar(\"user_turndivisor\",user_turndivisor+user_turndivisor_add)\nTNT1 A 0 A_Setangle(angle-user_maxturn/user_turndivisor)\nPOWS D 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)\nTNT1 A 0 A_SetUserVar(\"user_turndivisor\",user_turndivisor+user_turndivisor_add)\nTNT1 A 0 A_Setangle(angle-user_maxturn/user_turndivisor)\nPOWS D 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)\nTNT1 A 0 A_SetUserVar(\"user_turndivisor\",user_turndivisor+user_turndivisor_add)\nTNT1 A 0 A_Setangle(angle-user_maxturn/user_turndivisor)\nPOWS D 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)\nTNT1 A 0 A_SetUserVar(\"user_turndivisor\",user_turndivisor+user_turndivisor_add)\nTNT1 A 0 A_Setangle(angle-user_maxturn/user_turndivisor)\nPOWS D 1 A_ChangeVelocity(user_speed,0,0,CVF_RELATIVE|CVF_REPLACE)\nTNT1 A 0 A_SetUserVar(\"user_turndivisor\",user_turndivisor+user_turndivisor_add)\nPOWS D 0 A_SpawnItemEx(\"OctoperDangerTrap\")\nPOWS D 0 A_CountDown\nloop\n}\n}\n\nactor OctoperDangerTrap\n{\nPROJECTILE\nradius 32\nheight 32\n+HITTRACER\nDamage (5)\nscale 1.0\n+NOINTERACTION\ndamagetype \"DangerTrap\"\nobituary \"%o was trapped in Giga OctoperOA's bubbles.\"\nstates\n{\nSpawn:\nBMBU A 0\nBMBU A 5 A_PlaySound(\"weapon/BurstBubAppear\",5,1.0)\nBMBU A 0 A_ChangeFlag(\"NOINTERACTION\", 0)\nBMBU A 5 A_SetScale(1.5,1.5)\nBMBU A 0 A_ChangeVelocity(0, 0, 1.0)\nBMBU A 5 A_SetScale(2.0,2.0)\nBMBU A 0 A_ChangeVelocity(0, 0, 1.0)\nBMBU A 5 A_SetScale(2.5,2.5)\nBMBU A 0 A_ChangeVelocity(0, 0, 1.0)\nBMBU A 5 A_SetScale(3.0,3.0)\nBMBU A 0 A_ChangeVelocity(0, 0, 1.5)\nBMBU A 70 A_SetScale(3.5,3.5)\nstop\n}\n}\n\nactor OctopusEyes\n{\n+NOINTERACTION\n-SOLID\n+MISSILE\nheight 5\nradius 5\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 1 A_RearrangePointers(AAPTR_TARGET, AAPTR_NULL, AAPTR_TARGET)\nTNT1 A 1 A_LookEx(LOF_NOSOUNDCHECK, 0, 0, 0, 360, \"See\")\nstop\nSee:\nTNT1 A 1 A_TransferPointer(AAPTR_DEFAULT, AAPTR_TRACER, AAPTR_TARGET, AAPTR_TARGET)\n//TNT1 A 0 A_Log(\"found target\")\nstop\n}\n}\n\nactor OctoperHose\n{\nobituary \"%o was blown away by the Giga OctoperOA.\"\nheight 4\nradius 16\ndamagetype \"Misc\"\n+THRUSPECIES\nspecies \"Enemy\"\nPROJECTILE\nScale 16.0\nspeed 90\ndamage (10)\nstates\n{\nSpawn:\nOCTO GHIGHIGHIGHIGHIGHIGHIGHIGHIGHIGHIGHI 2 A_Explode(10, 256, 0, 0 , 0)\nstop\n}\n}\n\nactor GigaOctoperOATentacle\n{\nscale 7.0\n-SOLID\n-SHOOTABLE\nmass 99999999999\ndamagefactor \"Enemy\", 0.0\ndamagefactor \"Misc\", 0.0\nspecies \"Enemy\"\nRadius 128\nHeight 512\nspeed 5\nHealth 10000\n+INVULNERABLE\npainchance 256\npainsound \"misc/mm4pain\"\nobituary \"%o was destroyed by Giga OctoperOA.\"\n\nvar int user_octo;\nstates\n{\nSpawn:\nTNT1 A 0 A_Jump(256, \"Startup\")\nSpawn1:\nTNT1 A 0\nGoto Respawn\nStartup:\nOCTO B 0 A_SetUserVar(\"user_octo\", 0)\nOCTO B 0 A_TakeInventory(\"WeaponCharge\", 999)\nOCTO B 0 A_ChangeFlag(\"SHOOTABLE\", 0)\nOCTO B 0 A_ChangeFlag(\"INVULNERABLE\", 1)\nSee:\nOCTO B 0 A_JumpIf(ACS_NAmedExecuteWithResult(\"hfish_octopusattack\", 3)==1, \"Escape\")\nOCTO BBBCCCDDDEEE 2 A_Wander\nOCTO B 0 A_JumpIf(ACS_NAmedExecuteWithResult(\"hfish_octopusattack\", 3)==1, \"Escape\")\nOCTO B 0 A_JumpIf(y<2083.0, \"Retreat\")\nOCTO B 0 A_SetUserVar(\"user_octo\", user_octo+random(0, 3))\nOCTO B 0 A_JumpIf(user_octo>12, \"Attack\")\nloop\nRetreat:\nOCTO B 1 A_ChangeVelocity(0, 20, 0)\nGoto See\nAttack:\nOCTO B 1 A_SpawnItemEx(\"OctopusEyes\")\nOCTO B 1 A_CheckFlag(\"PICKUP\", \"ChooseAttack\", AAPTR_TARGET)//A_LookEx(LOF_NOSOUNDCHECK, 0, 0, 0, 360, \"ChooseAttack\") // can't see under 3d floor?\nGoto See\nChooseAttack:\nOCTO B 1 A_JumpIf(ACS_NAmedExecuteWithResult(\"hfish_octopusattack\", 0)==1, \"Laser\")\nOCTO B 1 A_JumpIf(ACS_NAmedExecuteWithResult(\"hfish_octopusattack\", 0)==2, \"Grab\")\nGoto Spawn\nLaser:\nOCTO B 30 A_SpawnItemEx(\"OctoperTentacleLaser\",0,0,730)\nGoto Spawn\nGrab:\nOCTO C 0 A_PlaySoundEx(\"boss/octopustentacle\", \"Voice\", 0, 0)\nOCTO CBDECBDE 2\nOCTO C 40\nOCTO B 0 A_JumpIf(ACS_NAmedExecuteWithResult(\"hfish_octopusattack\", 3)==1, \"Escape\")\nOCTO C 0 A_FaceTarget\nOCTO C 0 A_SpawnItemEx(\"OctoperTentacleGrab\",0, 0, 420, 30, 0, -3, random(-2,2))\nOCTO C 2 A_SetUserVar(\"user_octo\", 0)\nGrabWait:\nTNT1 A 0 A_JumpIfInventory(\"WeaponCharge\", 2, \"GrabConfirm\")\nTNT1 A 1 A_JumpIfInventory(\"WeaponCharge\", 1, \"Respawn\")\nOCTO B 0 A_SetUserVar(\"user_octo\", user_octo+1)\nTNT1 A 0 A_JumpIf(user_octo>3*35, \"Respawn\")\nloop\nGrabConfirm:\nTNT1 A 1\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_octopusgrab\",0)\nTNT1 A 0 A_SetUserVar(\"user_octo\", 0)\nGrabWait2:\nTNT1 A 1 A_JumpIfInventory(\"WeaponCharge\", 3, \"GrabStart\")\nTNT1 A 0 A_SetUserVar(\"user_octo\", user_octo+1)\nTNT1 A 0 A_JumpIf(user_octo>3*35, \"Respawn\")\nloop\nGrabStart:\nOCTO B 0 A_ChangeFlag(\"INVULNERABLE\", 0)\nOCTO B 0 A_ChangeFlag(\"SHOOTABLE\", 1)\nGrabbing:\nOCTO B 0 A_JumpIf(ACS_NAmedExecuteWithResult(\"hfish_octopusattack\", 3)==1, \"Escape\")\nOCTO BBCCDDEE 2 A_Wander\nOCTO B 0 A_JumpIfInventory(\"WeaponCharge\", 3, \"GrabStart\")\nGoto Spawn\nRespawn:\nTNT1 A 0 A_SpawnItemEx(\"OctoperTentacleReturn\",0 ,0, 0, 0, 0, 12)\nTNT1 AAAAAAA 5 A_SpawnItemEx(\"OctoperSplash\", 64, 0, 0, 0,0 ,0,random(0,360))\nGoto Spawn\nEscape:\nOCTO C 1 A_SpawnItemEx(\"OctoperTentacleEscape\",0, 0, 0, 0, 0, -5, 0)\nstop\n}\n}\n\nactor OctoperHeal\n{\n+NOINTERACTION\n-SOLID\n+NOGRAVITY\nstates\n{\nSpawn:\nTNT1 AAAAAAAAAAA 1 A_SpawnITemEx(\"OctoperHealFX\", 400, 0, 128 + random(0,200), 0, 0, random(3,8), random(0,360))\nstop\n}\n}\n\nactor OctoperHealFX\n{\n+NOINTERACTION\n-SOLID\n+NOGRAVITY\nscale 20.0\ntranslation \"192:198=104:106\"\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_Jump(64,\"Spawn3\")\nTNT1 A 0 A_Jump(128,\"Spawn2\")\ngoto Spawn1\nSpawn1:\nX_0C AAABBB 1 A_FadeOut(0.02)\nloop\nSpawn2:\nX_0C CCCDDD 1 A_FadeOut(0.02)\nloop\nSpawn3:\nX_0C EEEFFF 1 A_FadeOut(0.02)\nloop\n}\n}\n\nactor GigaOctoperIntro\n{\n+NOINTERACTION\n-SOLID\n+NOGRAVITY\nvar int user_octo;\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_SpawnItemEx(\"OctoperSplash\", 256, 0, user_octo * 32, 0, 0 , 0, 0 + (user_octo * 20))\nTNT1 A 0 A_SpawnItemEx(\"OctoperSplash\", 256, 0, user_octo * 32, 0, 0 , 0, 90 + (user_octo * 20))\nTNT1 A 0 A_SpawnItemEx(\"OctoperSplash\", 256, 0, user_octo * 32, 0, 0 , 0, 90*2 + (user_octo * 20))\nTNT1 A 0 A_SpawnItemEx(\"OctoperSplash\", 256, 0, user_octo * 32, 0, 0 , 0, 90*3 + (user_octo * 20))\nTNT1 A 1 A_SetUserVar(\"user_octo\", user_octo+1)\nTNT1 A 0 A_JumpIf(user_octo>=20, \"Death\")\nloop\nDeath:\nTNT1 A 0\nstop\n}\n}\n\nactor OctoperSplash\n{\nScale 12.0\n+NOINTERACTION\n-SOLID\n+NOGRAVITY\n+CLIENTSIDEONLY\nstates\n{\nSpawn:\nDOLP BCDE 10\nstop\n}\n}\n\nactor OctopusHoserStartFX\n{\n+NOINTERACTION\n-SOLID\n+NOGRAVITY\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 A 0 A_PlaySoundEx(\"boss/octopussuck\", \"Soundslot7\", 0, 1)\nTNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx(\"OCtopusHoserBubble\", random(256,512), 0, random(0, 32), -1, 0, 0.5, random(0,360))\nstop\n}\n}\n\nactor OCtopusHoserBubble\n{\n+CLIENTSIDEONLY\n+NOINTERACTION\n-SOLID\n+NOGRAVITY\nrenderstyle translucent\nalpha 0.2\nreactiontime 35\nstates\n{\nSpawn:\nWAVB G 0 A_COuntDown\nWAVB G 0 A_ScaleVelocity(1.1)\nWAVB G 1 A_FadeIn(0.1)\nloop\n}\n}\n\nactor OctoperTentacleReturn\n{\nscale 7.0\n+NOINTERACTION\nheight 1\nradius 1\n+NOGRAVITY\n-SOLID\nstates\n{\nSpawn:\nOCTO F 36\nstop\n}\n}\n\nactor OctoperTentacleGrab\n{\nHeight 2\nradius 2\n+THRUACTORS\n+MISSILE\n+NOGRAVITY\n+DONTBLAST\n+SKYEXPLODE\n-SOLID\nscale 7.0\nstates\n{\nSpawn:\nTNT1 A 0\nTNT1 C 2 A_RearrangePointers(AAPTR_TARGET, AAPTR_NULL, AAPTR_TARGET)\nOCTO FFFFFFFFFFFFFF 5 A_JumpIf(ACS_NamedExecuteWithResult(\"hfish_octopusattack\", 1)==1, \"Grab\")//A_LookEx(LOF_NOSOUNDCHECK, 0, 256, 0, 360, \"Grab\")\nGoto Death\nGrab:\nOCTO F 0 A_JumpIfInventory(\"OctopusGrabbed\", 1, \"AlreadyGrabbed\", AAPTR_TARGET)\nOCTO F 0 A_ChangeFlag(\"NOINTERACTION\",1)\nOCTO F 1 A_TransferPointer(AAPTR_DEFAULT, AAPTR_TRACER, AAPTR_TARGET, AAPTR_TRACER)\nOCTO F 1 A_GiveInventory(\"WeaponCharge\", 2, AAPTR_TRACER)\nOCTO F 1 A_RearrangePointers(AAPTR_TRACER, AAPTR_NULL, AAPTR_TARGET)\nReturn:\nOCTO F 1 A_ChangeVelocity(-30,0,3,CVF_RELATIVE|CVF_REPLACE)\nReturning:\nOCTO FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 1 A_JumpIfCloser(128, \"Returned\")\nstop\nReturned:\nOCTO F 1 A_GiveInventory(\"WeaponCharge\", 1, AAPTR_TARGET)\nstop\nDeath:\nOCTO F 1 A_ChangeFlag(\"NOINTERACTION\", 1)\nOCTO F 60 A_ChangeVelocity(0,0,-7,CVF_REPLACE)\nOCTO F 1 A_GiveInventory(\"WeaponCharge\", 1, AAPTR_TARGET)\nstop\nAlreadyGrabbed:\nOCTO F 0 //A_Log(\"Already got someone\")\nGoto Death\n}\n}\n\nactor OctopusGrabbed : OnceC {}\n\nactor OctoperTentacleLaser\n{\nPROJECTILE\n+RIPPER\n+SEEKERMISSILE\n+DONTBLAST\nobituary \"%o was zapped by Giga OctoperOA's lasers.\"\nDamage (4)\nHeight 16\nRadius 16\nspeed 0\nscale 3.5\nstates\n{\nSpawn:\nSHAB K 0\nSHAB K 0 A_PlaySoundEx(\"misc/gammalaser\", \"Voice\")\nSHAB KLKLKLKLKLKLKKLKLKL 2\nSeek:\nTNT1 A 0 A_SpawnItemEx(\"OctoperTentacleLaserSeeker\", 0, 0, 20, 0, 0, 0, 0, 0)//A_CustomMissile(\"OctoperTentacleLaserSeeker\", 0, 0, 0)\nSHAB KLKLKKLKLK 2 A_FadeOut(0.1)\nstop\n}\n}\n\nactor OctoperTentacleLaserSeeker\n{\nPROJECTILE\n+RIPPER\n+SEEKERMISSILE\n+DONTBLAST\nobituary \"%o was zapped by Giga OctoperOA's lasers.\"\nDamage (10)\nHeight 16\nRadius 16\nspeed 40\nscale 1.5\nstates\n{\nSpawn:\nSHAB K 0\nSHAB K 0 A_PlaySoundEx(\"weapon/lshot\", \"Voice\")\nSHAB KKKKKKKKK 0 A_SeekerMissile(50,90,3,256,20)\nSHAB K 1 A_JumpIfInTargeTInventory(\"CutterFlag\", 4, \"NoSeek\")\nSHAB KLKLKLKLKLK 2 A_SpawnItemEx(\"OctoperTentacleLaserTrail\")\nSHAB KLKL 2 A_ChangeVelocity(0,0,0,CVF_REPLACE)\nSHAB K 0 A_GiveToTarget(\"CutterFlag\",1)\nSeek:\nTNT1 A 5 A_SpawnItemEx(\"OctoperTentacleLaserSeeker\", 0, 0, 0, 40, 0, 0, 0, 0)\nstop\nNoSeek:\nSHAB K 0 A_TakeFromTargeT(\"CutterFlag\", 999)\nEnd:\nSHAB KL 2 A_SpawnItemEx(\"OctoperTentacleLaserTrail\")\nloop\nDeath:\nSHAB K 0 A_TakeFromTargeT(\"CutterFlag\", 999)\nstop\n}\n}\n\nactor OctoperTentacleLaserTrail\n{\nscale 1.5\n+NOINTERACTION\nheight 1\nradius 1\n-SOLID\n+NOGRAVITY\ntranslation \"0:255=4:4\"\n+CLIENTSIDEONLY\nrenderstyle add\nstates\n{\nSpawn:\nSHAB KL 2 A_FadeOut(0.1)\nloop\n}\n}\n\nactor OctoperHeadDamage\n{\nPROJECTILE\n+RIPPER\nheight 64\nradius 253\n+FOILINVUL\ndamagetype \"Enemy\"\ndamage 999\nrenderstyle none\nscale 7.0\nstates\n{\nSpawn:\nTNT1 A 0\nBASS AA 1 A_Recoil(1)//thrustthingZ(0, 1, 0, 1)\nstop\n}\n}\n\nactor OctopusCurse : PowerDamage\n{\ndamagefactor \"normal\", 0.1\npowerup.duration -11\n}"
      },
      {
        "source": "pk3",
        "name": "actors/misc.txt",
        "contents": "actor Fish_StretchyEel : BaseFish\n{\ninventory.amount 10\nTranslation \"192:192=71:71\", \"198:198=73:73\"\ninventory.icon \"FISHIC63\"\ninventory.pickupmessage \"Picked up a Stretchy Eel!\"\nstates\n{\nSpawn:\nFISI W 1200\nstop\nUse:\nTNT1 A 0 A_JumpIfInventory(\"WireHookShotDelay\",1,\"TooSoon\")\nTNT1 A 0 A_GiveInventory(\"WireHookShotDelay\",1)\nTNT1 A 0 A_PlaySoundEx(\"weapon/WireAdp\",\"Item\")\nTNT1 A 0 A_SpawnItemEx(\"WireAdaptorHook\",-2,0,32,cos(-pitch)*1,0,sin(-pitch)*1,0,0)\nstop\nTooSoon:\nTNT1 A 0\nfail\n}\n}\n\nactor Fish_SuperStretchEel : BaseFish\n{\ninventory.amount 1\ninventory.maxamount 1\nTranslation \"192:192=138:138\", \"198:198=106:106\"\ninventory.icon \"FISHIC64\"\ninventory.pickupmessage \"Picked up a Super Stretchy Eel!\"\nstates\n{\nSpawn:\nFISI W 1200\nstop\nUse:\nTNT1 A 0 A_JumpIfInventory(\"WireHookShotDelay\",1,\"TooSoon\")\nTNT1 A 0 A_GiveInventory(\"WireHookShotDelay\",1)\nTNT1 A 0 A_PlaySoundEx(\"weapon/WireAdp\",\"Item\")\nTNT1 A 0 A_SpawnItemEx(\"WireAdaptorHookLong\",-2,0,32,cos(-pitch)*1,0,sin(-pitch)*1,0,0)\nfail\nTooSoon:\nTNT1 A 0\nfail\n}\n}\n\nactor Fish_Fork : BaseFish\n{\ninventory.amount 1\ninventory.maxamount 1\ninventory.icon \"FISHIU06\"\ninventory.pickupmessage \"Picked up a fork!\"\nstates\n{\nSpawn:\nFISI Y 1200\nstop\nUse:\nTNT1 A 0 A_PlaySoundEx(\"weapon/slashclaw\", \"Weapon\")\nTNT1 A 0 A_SpawnItemEx(\"ForkProjectile\",cos(pitch)*32 + 10,0,28-(sin(pitch)*32),0,0,0,0,0,0)\nfail\n}\n}\n\nactor ForkProjectile\n{\nDamage (3)\nheight 8\nradius 8\nspeed 0\nscale 1.0\nPROJECTILE\nobituary \"%o was forked by %k.\"\nstates\n{\nSpawn:\nMMFX BCDE 2\nstop\nDeath:\nTNT1 A 0\nstop\n\n}\n}\n\nactor Fish_Plate : BaseFish\n{\ninventory.amount 1\ninventory.maxamount 99\ninventory.icon \"FISHIU07\"\ninventory.pickupmessage \"Picked up a clean plate!\"\nstates\n{\nSpawn:\nFISI Z 1200\nstop\nUse:\nTNT1 A 0 A_FireCustomMissile(\"PlateProjectile\", 0, 0, 0, 0)\nstop\n}\n}\n\nactor PlateProjectile\n{\ndamage (2)\nheight 10\nradius 10\nspeed 35\ngravity 0.05\nscale 2.5\nPROJECTILE\n-NOGRAVITY\nobituary \"%o made %k do the dishes.\"\ndeathsound \"weapon/PanHit1\"\nstates\n{\nSpawn:\nFSFX J -1\nstop\nDeath:\nFSFX KL 5 A_ChangeVelocity(0,0,0,CVF_REPLACE)\nstop\n}\n}\n\nactor Fish_BabyOctopus : BaseFish\n{\ninventory.amount 1\ninventory.maxamount 1\ninventory.icon \"FISHIU08\"\ninventory.usesound \"misc/octobaby\"\ninventory.pickupmessage \"Picked up a scared baby octopus!\"\nstates\n{\nSpawn:\nFIS2 A 1200\nstop\nUse:\nTNT1 A 0 ACS_NamedExecuteAlways(\"hfish_octopussummon\", 0)\nstop\n}\n}\n\nactor Fish_BaronVonBlubba : BaseFish\n{\ninventory.amount 1\ninventory.maxamount 1\ninventory.icon \"FISHIU09\"\ninventory.pickupmessage \"Picked up baron von Blubba himself!\"\nstates\n{\nSpawn:\nFIS2 B 1200\nstop\nUse:\nTNT1 A 0 A_SpawnItemEx(\"BaronVonBlubba\")\nstop\n}\n}\n\nactor BaronVonBlubba\n{\n-SHOOTABLE\n-COUNTKILL\nheight 5\nradius 5\n+NOCLIP\n+NOGRAVITY\n+FLOAT\nobituary \"%o could not get away from \\cjBaron Von Blubba\\c-!\"\nfloatspeed 50\nspeed 38\nscale 4.5\nmeleerange 120\nvar int user_chase;\nvar int user_streak;\nvar int user_kills;\n+LOOKALLAROUND\nstates\n{\nSpawn:\nTNT1 A 0 A_Jump(256, \"LookStart\")\nTNT1 A 80 A_PlaySoundEx(\"misc/baronvonblubba\", 5, 0, 1)\nVBLB A 45\nLookStart:\nVBLB A 0 A_SetUserVar(\"user_streak\", 0)\nLooking:\nVBLB AB 8 A_LookEx(0, 0, 0, 0, 360, \"See\")\nloop\nSee:\nVBLB B 0 A_JumpIf(user_kills>10, \"Death\")\nVBLB ABABABABAB 8\nVBLB A 0 A_SetUserVar(\"user_streak\", user_streak+1)\nVBLB A 0 A_SetUserVar(\"user_chase\", user_streak)\nChasedown:\nVBLB AAAAAAAABBBBBBBB 1 A_Chase(\"Melee\")\nVBLB A 0 A_SetUserVar(\"user_chase\", user_chase-1)\nVBLB B 0 A_JumpIf(user_chase>0, \"ChaseDown\")\nGoto See\nMelee:\nVBLB A 0 A_SetUserVar(\"user_streak\", 0)\nVBLB A 0 A_SetUserVar(\"user_kills\", user_kills+1)\nVBLB A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_TARGET)\nVBLB A 0 A_KillMaster(\"Enemy\")\nVBLB A 0 A_RearrangePointers(AAPTR_TARGET, AAPTR_NULL)\nGoto LookStart\nDeath:\nVBLB AAAAAAAAAAAAAAA 1 A_FadeOut(0.1)\nstop\n}\n}\n\nactor Fish_BloatedPuffer : BaseFish\n{\ninventory.amount 1\nTranslation \"192:192=228:228\", \"198:198=219:219\"\ninventory.icon \"FISHIC65\"\ninventory.pickupmessage \"Picked up a Bloated Puffer!\"\ninventory.usesound \"weapon/ShortRain\"\nstates\n{\nSpawn:\nFIS2 C 1200\nstop\nUse:\nTNT1 A 0 A_GiveInventory(\"PufferScaleUp\", 1)\nstop\n}\n}\n\nactor Fish_WindyPuffer : BaseFish\n{\ninventory.amount 1\nTranslation \"192:192=34:34\", \"198:198=58:58\"\ninventory.icon \"FISHIC66\"\ninventory.pickupmessage \"Picked up a Windy Puffer!\"\ninventory.usesound \"weapon/ShortRain\"\nstates\n{\nSpawn:\nFIS2 C 1200\nstop\nUse:\nTNT1 A 0 A_GiveInventory(\"PufferScaleDown\", 1)\nstop\n}\n}\n\nactor PufferScaleUp : CustomInventory\n{\nstates\n{\nPickup:\nTNT1 A 0 A_SetScale(scalex + 0.11, scaley + 0.11)\nstop\n}\n}\n\nactor PufferScaleDown : CustomInventory\n{\nstates\n{\nPickup:\nTNT1 A 0 A_SetScale(scalex - 0.11, scaley - 0.11)\nstop\n}\n}\n\nactor Fish_MovieStarFish : BaseFish\n{\ninventory.amount 1\ninventory.maxamount 1\ninventory.icon \"FISHIU10\"\ninventory.pickupmessage \"Picked up a movie starfish!\"\ninventory.usesound \"item/refill\"\nstates\n{\nSpawn:\nFIS2 E 1200\nstop\nUse:\nTNT1 A 0 A_SpawnItemEx(\"MovieStarFish\", 0, 0, 48, 10)\nstop\n}\n}\n\nactor MovieStarFish\n{\nPROJECTILE\n+DONTBLAST\n+THRUACTORS\n+RIPPER\n+SKYEXPLODE\n+DONTREFLECT\n+HEXENBOUNCE\ndamage 0\nheight 5\nradius 5\nstates\n{\nSpawn:\nFIS2 E 18\nFIS2 E 3 A_ChangeVelocity(0,0,0,CVF_REPLACE)\nFIS2 E 1 A_FaceTarget\nFIS2 E 1 ACS_NamedExecuteAlways(\"hfish_moviestar\", 0)\nWatching:\nFIS2 E 1 A_JumpIfInventory(\"BossHealth1\", 1, \"Boo\")\nFIS2 E 1 A_JumpIfInventory(\"CutterFlag\", 1, \"Cheer\")\nloop\nCheer:\nFIS2 E 0 A_FaceTarget\nFIS2 E 0 A_TakeInventory(\"CutterFlag\",1)\nFIS2 EEE 10 A_SpawnITemEx(\"Fish_MovieStarRose\", 0, 0, -8, random(5,20), random(-10,10), random(5,8), 0)\nGoto Watching\nBoo:\nFIS2 E 0 A_FaceTarget\nFIS2 E 0 A_TakeInventory(\"BossHealth1\",1)\nFIS2 EEE 10 A_SpawnItemEx(\"FishJunk\", 0, 0, -8, random(5,20), random(-10,10), random(5,8), 0)\nGoto Watching\n}\n}\n\nactor MovieStarProtection : PowerInvulnerable\n{\npowerup.duration -31\n}\n\nactor Fish_MovieStarRose : BaseFish\n{\ninventory.maxamount 99\ninventory.icon \"FISHIU11\"\ninventory.pickupmessage \"Picked up a rose!\"\nstates\n{\nSpawn:\nFIS2 F 1200\nstop\n}\n}\n\nactor FishingAuto : Auto replaces Auto\n{\n+BUMPSPECIAL\nradius 64\nStates\n{\nSpawn:\nAUTO A 0\nAUTO A 1 A_SetSpecial(226, 6000)\nAutoNormal:\nAUTO AIAI 6 //A_LookEx(LOF_NOSOUNDCHECK, 0, 150, 0, 360, \"See\")\nloop\n\nTalk:\nAUTO AJAJAJAJAJAJAJAJAJAJA 4\nGoto Spawn\n\n}\n}\n\nactor TalkingCooldown : Powerup\n{\npowerup.duration -6\n}\n\nactor FishingUpgradeGiver : CustomInventory\n{\ninventory.amount 1\ninventory.maxamount 99\ninventory.pickupmessage \"\\cfFishing Skill upgrade!\"\ninventory.usesound \"item/ScorePickup\"\nscale 2.5\n+INVBAR\ninventory.icon \"FISHIC68\"\nInventory.PickupSound \"item/1up\"\ntag \"Fishing Upgrade (catch less common fish)!\"\nstates\n{\nSpawn:\nRMCD A 1200\nstop\nUse:\nRMCD A 0 A_GiveInventory(\"FishingUpgrade\",1)\nRMCD A 0 ACS_NamedExecuteAlways(\"hfish_upgradefishskill\",0)\nstop\n}\n}\n\nactor FishingUpgrade : Inventory\n{\ninventory.amount 1\ninventory.maxamount 10\n}\n\nactor FishingDebugger : OnceC {}\n\nactor Fish_Cattefish : BaseFish\n{\ninventory.amount 1\ninventory.maxamount 1\ninventory.icon \"FISHIU12\"\ninventory.pickupmessage \"Picked up a Cattefish!\"\nstates\n{\nSpawn:\nFIS2 G 1200\nstop\nUse:\nTNT1 A 0 A_PlaySoundEx(\"misc/catfishmeow\", \"SoundSlot6\", 0, 1)\nstop\n}\n}"
      }
    ]
  },
  "maps": []
}

gib.gg runs on open-source software and freely licensed replacement game assets from the Freedoom project. gib.gg is not affiliated with Bethesda Softworks, id Software, or ZeniMax Media. All trademarks belong to their respective owners. Some WADs and associated metadata on this site are sourced from WAD Archive. User-submitted content remains the responsibility of its respective authors. If you believe content on this site violates your rights, please send DMCA requests to dmca@gib.gg.