Skip to content

Commit

Permalink
FINALLY
Browse files Browse the repository at this point in the history
  • Loading branch information
Kelprunner committed Oct 3, 2023
1 parent e69fcbd commit 116b545
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 21 deletions.
66 changes: 59 additions & 7 deletions code/datums/components/crafting/recipes/recipes_tribal.dm
Original file line number Diff line number Diff line change
Expand Up @@ -497,13 +497,12 @@ datum/crafting_recipe/tribalwar/bone
tools = list(TOOL_WORKBENCH)

// T0 Magic Missile Wand (spawn item)

/datum/crafting_recipe/magic/bonewand
name = "Improvised Wand of Magic Missile"
result = /obj/item/gun/magic/wand/kelpmagic/magicmissile
time = 10
reqs = list(/obj/item/stack/sheet/leather = 1,
/obj/item/stack/sheet/bone = 2,
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/leather = 1,
/obj/item/stack/sheet/mineral/plasma = 1)
tools = list(TOOL_RITUAL)

Expand All @@ -518,9 +517,19 @@ datum/crafting_recipe/tribalwar/bone
/obj/item/stack/sheet/mineral/gold = 1)
tools = list(TOOL_WORKBENCH, TOOL_RITUAL)

// Staff of Magic Missile (Generalist staff, single shot/burst medium projectiles, okay-ish melee weapon)
/datum/crafting_recipe/magic/missilestaff
name = "Staff of Magic Missile"
result = /obj/item/gun/magic/staff/kelpmagic/magicmissile
time = 30
reqs = list(/obj/item/stack/sheet/mineral/wood = 20,
/obj/item/stack/crafting/metalparts = 15,
/obj/item/stack/crafting/goodparts = 5,
/obj/item/stack/sheet/mineral/plasma = 2)
tools = list(TOOL_WORKBENCH, TOOL_RITUAL)


// T1 Sparks Wand (anti-swarm sidearm)

/datum/crafting_recipe/magic/lightningrod
name = "Wand of Sparks"
result = /obj/item/gun/magic/wand/kelpmagic/sparky
Expand All @@ -531,20 +540,51 @@ datum/crafting_recipe/tribalwar/bone
/obj/item/stack/sheet/mineral/gold = 1)
tools = list(TOOL_WORKBENCH, TOOL_RITUAL)

// T1 Firebolt Wand (anti-elite sidarm)
// Staff of Lightning (DMR staff, hitscan projectile)
/datum/crafting_recipe/magic/shockstaff
name = "Staff of Lightning"
result = /obj/item/gun/magic/staff/kelpmagic/lightning
time = 30
reqs = list(/obj/item/stack/sheet/mineral/wood = 20,
/obj/item/stack/crafting/metalparts = 10,
/obj/item/stack/crafting/goodparts = 5,
/obj/item/stack/sheet/mineral/diamond = 2)
tools = list(TOOL_WORKBENCH, TOOL_RITUAL)

// T1 Firebolt Wand (anti-elite sidearm)
/datum/crafting_recipe/magic/fireboltwand
name = "Wand of Firebolt"
result = /obj/item/gun/magic/wand/kelpmagic/firebolt
result = /obj/item/gun/magic/staff/kelpmagic/fireball
time = 30
reqs = list(/obj/item/stack/sheet/mineral/wood = 10,
/obj/item/stack/crafting/metalparts = 10,
/obj/item/tool_upgrade/productivity/red_paint = 1,
/obj/item/stack/sheet/mineral/diamond = 1)
tools = list(TOOL_WORKBENCH, TOOL_RITUAL)

// T1 Mending Wand (basic omni heal, ~50 HP all categories every 5 minutes)
// Staff of Fireball (RPG-like staff, 1 shot per 60sec, 75dmg vs players; ~169 vs mobs)
/datum/crafting_recipe/magic/fireball
name = "Staff of Fireball"
result = /obj/item/gun/magic/staff/kelpmagic/fireball
time = 30
reqs = list(/obj/item/stack/sheet/mineral/wood = 20,
/obj/item/stack/crafting/metalparts = 20,
/obj/item/tool_upgrade/productivity/red_paint = 1,
/obj/item/stack/sheet/mineral/diamond = 2)
tools = list(TOOL_WORKBENCH, TOOL_RITUAL)

// Staff of Acid (SMG-like staff, rapid fire but low damage per shot, energy-type damage)
/datum/crafting_recipe/magic/acidspray
name = "Staff of Acid Spray"
result = /obj/item/gun/magic/staff/kelpmagic/acidstaff
time = 30
reqs = list(/obj/item/stack/sheet/mineral/wood = 20,
/obj/item/stack/crafting/metalparts = 15,
/obj/item/stack/sheet/mineral/plasma = 2,
/obj/item/stack/sheet/mineral/diamond = 2)
tools = list(TOOL_WORKBENCH, TOOL_RITUAL)

// T1 Mending Wand (basic omni heal, ~50 HP all categories every 5 minutes)
/datum/crafting_recipe/magic/mendingwand
name = "Wand of Mending"
result = /obj/item/gun/magic/wand/kelpmagic/healwand
Expand All @@ -555,3 +595,15 @@ datum/crafting_recipe/tribalwar/bone
/obj/item/stack/sheet/mineral/gold = 1)
tools = list(TOOL_WORKBENCH, TOOL_RITUAL)

// Staff of Healing (Lots of omniheals, ~50 HP all categories every 5 minutes, 5x charges of the wand)
/datum/crafting_recipe/magic/healstaff
name = "Staff of Healing"
result = /obj/item/gun/magic/staff/kelpmagic/healstaff
time = 30
reqs = list(/obj/item/stack/crafting/metalparts = 5,
/obj/item/stack/crafting/goodparts = 10,
/obj/item/stack/sheet/leather = 2,
/obj/item/stack/sheet/mineral/gold = 3,
/obj/item/stack/sheet/mineral/diamond = 1)
tools = list(TOOL_WORKBENCH, TOOL_RITUAL)

21 changes: 19 additions & 2 deletions code/game/objects/items/loadout_beacons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#define LOADOUT_CAT_MELEE_TWO "Two Handed Melee"
#define LOADOUT_CAT_PISTOL "Pistols"
#define LOADOUT_CAT_REVOLVER "Revolvers"
#define LOADOUT_CAT_MAGIC "Magic"
#define LOADOUT_CAT_LONGGUN "Long Guns"
#define LOADOUT_CAT_HOBO "Improvised Guns"
#define LOADOUT_CAT_MUSKET "Blackpowder Guns"
Expand All @@ -33,7 +34,7 @@
#define LOADOUT_CAT_OTHER "Other Things"

#define LOADOUT_ROOT_ENTRIES list(LOADOUT_CAT_MELEE_ONE, LOADOUT_CAT_MELEE_TWO, LOADOUT_CAT_PISTOL, LOADOUT_CAT_REVOLVER, LOADOUT_CAT_LONGGUN, LOADOUT_CAT_HOBO, LOADOUT_CAT_MISC, LOADOUT_CAT_BOW, LOADOUT_CAT_ENERGY, LOADOUT_CAT_NULLROD, LOADOUT_CAT_SHIELD, LOADOUT_FLAG_TOOL_WASTER, LOADOUT_CAT_MUSKET)
#define LOADOUT_ALL_ENTRIES list(LOADOUT_CAT_PREMIUM, LOADOUT_CAT_LAWMAN, LOADOUT_CAT_MELEE_ONE, LOADOUT_CAT_MELEE_TWO, LOADOUT_CAT_PISTOL, LOADOUT_CAT_REVOLVER, LOADOUT_CAT_LONGGUN, LOADOUT_CAT_HOBO, LOADOUT_CAT_MISC, LOADOUT_CAT_BOW, LOADOUT_CAT_ENERGY, LOADOUT_CAT_NULLROD, LOADOUT_CAT_SHIELD, LOADOUT_CAT_WORKER, LOADOUT_CAT_ADVENTURE, LOADOUT_CAT_MEDICAL, LOADOUT_CAT_SINISTER, LOADOUT_CAT_OTHER, LOADOUT_CAT_MUSKET)
#define LOADOUT_ALL_ENTRIES list(LOADOUT_CAT_PREMIUM, LOADOUT_CAT_LAWMAN, LOADOUT_CAT_MELEE_ONE, LOADOUT_CAT_MELEE_TWO, LOADOUT_CAT_PISTOL, LOADOUT_CAT_REVOLVER, LOADOUT_CAT_MAGIC, LOADOUT_CAT_LONGGUN, LOADOUT_CAT_HOBO, LOADOUT_CAT_MISC, LOADOUT_CAT_BOW, LOADOUT_CAT_ENERGY, LOADOUT_CAT_NULLROD, LOADOUT_CAT_SHIELD, LOADOUT_CAT_WORKER, LOADOUT_CAT_ADVENTURE, LOADOUT_CAT_MEDICAL, LOADOUT_CAT_SINISTER, LOADOUT_CAT_OTHER, LOADOUT_CAT_MUSKET)

GLOBAL_LIST_EMPTY(loadout_datums)
GLOBAL_LIST_EMPTY(loadout_boxes)
Expand Down Expand Up @@ -1086,7 +1087,7 @@ GLOBAL_LIST_EMPTY(loadout_boxes)
entry_tag = "Hermes Revolver"
entry_flags = LOADOUT_FLAG_WASTER | LOADOUT_FLAG_TRIBAL
entry_class = LOADOUT_CAT_REVOLVER
spawn_thing = /obj/item/storage/box/gun/revolver/hermes
spawn_thing = /obj/item/storage/box/gun/revolver/hermes

/obj/item/storage/box/gun/revolver/hermes/PopulateContents()
new /obj/item/gun/ballistic/revolver/hermes(src)
Expand Down Expand Up @@ -2471,3 +2472,19 @@ GLOBAL_LIST_EMPTY(loadout_boxes)
entry_flags = LOADOUT_FLAG_WASTER
entry_class = LOADOUT_CAT_MISC
spawn_thing = /obj/item/ammo_box/rock/improvised

// Kelp's magical stuff!

/datum/loadout_box/bonewands
entry_tag = "Improvised Wands of Magic Missile"
entry_flags = LOADOUT_FLAG_WASTER | LOADOUT_FLAG_TRIBAL
entry_class = LOADOUT_CAT_MAGIC
spawn_thing = /obj/item/storage/box/magic/bonewands

/obj/item/storage/box/magic/bonewands
name = "Wand storage case"

/obj/item/storage/box/magic/bonewands/PopulateContents()
new /obj/item/gun/magic/wand/kelpmagic/magicmissile(src)
new /obj/item/gun/magic/wand/kelpmagic/magicmissile(src)

2 changes: 2 additions & 0 deletions code/modules/WVM/wmv_buyer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,8 @@ GLOBAL_LIST_EMPTY(wasteland_vendor_shop_list)
/obj/item/gun/ballistic/automatic/m1919 = 15,
/obj/item/gun/ballistic/automatic/m72 = 15,
/obj/item/gun/ballistic/automatic/xl70e3 = 15,
// magic shit:tm:
/obj/item/gun/magic/ = 15,
)
/// List of things it buys, but does NOT allow any of its children into the buy list
var/list/buyables_tight = list(
Expand Down
75 changes: 65 additions & 10 deletions code/modules/projectiles/guns/magic/staff.dm
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,6 @@
//If this doesn't get too big, just define projectile/damage here for simplicity's sake?
/////////////////////////////////////

// *Note to delete later: Staff types should be Lightning (Hitscan sniper), Magic Missile (Shotgun), Healing (Upgr. over wand), Fire (RPG?), Acid Spray (SMG)

/obj/item/gun/magic/staff/kelpmagic
name = "Kelp's Stave of Templating"
desc = "If you can see this, call a coder! Or panic."
Expand Down Expand Up @@ -160,8 +158,8 @@
/obj/item/gun/magic/staff/kelpmagic/magicmissile
name = "staff of magic missile"
desc = "This staff's unusual design allows it to be easily aimed from the hip and be used as a slashing weapon. Attuned to this staff is an enhanced version of the Magic Missile spell."
icon_state = "staffmm"
max_charges = 30
icon_state = "mmstaff"
max_charges = 24
recharge_rate = 10 SECONDS
ammo_type = /obj/item/ammo_casing/magic/kelpmagic/magicmissile/advanced
force_wielded = 37 // Practical all around! May change later.
Expand Down Expand Up @@ -190,19 +188,76 @@

/obj/item/gun/magic/staff/kelpmagic/fireball
name = "staff of fireball"
desc = "A simple staff topped with a giant ruby. It appears utterly mundane at a glance, and yet when held one can feel the flames roiling within. Devastation awaits whoever should be on the receiving end of this staff. For some reason, however, you feel like it might be better against walls and sapient targets than anything else."
desc = "A simple staff topped with a giant ruby. It appears utterly mundane at a glance, and yet when held one can feel the flames roiling within. Devastation awaits whoever should be on the receiving end of this staff."
icon_state = "firestaff"
max_charges = 1
recharge_rate = 2 MINUTES
recharge_rate = 60 SECONDS // With delimbing disabled this is much less dangerous than it used to be.
slowdown = 1
fire_sound = 'sound/magic/fireball.ogg'
ammo_type = /obj/item/ammo_casing/magic/fireball
ammo_type = /obj/item/ammo_casing/magic/fireball // 75 brute damage + a knockdown + always blinds a square around the impact point + bonus dmg vs mobs

/****************/
//Staff of Lightning//
//Pure power and devastation - DMR or Sniper adjacent/
//For I beheld Satan as he fell from heaven, like lightning! - DMR or Sniper adjacent/
/***************/

/obj/item/gun/magic/staff/kelpmagic/lightning
name = "staff of lightning"
desc = ""
icon_state = "staffmm"
desc = "The entire staff hums and crackles with power, and excess energy dances along its prongs. When unleashed, a single bolt of great power strikes out faster than the eye can see."
icon_state = "lightningstaff"
fire_sound = 'sound/f13weapons/TeslaCannonFire.ogg'
max_charges = 15
recharge_rate = 20 SECONDS
ammo_type = /obj/item/ammo_casing/magic/kelpmagic/sparks/thunder
init_firemodes = list(
/datum/firemode/semi_auto/slow
)

/obj/item/ammo_casing/magic/kelpmagic/sparks/thunder
projectile_type = /obj/item/projectile/magic/kelpmagic/sparks/thunder

/obj/item/projectile/magic/kelpmagic/sparks/thunder
name = "lightning bolt"
damage = 60

/****************/
//Staff of Healing//
//Because every bottom needs their tools - medibeam adjacent, now with skill requirements!/
/***************/

/obj/item/gun/magic/staff/kelpmagic/healstaff
name = "staff of healing"
desc = "This golden staff is topped with a diamond that lets out a soothing hum. Due to its increased size, this staff is able to store power much more efficiently than its wand counterpart. It still can't heal its wielder, however."
icon_state = "medstaff"
ammo_type = /obj/item/ammo_casing/magic/kelpmagic/mending
max_charges = 25 // 5x the capacity than the wand, but it is Bulky; heals 15/10/20/20/20/5 Bru/Brn/Tox/Oxy/Stm/Cln damage per shot; as a projectile it CAN miss and heal an enemy instead
recharge_rate = 60 SECONDS

/****************/
//Staff of Acid//
//OH GOD, IT'S EVERYWHERE - SMG adjacent/
/***************/

/obj/item/gun/magic/staff/kelpmagic/acidstaff
name = "staff of acid"
desc = "Simply holding this staff fills you with a sense of unease. Ephemeral ooze gathers at the tip before dripping and falling to nothing. When unleashed, it looses a spray of vile acid to rapidly eat away at anything it touches."
icon_state = "acidstaff"
fire_sound = 'sound/f13npc/centaur/spit.ogg'
max_charges = 60 // This puts it in the same rough ballpark as the tesla autoshock, but projectile
recharge_rate = 6 SECONDS
ammo_type = /obj/item/ammo_casing/magic/kelpmagic/acidspray
init_firemodes = list(
/datum/firemode/automatic/rpm150,
/datum/firemode/semi_auto/faster
)

/obj/item/ammo_casing/magic/kelpmagic/acidspray
projectile_type = /obj/item/projectile/magic/kelpmagic/acidspray

/obj/item/projectile/magic/kelpmagic/acidspray
name = "acid spray"
icon_state = "toxin"
damage = 12
damage_type = BURN
flag = "laser"

6 changes: 4 additions & 2 deletions code/modules/projectiles/projectile/magic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -467,12 +467,14 @@
damage = 75
damage_type = BRUTE
nodamage = 0
supereffective_damage = BULLET_DAMAGE_RIFLE_50MG_MATCH
supereffective_faction = list("hostile", "ant", "supermutant", "deathclaw", "cazador", "raider", "china", "gecko", "wastebot", "yaoguai")

//explosion values
var/exp_heavy = 0
var/exp_light = 0
var/exp_light = 1
var/exp_flash = 1
var/exp_fire = 0
var/exp_fire = 1

/obj/item/projectile/magic/aoe/fireball/on_hit(target)
. = ..()
Expand Down
Binary file modified icons/obj/guns/magic.dmi
Binary file not shown.

0 comments on commit 116b545

Please sign in to comment.