Skip to content

Commit

Permalink
Reduce/Grow Spell, Whip Rebalance, Summon Fix, etc (#83)
Browse files Browse the repository at this point in the history
* add sizespell, nerf pact weapon, add cownose

* hahahokay

* Update wizard.dm

* fix..

* Update wizard.dm

* fix giant from wizard
  • Loading branch information
UniquaSa authored Dec 1, 2024
1 parent 0e6e9d7 commit 1f96b33
Show file tree
Hide file tree
Showing 11 changed files with 205 additions and 49 deletions.
2 changes: 0 additions & 2 deletions code/datums/components/pact_weapon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,10 @@
weapon = parent
weapon.name += " of the [patronchoice]"
weapon.desc += " It is enchanted to use arcane skill rather than its regular skill. Right click with an empty hand to change this weapon's form."
weapon.force *= 1.2
weapon.max_blade_int *= 1.2
weapon.blade_int = weapon.max_blade_int
weapon.max_integrity *= 1.2
weapon.obj_integrity = weapon.max_integrity
weapon.minstr = 1
weapon.associated_skill = /datum/skill/magic/arcane
//var/mutable_appearance/magic_overlay = mutable_appearance('icons/effects/effects.dmi', "electricity")
//item.add_overlay(magic_overlay)
Expand Down
63 changes: 33 additions & 30 deletions code/game/objects/items/rogueweapons/melee/flail.dm
Original file line number Diff line number Diff line change
Expand Up @@ -93,40 +93,43 @@


/datum/intent/whip/lash
name = "lash"
blade_class = BCLASS_BLUNT
attack_verb = list("lashes", "cracks")
hitsound = list('sound/combat/hits/blunt/flailhit.ogg')
chargetime = 5
recovery = 7
penfactor = 10
reach = 2
icon_state = "inlash"
item_d_type = "slash"
name = "lash"
blade_class = BCLASS_BLUNT
attack_verb = list("lashes", "cracks")
hitsound = list('sound/combat/hits/blunt/flailhit.ogg')
chargetime = 5
recovery = 7
penfactor = 10
damfactor = 1.1
reach = 1
icon_state = "inlash"
item_d_type = "blunt"

/datum/intent/whip/crack
name = "crack"
blade_class = BCLASS_CUT
attack_verb = list("cracks", "strikes") //something something dwarf fotresss
hitsound = list('sound/combat/hits/blunt/flailhit.ogg')
chargetime = 0
recovery = 10
penfactor = 40
reach = 1
icon_state = "incrack"
item_d_type = "slash"
name = "crack"
blade_class = BCLASS_CUT
attack_verb = list("cracks", "strikes") //something something dwarf fotresss
hitsound = list('sound/combat/hits/blunt/flailhit.ogg')
chargetime = 0
recovery = 10
penfactor = 40
reach = 2
icon_state = "incrack"
item_d_type = "slash"

/datum/intent/whip/punish
name = "punish"
blade_class = BCLASS_BLUNT
attack_verb = list("lashes")
hitsound = list('sound/combat/hits/blunt/flailhit.ogg')
chargetime = 0
recovery = 10
penfactor = 0
reach = 2
icon_state = "inpunish"
item_d_type = "blunt"
name = "punish"
blade_class = BCLASS_CUT
attack_verb = list("lashes")
hitsound = list('sound/combat/hits/blunt/flailhit.ogg')
chargetime = 5
swingdelay = 6
recovery = 10
penfactor = 0
damfactor = 0.9
reach = 3
icon_state = "inpunish"
item_d_type = "slash"

/obj/item/rogueweapon/whip
force = 21
Expand Down
2 changes: 2 additions & 0 deletions code/modules/client/customizer/customizers/organ/snout.dm
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,8 @@
/datum/sprite_accessory/snout/front/sharplight,
/datum/sprite_accessory/snout/front/roundlight,
/datum/sprite_accessory/snout/shortnosed,
/datum/sprite_accessory/snout/front/cownose,
/datum/sprite_accessory/snout/cownose,
)

/datum/customizer/organ/snout/akula
Expand Down
1 change: 1 addition & 0 deletions code/modules/clothing/rogueclothes/shirts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
allowed_sex = list(MALE, FEMALE)
allowed_race = NON_DWARVEN_RACE_TYPES
body_parts_covered = CHEST|GROIN|ARMS|VITALS
flags_inv = HIDECROTCH

/obj/item/clothing/suit/roguetown/shirt/undershirt/black
color = CLOTHING_BLACK
Expand Down
4 changes: 4 additions & 0 deletions code/modules/mob/dead/new_player/sprite_accessory/snouts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -458,3 +458,7 @@
/datum/sprite_accessory/snout/cownose
name = "Cow Nose"
icon_state = "cownose"

/datum/sprite_accessory/snout/front/cownose
name = "Cow Nose(Top)"
icon_state = "cownose"
29 changes: 13 additions & 16 deletions code/modules/spells/roguetown/warlock.dm
Original file line number Diff line number Diff line change
Expand Up @@ -183,30 +183,27 @@

invocation = ""
invocation_type = "shout" //can be none, whisper, emote and shout

var/mob/living/fam

/obj/effect/proc_holder/spell/self/findfamiliar/cast(mob/user = usr)
..()

var/familiars = list(
/mob/living/carbon/human/species/goblin/hell, //imp
/mob/living/simple_animal/hostile/retaliate/rogue/mossback, //psuedodragon
/mob/living/carbon/human/species/skeleton, //quasit(skeleton?)
/mob/living/simple_animal/shade //sprite
)
"Imp" = /mob/living/carbon/human/species/goblin/hell,
"Crab" = /mob/living/simple_animal/hostile/retaliate/rogue/mossback,
"Skeleton" = /mob/living/carbon/human/species/skeleton,
"Sprite" = /mob/living/simple_animal/shade,
"Wolf" = /mob/living/simple_animal/hostile/retaliate/rogue/wolf,
"Mutated Spider" = /mob/living/simple_animal/hostile/retaliate/rogue/spider/mutated,
"Buck" = /mob/living/simple_animal/hostile/retaliate/rogue/saigabuck
)
var/familiarchoice = input("Choose your familiar", "Available familiars") as anything in familiars

var/familiar_type = familiars[familiarchoice]
to_chat(user, span_notice("Trying to find familiar..."))
var/list/L = pollCandidatesForMob(
Question = "Do you want to play as [span_notice("[span_danger("[user.real_name]'s")] familiar")]?",
jobbanType = ROLE_PAI,
poll_time = 20 SECONDS,
ignore_category = POLL_IGNORE_SENTIENCE_POTION,
)
if(L.len > 0)
var/list/L = pollGhostCandidates("Do you want to play as [span_notice("[span_danger("[user.real_name]'s")] familiar")]?", ROLE_PAI)

if(LAZYLEN(L))
var/mob/chosen_one = pick(L)
fam = new familiarchoice(user.loc)
fam = new familiar_type(user.loc)
fam.key = chosen_one.key
to_chat(user, span_notice("Your familiar appears..."))
chosen_one.mind.transfer_to(fam)
Expand Down
Binary file modified icons/mob/actions/roguespells.dmi
Binary file not shown.
Binary file modified icons/mob/sprite_accessory/snouts/snouts.dmi
Binary file not shown.
149 changes: 149 additions & 0 deletions modular_causticcove/code/modules/spells/wizard.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
/obj/effect/proc_holder/spell/targeted/touch/sizespell
name = "Reduce/Grow Person"
desc = "A basic trick many apprentices would use to prank their master."
clothes_req = FALSE
drawmessage = "I prepare to perform a arcyne incantation."
dropmessage = "I release my arcyne focus."
school = "transmutation"
overlay_state = "size-change"
castdrain = 50
chargetime = 10
charge_max = 2 MINUTES
cost = 2
chargedloop = /datum/looping_sound/invokegen
associated_skill = /datum/skill/magic/arcane
hand_path = /obj/item/melee/touch_attack/sizespell

/obj/item/melee/touch_attack/sizespell
name = "\improper magic touch"
desc = "You recall the following incantations you've learned:\n \
<b>Reduce</b>: Will Shrink whoever you touch.\n \
<b>Grow</b>: Will grow whoever you touch, you may also touch yourself. (huehue, get it?)"
catchphrase = null
possible_item_intents = list(INTENT_HELP, INTENT_DISARM)
icon = 'icons/mob/roguehudgrabs.dmi'
icon_state = "pulling"
icon_state = "grabbing_greyscale"
color = "#ff0000" // this produces green because the icon base is yellow but someone else can fix that if they want


/obj/item/melee/touch_attack/sizespell/attack_self()
qdel(src)

/obj/item/melee/touch_attack/sizespell/afterattack(atom/target, mob/living/carbon/user, proximity)
if(!proximity)
return

switch (user.used_intent.type)
if(INTENT_HELP) //Reduce
shrink_target(target, user)
if(INTENT_DISARM) //Grow
grow_target(target, user)

/obj/item/melee/touch_attack/sizespell/proc/shrink_target(mob/living/target, mob/living/carbon/human/user)
if(!isliving(target))
return

if(user == target)
user.visible_message(span_notice("[user] rapidly changes in size!"), span_notice("I rapidly shrink down!"))
else
user.visible_message(span_notice("[user] touch [target], and they changes in size!"), span_notice("I touch [target] and they shrink in size!"))
target.apply_status_effect(/datum/status_effect/buff/shrinked)
qdel(src)


/obj/item/melee/touch_attack/sizespell/proc/grow_target(mob/living/target, mob/living/carbon/human/user)
if(!isliving(target))
return

if(user == target)
user.visible_message(span_notice("[user] rapidly changes in size!"), span_notice("I rapidly grow up!"))
else
user.visible_message(span_notice("[user] touch [target], and they changes in size!"), span_notice("I touch [target] and they grow in size!"))
target.apply_status_effect(/datum/status_effect/buff/growth)
qdel(src)

/datum/status_effect/buff/shrinked
id = "shrink"
alert_type = /atom/movable/screen/alert/status_effect/buff/shrinked
effectedstats = list("speed" = 3, "strength" = -6, "fortune" = -3)
var/removable = FALSE

/datum/status_effect/buff/shrinked/on_apply()
. = ..()
var/mob/living/target = owner
target.transform = target.transform.Scale(0.5, 0.5)
target.update_transform()
target.pass_flags = PASSTABLE | PASSMOB
spawn(300) //is that how it work? i remember there being a better wait timer but i forgor
if(owner && istype(owner, /mob/living))
to_chat(owner, span_userdanger("<span class='big'>You feel like you might be able to return to your size by pressing on the status effect!</span>"))
removable = TRUE

/datum/status_effect/buff/shrinked/on_remove()
var/mob/living/target = owner
target.transform = target.transform.Scale(2, 2)
target.update_transform()
target.pass_flags = 0
. = ..()

/atom/movable/screen/alert/status_effect/buff/shrinked
name = "Shrinked"
desc = "I've been shrinked! (After 30 seconds, you can press this button to return to your original size.)"
icon_state = "debuff"
/datum/status_effect/buff/shrinked

/atom/movable/screen/alert/status_effect/buff/shrinked/Click()
. = ..()
var/mob/living/L = usr
if(!istype(L)) // how though
return
var/datum/status_effect/buff/shrinked/effect = L.has_status_effect(/datum/status_effect/buff/shrinked)
if(!effect.removable)
to_chat(L, span_userdanger("<span class='warning'>I can't turn back yet!</span>"))
return
L.remove_status_effect(/datum/status_effect/buff/shrinked)


/datum/status_effect/buff/growth
id = "growth"
alert_type = /atom/movable/screen/alert/status_effect/buff/growth
effectedstats = list("speed" = -6, "strength" = 3)
var/removable = FALSE

/datum/status_effect/buff/growth/on_apply()
. = ..()
var/mob/living/target = owner
target.transform = target.transform.Scale(2, 2)
target.transform = target.transform.Translate(0, (1 * 16))
target.update_transform()
target.add_movespeed_modifier(MOVESPEED_ID_ADMIN_VAREDIT, update=TRUE, priority=100, multiplicative_slowdown=4, movetypes=GROUND)
spawn(300) //is that how it work? i remember there being a better wait timer but i forgor, so i'm using this one
if(owner && istype(owner, /mob/living))
to_chat(owner, span_userdanger("<span class='big'>You feel like you might be able to return to your size now by pressing on the status effect!</span>"))
removable = TRUE

/datum/status_effect/buff/growth/on_remove()
var/mob/living/target = owner
target.transform = target.transform.Scale(0.5, 0.5)
target.transform = target.transform.Translate(0, -(1 * 16))
target.update_transform()
target.remove_movespeed_modifier(MOVESPEED_ID_ADMIN_VAREDIT, TRUE)
. = ..()

/atom/movable/screen/alert/status_effect/buff/growth
name = "Growth"
desc = "I've became bigger! (After 30 seconds, you can press this button to return to your original size.)"
icon_state = "debuff"
/datum/status_effect/buff/growth

/atom/movable/screen/alert/status_effect/buff/growth/Click()
. = ..()
var/mob/living/L = usr
if(!istype(L)) // how though
return
var/datum/status_effect/buff/growth/effect = L.has_status_effect(/datum/status_effect/buff/growth)
if(!effect.removable)
to_chat(L, span_userdanger("<span class='warning'>I can't turn back yet!</span>"))
return
L.remove_status_effect(/datum/status_effect/buff/growth)
3 changes: 2 additions & 1 deletion modular_hearthstone/code/modules/spells/roguetown/wizard.dm
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,8 @@
/obj/effect/proc_holder/spell/invoked/magicstone5e,
/obj/effect/proc_holder/spell/invoked/mending5e,
/obj/effect/proc_holder/spell/self/primalsavagery5e,
/obj/effect/proc_holder/spell/invoked/projectile/rayoffrost5e
/obj/effect/proc_holder/spell/invoked/projectile/rayoffrost5e,
/obj/effect/proc_holder/spell/targeted/touch/sizespell
)
for(var/i = 1, i <= spell_choices.len, i++)
choices["[spell_choices[i].name]: [spell_choices[i].cost]"] = spell_choices[i]
Expand Down
1 change: 1 addition & 0 deletions roguetown.dme
Original file line number Diff line number Diff line change
Expand Up @@ -3631,6 +3631,7 @@
#include "modular_causticcove\code\modules\roguetown\roguecrafting\alchemy.dm"
#include "modular_causticcove\code\modules\roguetown\roguejobs\alchemist\containers.dm"
#include "modular_causticcove\code\modules\roguetown\roguejobs\alchemist\reagent.dm"
#include "modular_causticcove\code\modules\spells\wizard.dm"
#include "modular_causticcove\code\modules\spells\pantheon\Divine\noc.dm"
#include "modular_causticcove\code\modules\vore\persistence.dm"
#include "modular_causticcove\code\modules\vore\SSbellies.dm"
Expand Down

0 comments on commit 1f96b33

Please sign in to comment.