Raw model (for completeness)
{
"meta": {
"id": "04a0b522-2ed3-4dbe-acbd-fe9d41ef9d86",
"sha1": "0c4f22a6cda05f3c147db367c6fef484ecb35e93",
"sha256": "c4993b995213c5471690edfb7e299e4e85be7a88a7b6342d4179c140ebeaefe8",
"filenames": [
"monsterscouter-plus.pk3"
],
"additional": {
"engines": [],
"iwad": [],
"filename": null,
"added": "2021-01-10 03:15:27",
"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": "2021-01-10 03:15:27",
"file": {
"type": "PK3",
"size": 2164,
"url": "https://wadarchive2.nyc3.digitaloceanspaces.com/0c4f22a6cda05f3c147db367c6fef484ecb35e93/0c4f22a6cda05f3c147db367c6fef484ecb35e93.pk3.gz",
"corrupt": false
},
"content": {
"counts": {
"endoom": 0,
"graphics": 0,
"lumps": 3,
"maps": 0,
"palettes": 0
}
},
"text_files": [
{
"source": "pk3",
"name": "Source/ScouterThing.txt",
"contents": "#library \"EnemyScouterThing\"\n#include \"zcommon.acs\"\n\nstr enemyname;\nint enemyhealthmax;\nint enemyhealth;\nint monstercount;\n\nscript \"EnemyScouterThing\" ENTER\n{\n\tmonstercount = GetLevelInfo (LEVELINFO_KILLED_MONSTERS);\n\n\twhile(TRUE)\n\t{\n\n\t\t//NOTE:\tPickActor requires careful handling. See the zdoom wiki about that!\n\t\t//\t\tActor's old TID needs to be saved, assigned a new TID, then restored back to old TID to keep things operational.\n\t\tint old_tid = PickActor(0, GetActorAngle(0), GetActorPitch(0), 2048.0, 0, MF_SOLID | MF_SHOOTABLE |!MF_CORPSE, ML_BLOCKEVERYTHING | ML_BLOCKHITSCAN, PICKAF_RETURNTID);\n\n\t\tint new_tid = UniqueTID();\n\n\t\tif(PickActor(0, GetActorAngle(0), GetActorPitch(0), 2048.0, new_tid, MF_SOLID | MF_SHOOTABLE |!MF_CORPSE, ML_BLOCKEVERYTHING | ML_BLOCKHITSCAN, PICKAF_FORCETID))\n\t\t{\n\n\t\t\t//GET ACTOR INFO\n\t\t\tenemyname = GetActorProperty(new_tid, APROP_NameTag);\t\t\t//name\n\t\t\tenemyhealthmax = GetActorProperty(new_tid, APROP_SpawnHealth);\t//max hp\n\t\t\tenemyhealth = GetActorProperty(new_tid, APROP_HEALTH); \t\t\t//current hp\n\n\t\t\t//ACTOR HEALTH DISPLAY\n\t\t\t{\n\t\t\tif(false)\n\t\t\t{\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tif (enemyhealth >= 1)\n\t\t\t{\n\t\t\t//ACTOR NAME DISPLAY\n\t\t\t{\n\t\t\tif(false)\n\t\t\t{\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tHudMessage(\ts:\"\",\n\t\t\t\t\ts:enemyname;\n\t\t\t\t\tHUDMSG_FADEOUT, 112223, CR_DARKRED, 0.5, 0.02, 0.6, 0.2);\n\n\t\t\t}\n\t\t\t}\n\t\t\t\tint pc = enemyhealth * 100 / enemyhealthmax;\n\t\t\t\tif(pc>100)\n\t\t\t\t{\n\t\t\t\t\tHudMessage(\ts:\"\\n\",\n\t\t\t\t\td:enemyhealth,\n\t\t\t\t\ts:\"/\",\n\t\t\t\t\td:enemyhealthmax;\n\t\t\t\t\tHUDMSG_FADEOUT, 112224, CR_PURPLE, 0.5, 0.02, 0.6, 0.2);\n\t\t\t\t}\n\t\t\t\telse if(pc>=75)\n\t\t\t\t{\n\t\t\t\t\tHudMessage(\ts:\"\\n\",\n\t\t\t\t\td:enemyhealth,\n\t\t\t\t\ts:\"/\",\n\t\t\t\t\td:enemyhealthmax;\n\t\t\t\t\tHUDMSG_FADEOUT, 112224, CR_BLUE, 0.5, 0.02, 0.6, 0.2);\n\t\t\t\t}\n\t\t\t\telse if(pc>=50)\n\t\t\t\t{\n\t\t\t\t\tHudMessage(\ts:\"\\n\",\n\t\t\t\t\td:enemyhealth,\n\t\t\t\t\ts:\"/\",\n\t\t\t\t\td:enemyhealthmax;\n\t\t\t\t\tHUDMSG_FADEOUT, 112224, CR_GREEN, 0.5, 0.02, 0.6, 0.2);\n\t\t\t\t}\n\t\t\t\telse if(pc>=25)\n\t\t\t\t{\n\t\t\t\t\tHudMessage(\ts:\"\\n\",\n\t\t\t\t\td:enemyhealth,\n\t\t\t\t\ts:\"/\",\n\t\t\t\t\td:enemyhealthmax;\n\t\t\t\t\tHUDMSG_FADEOUT, 112224, CR_YELLOW, 0.5, 0.02, 0.6, 0.2);\n\t\t\t\t}\n\t\t\t\telse if(pc>=0)\n\t\t\t\t{\n\t\t\t\t\tHudMessage(\ts:\"\\n\",\n\t\t\t\t\td:enemyhealth,\n\t\t\t\t\ts:\"/\",\n\t\t\t\t\td:enemyhealthmax;\n\t\t\t\t\tHUDMSG_FADEOUT, 112224, CR_RED, 0.5, 0.02, 0.6, 0.2);\n\t\t\t\t}\n\n\t\t\t\t//ACTOR INVULNERABLE INDICATOR\n\t\t\t\tif(GetActorProperty(new_tid, APROP_Invulnerable) == TRUE)\n\t\t\t\t{\n\t\t\t\t\tHudMessage(\ts:\"\\n\\n-Invulnerable-\";\n\t\t\t\t\tHUDMSG_FADEOUT, 112225, CR_GOLD, 0.5, 0.02, 0.6, 0.2);\n\t\t\t\t}\n\n\t\t\t\t//ACTOR FRIENDLY NAME DISPLAY\n\t\t\t\tif(GetActorProperty(new_tid, APROP_Friendly) == TRUE)\n\t\t\t\t{\n\t\t\t\t\tHudMessage(\ts:\"\",\n\t\t\t\t\ts:enemyname;\n\t\t\t\t\tHUDMSG_FADEOUT, 112223, CR_DARKGREEN, 0.5, 0.02, 0.6, 0.2);\n\t\t\t\t}\n\t\t\t}\n\t\t\t}\n\t\t\t}\n\n\t\t\t//ACTOR DEAD MESSAGE - Disabled due to popular demand. They found it annoying.\n\t\t\tif(enemyhealth <= 0)\n\t\t\t{\n\t\t\t//ACTOR NAME DISPLAY (Again)\n\t\t\tHudMessage(\ts:\"\",\n\t\t\t\ts:enemyname;\n\t\t\t\tHUDMSG_FADEOUT, 112223, CR_DARKRED, 0.5, 0.02, 0.6, 0.2);\n\n\t\t\tHudMessage(\ts:\"\\n\",\n\t\t\t\td:enemyhealth,\n\t\t\t\ts:\"/\",\n\t\t\t\td:enemyhealthmax,\n\t\t\t\ts:\" (Dead)\";\n\t\t\t\tHUDMSG_FADEOUT, 112224, CR_DARKGRAY, 0.5, 0.02, 0.6, 0.2);\n\t\t\t}\n\n\t\t\tThing_ChangeTID(new_tid, old_tid);\n\t\t}\n\n\t\t/*\n\t\t//Extra feature: Kill confirmer. Turned off, since I think it might be too obnoxious.\n\t\tif(monstercount != GetLevelInfo (LEVELINFO_KILLED_MONSTERS))\n\t\t{\n\t\t\tmonstercount = GetLevelInfo (LEVELINFO_KILLED_MONSTERS);\n\t\t\tHudMessage(\ts:\"\\n\\n\\n-Kill-\";\n\t\t\t\t\t\tHUDMSG_FADEINOUT, 0, CR_OLIVE, 0.5, 0.02, 0.5, 0.1, 0.5);\n\n\t\t\t//for lulz\n\n\t\t\t//HudMessage(\ts:\"\\n\\nOscar Mike Tango Down\";\n\t\t\t//\t\t\tHUDMSG_FADEINOUT, 0, CR_OLIVE, 0.5, 0.02, 0.5, 0.1, 0.5);\n\n\t\t}\n\t\t*/\n\n\t\tDelay(1);\n\t}\n}"
}
]
},
"maps": []
}