In theory, this code SHOULD work:
Code: Select all
ACTOR MaxWater : Inventory {} // Governs maximum water capacity.
ACTOR WaterFlask : CustomInventory replaces HealthBonus
{
Inventory.Icon "FLSKICON"
Inventory.InterHubAmount 0x7fffffff
Inventory.MaxAmount 0x7fffffff
Inventory.PickupMessage "Found some water."
Tag "Water Bottle"
Scale 0.65
+INVENTORY.INVBAR
+INVENTORY.UNDROPPABLE
+INVENTORY.KEEPDEPLETED
+INVENTORY.UNTOSSABLE
States
{
Spawn:
FLSK A -1
Stop
Pickup:
TNT1 A 0 {
if (CountInv("WaterFlask") == CountInv("MaxWater")) {
return state("DontPickup");
}
else {
A_GiveInventory("WaterFlask", 1);
}
}
Stop
DontPickup:
TNT1 A 0 A_Print("Water bottle is full.")
Fail
Use:
TNT1 A 0 A_JumpIf(health >= 100, "DontDrinkNoNoise")
UseLoop:
TNT1 A 0 A_JumpIf(health >= 100, "DontDrink")
TNT1 A 0 A_TakeInventory("WaterFlask", 1)
TNT1 A 0 A_GiveInventory("Health", 1)
TNT1 A 0 A_JumpIfInventory("WaterFlask", 1, "UseLoop")
FlaskEmpty:
TNT1 A 0 A_PlaySound("water/drink", CHAN_ITEM)
Fail
DontDrink:
TNT1 A 0 A_PlaySound("water/drink", CHAN_ITEM)
Fail
DontDrinkNoNoise:
TNT1 A 0 A_Print("Can't drink water, health already full!")
Fail
}
}
ACTOR EmptyWaterFlask : CustomInventory
{
Inventory.PickupMessage "Found an empty bottle - Water capacity increased."
Scale 0.65
States
{
Spawn:
FLSK B -1
Stop
Pickup:
TNT1 A 0 A_GiveInventory("MaxWater", 1)
Stop
}
}
