mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-09 16:05:07 +00:00
## About The Pull Request adds the Cain & Abel to the lootpool of the colossus!  these are a set of angelic twinblades bound together by some chains. The long chains allow u to attack mobs from a distance (2 tiles max) and at very FAST speed, and come with a few new mechanics: -Attacking a mob with the cain and abel grants you a special whisp that follows your character. these whisps empower ur next melee attacks u can collect a maximum of up to 6 whisps, (their bonuses stack), after which they reset. If u get hit by a mob once, you'll lose ur whisps (and ur melee bonus), so ull have to regain them by rebuilding up ur combo. u can also choose to sacrifice ur whisps by firing them at mobs (by right clicking them) for some hefty damage (this again means u'll lose them) https://github.com/user-attachments/assets/0a1738db-9fa4-4226-ac80-334f5e97cfa5 -u can also choose to hurl one of ur daggers at enemies, there's 2 throw modes u can toggle between by pressing Z while holding ur weapon. 1- On launch mode, u can throw one of ur daggers at a tile, afterwhich the chains will rapidly pull u towards it, making for some cool getaways in tense situations. this puts throw mode on a 7 second cooldown 2- On crystal mode, u can hurl a dagger at an enemy or at a tile. Spiked crystals will errupt on nearby floors, dealing some damage to nearby mobs and stunning them for 2 seconds (bosses dont get stunned tho). puts throw mode on a 15 second cooldown https://github.com/user-attachments/assets/665b9cf4-c5a1-4263-a36b-86e3f35d0ae5 -Lastly is the swing ability. This will swing ur daggers around u, dealing AOE damage to nearby mobs, and makes u block all melee attacks, tentacle attacks, and deflect incoming projectile attacks (could for example be used to deflect the colossus' shotgun blast back to it). ull only block attacks while the animation is active, which lasts a good 1.75 seconds, and is at a 20 second cooldown. https://github.com/user-attachments/assets/073e5324-af5b-45ab-912e-5bcaa13fc728 Here's a short clip of me using them to fight a colossus and a bubblegum https://www.youtube.com/watch?v=kp5Hu16dHPQ&ab_channel=Kobsa ## Why It's Good For The Game adds a new fun weapon with a few deep mechanics to the game. also makes taking down colossi alot more rewarding. ## Changelog 🆑 add: adds the cain and abel to the colossus lootpool! /🆑 # Conflicts: # icons/mob/inhands/equipment/kitchen_lefthand.dmi
50 lines
2.2 KiB
Plaintext
50 lines
2.2 KiB
Plaintext
/obj/structure/displaycase/freezeray
|
|
start_showpiece_type = /obj/item/freeze_cube
|
|
alert = FALSE
|
|
|
|
/obj/item/freeze_cube
|
|
name = "freeze cube"
|
|
desc = "A block of semi-clear ice treated with chemicals to behave as a throwable weapon. \
|
|
Somehow, it does not transfer its freezing temperatures until it comes into contact with a living creature."
|
|
icon = 'icons/obj/mining_zones/artefacts.dmi'
|
|
icon_state = "freeze_cube"
|
|
inhand_icon_state = "freeze_cube"
|
|
throwforce = 10
|
|
damtype = BURN
|
|
var/cooldown_time = 5 SECONDS
|
|
COOLDOWN_DECLARE(freeze_cooldown)
|
|
|
|
/obj/item/freeze_cube/examine(mob/user)
|
|
. = ..()
|
|
. += span_notice("Throw this at objects or creatures to freeze them, it will boomerang back so be cautious!")
|
|
|
|
/obj/item/freeze_cube/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, gentle, quickstart = TRUE, throw_type_path = /datum/thrownthing)
|
|
. = ..()
|
|
if(!.)
|
|
return
|
|
icon_state = "freeze_cube_thrown"
|
|
addtimer(VARSET_CALLBACK(src, icon_state, initial(icon_state)), 1 SECONDS)
|
|
|
|
/obj/item/freeze_cube/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
|
icon_state = initial(icon_state)
|
|
var/caught = hit_atom.hitby(src, FALSE, FALSE, throwingdatum=throwingdatum)
|
|
var/mob/thrown_by = thrownby?.resolve()
|
|
if(ismovable(hit_atom) && !caught && (!thrown_by || thrown_by && COOLDOWN_FINISHED(src, freeze_cooldown)))
|
|
freeze_hit_atom(hit_atom)
|
|
if(thrown_by && !caught)
|
|
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, throw_at), thrown_by, throw_range+2, throw_speed, null, TRUE), 0.1 SECONDS)
|
|
|
|
/obj/item/freeze_cube/proc/freeze_hit_atom(atom/movable/hit_atom)
|
|
playsound(src, 'sound/effects/glass/glassbr3.ogg', 50, TRUE)
|
|
COOLDOWN_START(src, freeze_cooldown, cooldown_time)
|
|
if(isobj(hit_atom))
|
|
var/obj/hit_object = hit_atom
|
|
var/success = hit_object.freeze()
|
|
if(!success && hit_object.resistance_flags & FREEZE_PROOF)
|
|
hit_object.visible_message(span_warning("[hit_object] is freeze-proof!"))
|
|
|
|
else if(isliving(hit_atom))
|
|
var/mob/living/hit_mob = hit_atom
|
|
GLOB.move_manager.stop_looping(hit_mob) //stops them mid pathing even if they're stunimmune
|
|
hit_mob.apply_status_effect(/datum/status_effect/ice_block_talisman, 3 SECONDS)
|