Skip to content

Commit 5a162bd

Browse files
committed
Add the flasks' classes.
1 parent 098f501 commit 5a162bd

10 files changed

+169
-0
lines changed

credits/flasks/CREDITS

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Submitted: BlueShadow
2+
Sprites: Raven Software
3+
Sprite Edit: Tormentor667

sprites/flasks/HPP1A0.png

298 Bytes
Loading

sprites/flasks/MRP2A0.png

425 Bytes
Loading

sprites/flasks/PRP3A0.png

351 Bytes
Loading

zscript.zsc

+6
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,12 @@ version "4.10.0"
103103
#include "zscript/rbackpacks/randomized_backpack_pickup.zs"
104104
#include "zscript/rbackpacks/randomized_backpack_stats.zs"
105105

106+
#include "zscript/rflasks/rw_base_flask.zs"
107+
#include "zscript/rflasks/rw_big_flask.zs"
108+
#include "zscript/rflasks/rw_medium_flask.zs"
109+
#include "zscript/rflasks/rw_small_flask.zs"
110+
#include "zscript/rflasks/rw_flask_stats.zs"
111+
106112
#include "zscript/rmonsters/monster_affixing_handler.zs"
107113
#include "zscript/rmonsters/rw_monster_affixator.zs"
108114
#include "zscript/rmonsters/rw_monster_affixator_affixable.zs"

zscript/rflasks/rw_base_flask.zs

+97
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
class RwFlask : Inventory {
2+
mixin Affixable;
3+
RwFlaskStats stats;
4+
string rwbaseName;
5+
6+
// Current vars
7+
int currentCharges, cooldownRemaining;
8+
9+
Default {
10+
Height 26;
11+
FloatBobStrength 0.75;
12+
+FLOATBOB
13+
}
14+
States {
15+
Spawn:
16+
HPP1 A -1;
17+
Stop;
18+
}
19+
20+
override void BeginPlay() {
21+
RW_Reset();
22+
}
23+
24+
// METHODS FOR AFFIXABLE:
25+
26+
private void RW_Reset() {
27+
appliedAffixes.Clear();
28+
setBaseStats();
29+
nameWithAppliedAffixes = rwBaseName;
30+
}
31+
32+
virtual void setBaseStats() {
33+
debug.panicUnimplemented(self);
34+
}
35+
36+
// Needs to be called before generation
37+
private void prepareForGeneration() {
38+
}
39+
40+
// Needs to be called after generation
41+
private void finalizeAfterGeneration() {}
42+
43+
virtual string GetRandomFluffName() {
44+
static const string Brand[] =
45+
{
46+
"Estus",
47+
"Rejuvenating",
48+
"Soul-bound"
49+
};
50+
return Brand[rnd.randn(Brand.Size())].." "..rwbaseName;
51+
}
52+
53+
////////////////
54+
// Affix effects
55+
56+
override void DoEffect() {
57+
super.DoEffect();
58+
59+
Affix aff;
60+
foreach (aff : appliedAffixes) {
61+
aff.onDoEffect(owner, self);
62+
}
63+
}
64+
65+
override bool HandlePickup(Inventory pickedUp) {
66+
Affix aff;
67+
foreach (aff : appliedAffixes) {
68+
aff.onHandlePickup(pickedUp);
69+
}
70+
return false;
71+
}
72+
73+
// TODO: move it to affixable?
74+
override void Touch(Actor toucher) {
75+
return;
76+
}
77+
78+
void rwTouch(Actor toucher) {
79+
let plrInfo = toucher.player;
80+
if (plrInfo) {
81+
let plrActor = RwPlayer(toucher);
82+
plrActor.PickUpFlask(self);
83+
onPickup(toucher);
84+
}
85+
}
86+
87+
void OnPickup(in out Actor toucher) {
88+
DoPickupSpecial(toucher);
89+
AttachToOwner(toucher);
90+
}
91+
92+
// USAGE
93+
94+
action void RwUse() {
95+
debug.print("I'm used!");
96+
}
97+
}

zscript/rflasks/rw_big_flask.zs

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class RwBigFlask : RwFlask {
2+
States {
3+
Spawn:
4+
PRP3 A -1;
5+
Stop;
6+
}
7+
8+
// METHODS FOR AFFIXABLE:
9+
10+
override void setBaseStats() {
11+
rwbaseName = "Flask";
12+
stats = New('RwFlaskStats');
13+
stats.healAmount = 100;
14+
stats.healDurationTicks = 20 * TICRATE;
15+
stats.maxCharges = 100;
16+
stats.chargeConsumption = 25;
17+
stats.usageCooldownTicks = 30 * TICRATE;
18+
}
19+
}

zscript/rflasks/rw_flask_stats.zs

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class RwFlaskStats {
2+
// Stats (move to separate class?)
3+
int healAmount, healDurationTicks;
4+
int maxCharges, chargeConsumption;
5+
int usageCooldownTicks;
6+
}

zscript/rflasks/rw_medium_flask.zs

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class RwMediumFlask : RwFlask {
2+
States {
3+
Spawn:
4+
MRP2 A -1;
5+
Stop;
6+
}
7+
8+
// METHODS FOR AFFIXABLE:
9+
10+
override void setBaseStats() {
11+
rwbaseName = "Potion";
12+
stats = New('RwFlaskStats');
13+
stats.healAmount = 40;
14+
stats.healDurationTicks = 5 * TICRATE;
15+
stats.maxCharges = 50;
16+
stats.chargeConsumption = 25;
17+
stats.usageCooldownTicks = 15 * TICRATE;
18+
}
19+
}

zscript/rflasks/rw_small_flask.zs

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class RwSmallFlask : RwFlask {
2+
States {
3+
Spawn:
4+
HPP1 A -1;
5+
Stop;
6+
}
7+
8+
// METHODS FOR AFFIXABLE:
9+
10+
override void setBaseStats() {
11+
rwbaseName = "Vial";
12+
stats = New('RwFlaskStats');
13+
stats.healAmount = 15;
14+
stats.healDurationTicks = 3 * TICRATE;
15+
stats.maxCharges = 30;
16+
stats.chargeConsumption = 25;
17+
stats.usageCooldownTicks = 10 * TICRATE;
18+
}
19+
}

0 commit comments

Comments
 (0)