Skip to content

Commit 4e99c7b

Browse files
committed
add more magic weapons
1 parent b89af9a commit 4e99c7b

File tree

2 files changed

+94
-50
lines changed

2 files changed

+94
-50
lines changed

rust/src/equipment/magic_weapons/melee.rs

+30
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,36 @@ use crate::core_mechanics::abilities::AbilityTag;
55
pub fn melee() -> Vec<MagicWeapon> {
66
let mut weapons = vec![];
77

8+
weapons.push(Melee(StandardItem {
9+
name: String::from("Aquatic"),
10+
rank: 1,
11+
short_description: String::from("No accuracy penalty while swimming"),
12+
description: String::from(
13+
r"
14+
You do not take an accuracy penalty with attacks using this weapon while \swimming.
15+
",
16+
),
17+
..MagicWeapon::default()
18+
}));
19+
20+
weapons.push(Melee(StandardItem {
21+
name: String::from("Eager"),
22+
rank: 2,
23+
short_description: String::from("Can be drawn quickly, +1 accuracy when drawn"),
24+
description: String::from(
25+
r"
26+
You can draw this weapon as a \glossterm{free action} that does not count as an object manipulation (see \pcref{Manipulating Objects}).
27+
When you draw this weapon, if you did not also sheathe it this round, you gain a \plus1 accuracy bonus to strikes using it this round.
28+
",
29+
),
30+
upgrades: vec![
31+
ItemUpgrade::new(5, "Can be drawn quickly, +2 accuracy when drawn", r"
32+
The accuracy bonus increases to +2.
33+
"),
34+
],
35+
..MagicWeapon::default()
36+
}));
37+
838
weapons.push(Melee(StandardItem {
939
name: String::from("Reckless"),
1040
rank: 3,

rust/src/equipment/magic_weapons/unrestricted.rs

+64-50
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ pub fn unrestricted() -> Vec<MagicWeapon> {
3333
rank: 1,
3434
short_description: String::from(r"Grants +2 accuracy when you injure a foe"),
3535
description: String::from(r"
36-
Whenever you cause a creature to lose \glossterm{hit points} with a strike using this weapon, you \glossterm{briefly} gain a +2 accuracy bonus against that creature.
36+
Whenever you cause a creature to lose \glossterm{hit points} with a strike using this weapon, you \glossterm{briefly} gain a +2 accuracy bonus with \glossterm{strikes} against that creature.
3737
As normal, this bonus does not stack with itself, even if you make the same creature lose hit points multiple times.
3838
"),
3939
upgrades: vec![
@@ -61,9 +61,9 @@ pub fn unrestricted() -> Vec<MagicWeapon> {
6161
ItemUpgrade::new(5, "Deals +1d8-2 damage if you have 4 Str", r"
6262
If your Strength is at least 4, the damage die increases to 1d8.
6363
"),
64-
// +4 damage
65-
ItemUpgrade::new(7, "Deals +2d6-3 damage if you have 5 Str", r"
66-
If your Strength is at least 5, the damage dice increase to 2d6 and the damage penalty increases to -3.
64+
// +5 damage
65+
ItemUpgrade::new(7, "Deals +2d6-2 damage if you have 5 Str", r"
66+
If your Strength is at least 5, the damage dice increase to 2d6.
6767
"),
6868
],
6969
..MagicWeapon::default()
@@ -136,20 +136,23 @@ pub fn unrestricted() -> Vec<MagicWeapon> {
136136
..MagicWeapon::default()
137137
}));
138138

139+
// 1d6 at rank 3 is approximately 25-30% more damage, or more for people using weak attacks.
139140
weapons.push(Unrestricted(StandardItem {
140141
name: String::from("Bloodfuel"),
141-
rank: 4,
142-
short_description: String::from(r"Can spend 4 HP for double damage"),
142+
rank: 3,
143+
// Expected HP at rank 3 is approximately 25.
144+
short_description: String::from(r"Can spend 4 HP for +1d6 damage"),
143145
description: String::from(r"
144-
As a standard action, you can make a \glossterm<strike> using this weapon that uses your own blood to fuel its power.
145-
When you do, you lose 4 \glossterm<hit points>.
146-
The strike's minimum accuracy is $accuracy.
147-
The strike deals double weapon damage.
146+
You can feed this weapon your blood as a \glossterm{minor action}.
147+
When you do, you lose 4 \glossterm{hit points}.
148+
In exchange, you deal 1d6 \glossterm{extra damage} with strikes using this weapon during the current round.
148149
"),
149150
upgrades: vec![
150-
ItemUpgrade::new(6, "Can spend 8 HP for triple damage", r"
151-
Your weapon damage is tripled instead of doubled, but the hit point loss increases to 8.
152-
In addition, the strike's minimum accuracy increases to $accuracy.
151+
ItemUpgrade::new(5, "Can spend 8 HP for +2d6 damage", r"
152+
The HP loss increases to 8, and the extra damage increases to 2d6.
153+
"),
154+
ItemUpgrade::new(7, "Can spend 16 HP for +4d6 damage", r"
155+
The HP loss increases to 16, and the extra damage increases to 4d6.
153156
"),
154157
],
155158
..MagicWeapon::default()
@@ -208,25 +211,6 @@ pub fn unrestricted() -> Vec<MagicWeapon> {
208211
..MagicWeapon::default()
209212
}));
210213

211-
weapons.push(Unrestricted(StandardItem {
212-
name: String::from("Fixating"),
213-
rank: 3,
214-
short_description: String::from(r"Gradually increase focus on one creature"),
215-
description: String::from(r"
216-
Once per round, when you make a \glossterm<strike> with this weapon, you gain a +1 accuracy bonus against one target of the strike with future strikes using this weapon.
217-
If the strike had multiple targets, you choose which target you gain the bonus against.
218-
You also take a -1 penalty to accuracy and defenses against all other creatures.
219-
This effect lasts until you make a strike with this weapon that does not include that creature as a target.
220-
It stacks with itself, up to a maximum of a +3 bonus and a -3 penalty.
221-
"),
222-
upgrades: vec![
223-
ItemUpgrade::new(6, "Quickly increase focus on one creature", r"
224-
The modifiers increases to a +2 bonus and -2 penalty per strike, to a maximum of a +4 bonus and a -4 penalty.
225-
"),
226-
],
227-
..MagicWeapon::default()
228-
}));
229-
230214
weapons.push(Unrestricted(StandardItem {
231215
name: String::from("Merciful"),
232216
rank: 1,
@@ -244,15 +228,45 @@ pub fn unrestricted() -> Vec<MagicWeapon> {
244228
description: String::from(r"
245229
You can activate this weapon as a \glossterm{minor action}.
246230
When you do, it changes shape into a new weapon of your choice from the weapon's original weapon group.
247-
If the weapon's original form belongs to multiple weapon groups, this property only applies to one of those weapon groups.
231+
If the weapon's original form belongs to multiple weapon groups, the weapon can only change into weapons from one of those weapon groups.
248232
The new shape lasts until you activate the weapon again.
249233
250234
When this effect ends for any reason, the weapon returns to its original form.
251235
"),
236+
..MagicWeapon::default()
237+
}));
238+
239+
weapons.push(Unrestricted(StandardItem {
240+
name: String::from("Anchoring"),
241+
rank: 2,
242+
short_description: String::from(r"Can prevent teleportation"),
243+
description: String::from(r"
244+
As a standard action, you can make a \glossterm<strike> using this weapon.
245+
On a damaging hit from this strike, the target \glossterm{briefly} cannot be \glossterm{teleported}.
246+
An object subject to this effect is left behind if it is carried by a creature that teleports.
247+
"),
248+
upgrades: vec![
249+
// TODO: awkward wording
250+
ItemUpgrade::new(5, "Prevents teleportation", r"
251+
This effect no longer requires a special attack.
252+
It automatically affects the target whenever you get a damaging hit with a strike using this weapon.
253+
"),
254+
],
255+
..MagicWeapon::default()
256+
}));
257+
258+
weapons.push(Unrestricted(StandardItem {
259+
name: String::from("Cursebite"),
260+
rank: 3,
261+
short_description: String::from(r"Can inflict a curse"),
262+
description: String::from(r"
263+
Whenever you would inflict a \glossterm{condition} on a non-cursed creature with a strike using this weapon, that condition becomes a curse instead.
264+
The curse cannot be removed by effects that remove conditions, and lasts until the target takes a \glossterm{short rest}.
265+
If the effect has a special method of being removed, such as the \spell{entangle} spell, that removal method still functions normally.
266+
"),
252267
upgrades: vec![
253-
ItemUpgrade::new(3, "Can change into any weapon", r"
254-
The weapon can change shape into any weapon of your choice that you are proficient with, not just weapons from a single weapon group.
255-
This can only change into existing manufactured weapons, not improvised weapons.
268+
ItemUpgrade::new(6, "Can inflict multiple curses", r"
269+
The target does not have to be non-cursed, allowing you to apply multiple curses to the same creature.
256270
"),
257271
],
258272
..MagicWeapon::default()
@@ -342,18 +356,18 @@ pub fn unrestricted() -> Vec<MagicWeapon> {
342356

343357
weapons.push(Unrestricted(StandardItem {
344358
name: String::from("Surestrike"),
345-
rank: 3,
359+
rank: 2,
346360
short_description: String::from(r"Can attack with +3 accuracy"),
347361
description: String::from(r"
348362
As a standard action, you can make a \glossterm<strike> with a +3 accuracy bonus using this weapon.
349363
Your minimum accuracy with the strike is $accuracy+3.
350364
"),
351365
upgrades: vec![
352-
ItemUpgrade::new(5, "Can attack with +6 accuracy", r"
366+
ItemUpgrade::new(4, "Can attack with +6 accuracy", r"
353367
The accuracy bonus increases to +6, and the minimum accuracy increases to $accuracy+6.
354368
"),
355-
ItemUpgrade::new(7, "Can attack with +10 accuracy" , r"
356-
The accuracy bonus increases to +10, and the minimum accuracy increases to $accuracy+10.
369+
ItemUpgrade::new(6, "Can attack with +12 accuracy" , r"
370+
The accuracy bonus increases to +12, and the minimum accuracy increases to $accuracy+12.
357371
"),
358372
],
359373
..MagicWeapon::default()
@@ -415,32 +429,32 @@ pub fn unrestricted() -> Vec<MagicWeapon> {
415429
..MagicWeapon::default()
416430
}));
417431

432+
weapons
433+
}
434+
435+
fn energy_weapons() -> Vec<MagicWeapon> {
436+
let mut weapons = vec![];
437+
418438
weapons.push(Unrestricted(StandardItem {
419439
name: String::from("Prismatic"),
420-
rank: 4,
440+
rank: 3,
421441
short_description: String::from(r"Can attack Reflex defense for energy damage"),
422442
description: String::from(r"
443+
This weapon glows with gradually shifting red, blue, and yellow light in a 15 foot radius of \glossterm{bright illumination}.
423444
As a standard action, you can make a \glossterm<strike> using this weapon that transforms the striking surface to elemental energy.
424445
The strike is made against the target's Reflex defense instead of its Armor defense.
425446
Its minimum accuracy is $accuracy.
426447
Damage dealt by the strike is cold, electricity, and fire damage instead of the weapon's normal damage type.
427448
"),
428449
upgrades: vec![
429-
ItemUpgrade::new(7, "Attacks Reflex defense and deals energy damage", r"
450+
ItemUpgrade::new(7, "Deals energy damage and can attack Reflex defense", r"
430451
All damage dealt by this weapon is cold, electricity, and fire damage instead of its normal damage types.
431-
Strikes with this weapon are made against the target's Reflex defense instead of its Armor defense.
432-
When you imbue this weapon with poison as a standard action, the strike deals double \glossterm{weapon damage}, and its minimum accuracy is $accuracy.
452+
When you imbue this weapon with energy as a standard action, the strike deals triple \glossterm{weapon damage}, and its minimum accuracy is $accuracy.
433453
"),
434454
],
435455
..MagicWeapon::default()
436456
}));
437457

438-
weapons
439-
}
440-
441-
fn energy_weapons() -> Vec<MagicWeapon> {
442-
let mut weapons = vec![];
443-
444458
weapons.push(Unrestricted(StandardItem {
445459
name: String::from("Vibrating"),
446460
rank: 1,

0 commit comments

Comments
 (0)