mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
powder that makes you say yes
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
var/transforming = 0
|
var/transforming = 0
|
||||||
var/failure_chance = 15 // This can become negative with part tiers above 3, which helps offset penalties
|
var/failure_chance = 15 // This can become negative with part tiers above 3, which helps offset penalties
|
||||||
var/obj/item/weapon/stock_parts/scanning_module/scanmod
|
var/obj/item/weapon/stock_parts/scanning_module/scanmod
|
||||||
|
var/dropnoms_active = TRUE
|
||||||
|
|
||||||
/obj/item/weapon/bluespace_harpoon/Initialize()
|
/obj/item/weapon/bluespace_harpoon/Initialize()
|
||||||
. = ..()
|
. = ..()
|
||||||
@@ -26,6 +27,8 @@
|
|||||||
|
|
||||||
/obj/item/weapon/bluespace_harpoon/examine(var/mob/user)
|
/obj/item/weapon/bluespace_harpoon/examine(var/mob/user)
|
||||||
. = ..()
|
. = ..()
|
||||||
|
. += "It is currently in [mode ? "transmitting" : "recieving"] mode."
|
||||||
|
. += "Spatial rearrangement is [dropnoms_active ? "active" : "inactive"]."
|
||||||
if(Adjacent(user))
|
if(Adjacent(user))
|
||||||
. += "It has [scanmod ? scanmod : "no scanner module"] installed."
|
. += "It has [scanmod ? scanmod : "no scanner module"] installed."
|
||||||
|
|
||||||
@@ -80,7 +83,7 @@
|
|||||||
playsound(src, 'sound/weapons/wave.ogg', 60, 1)
|
playsound(src, 'sound/weapons/wave.ogg', 60, 1)
|
||||||
return
|
return
|
||||||
var/turf/T = get_turf(A)
|
var/turf/T = get_turf(A)
|
||||||
if(!T || (T.check_density() && mode == 1))
|
if(!T || (T.check_density(ignore_mobs = TRUE) && mode == 1))
|
||||||
to_chat(user,"<span class = 'warning'>That's a little too solid to harpoon into!</span>")
|
to_chat(user,"<span class = 'warning'>That's a little too solid to harpoon into!</span>")
|
||||||
return
|
return
|
||||||
var/turf/ownturf = get_turf(src)
|
var/turf/ownturf = get_turf(src)
|
||||||
@@ -118,6 +121,11 @@
|
|||||||
for(var/rider in L.buckled_mobs)
|
for(var/rider in L.buckled_mobs)
|
||||||
sendfailchance += 15
|
sendfailchance += 15
|
||||||
|
|
||||||
|
var/mob/living/living_user = user
|
||||||
|
var/can_dropnom = TRUE
|
||||||
|
if(!dropnoms_active || !istype(living_user))
|
||||||
|
can_dropnom = FALSE
|
||||||
|
|
||||||
if(mode)
|
if(mode)
|
||||||
if(user in FromTurf)
|
if(user in FromTurf)
|
||||||
if(prob(sendfailchance))
|
if(prob(sendfailchance))
|
||||||
@@ -133,9 +141,7 @@
|
|||||||
belly_dest = pick(living_user.vore_organs)
|
belly_dest = pick(living_user.vore_organs)
|
||||||
if(belly_dest)
|
if(belly_dest)
|
||||||
for(var/mob/living/prey in ToTurf)
|
for(var/mob/living/prey in ToTurf)
|
||||||
if(prey == user) //You can't eat yourself, silly!
|
if(prey != user && prey.can_be_drop_prey)
|
||||||
continue
|
|
||||||
if(prey.can_be_drop_prey)
|
|
||||||
prey.forceMove(belly_dest)
|
prey.forceMove(belly_dest)
|
||||||
vore_happened = TRUE
|
vore_happened = TRUE
|
||||||
to_chat(prey, "<span class='danger'>[living_user] materializes around you, as you end up in their [belly_dest]!</span>")
|
to_chat(prey, "<span class='danger'>[living_user] materializes around you, as you end up in their [belly_dest]!</span>")
|
||||||
@@ -143,7 +149,7 @@
|
|||||||
if(can_dropnom && !vore_happened && living_user.can_be_drop_prey)
|
if(can_dropnom && !vore_happened && living_user.can_be_drop_prey)
|
||||||
var/mob/living/pred
|
var/mob/living/pred
|
||||||
for(var/mob/living/potential_pred in ToTurf)
|
for(var/mob/living/potential_pred in ToTurf)
|
||||||
if(potential_pred.can_be_drop_pred)
|
if(potential_pred != user && potential_pred.can_be_drop_pred)
|
||||||
pred = potential_pred
|
pred = potential_pred
|
||||||
if(pred)
|
if(pred)
|
||||||
var/obj/belly/belly_dest
|
var/obj/belly/belly_dest
|
||||||
@@ -164,25 +170,58 @@
|
|||||||
else
|
else
|
||||||
O.forceMove(ToTurf)
|
O.forceMove(ToTurf)
|
||||||
|
|
||||||
|
var/user_vored = FALSE
|
||||||
|
|
||||||
for(var/mob/living/M in FromTurf)
|
for(var/mob/living/M in FromTurf)
|
||||||
if(prob(recievefailchance))
|
if(prob(recievefailchance))
|
||||||
M.forceMove(pick(trange(24,user)))
|
M.forceMove(pick(trange(24,user)))
|
||||||
else
|
else
|
||||||
M.forceMove(ToTurf)
|
M.forceMove(ToTurf)
|
||||||
|
if(can_dropnom && living_user.can_be_drop_pred && M.can_be_drop_prey)
|
||||||
|
var/obj/belly/belly_dest
|
||||||
|
if(living_user.vore_selected)
|
||||||
|
belly_dest = living_user.vore_selected
|
||||||
|
else if(living_user.vore_organs.len)
|
||||||
|
belly_dest = pick(living_user.vore_organs)
|
||||||
|
if(belly_dest)
|
||||||
|
M.forceMove(belly_dest)
|
||||||
|
to_chat(living_user, "<span class='notice'>[M] materializes inside you as they end up in your [belly_dest]!</span>")
|
||||||
|
to_chat(M, "<span class='danger'>You materialize inside [living_user] as you end up in their [belly_dest]!</span>")
|
||||||
|
else if(can_dropnom && living_user.can_be_drop_prey && M.can_be_drop_pred && !user_vored)
|
||||||
|
var/obj/belly/belly_dest
|
||||||
|
if(M.vore_selected)
|
||||||
|
belly_dest = M.vore_selected
|
||||||
|
else if(M.vore_organs.len)
|
||||||
|
belly_dest = pick(M.vore_organs)
|
||||||
|
if(belly_dest)
|
||||||
|
living_user.forceMove(belly_dest)
|
||||||
|
user_vored = TRUE
|
||||||
|
to_chat(living_user, "<span class='danger'>[M] materializes around you, as you end up in their [belly_dest]!</span>")
|
||||||
|
to_chat(M, "<span class='notice'>You materialize around [living_user] as they end up in your [belly_dest]!</span>")
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/bluespace_harpoon/attack_self(mob/living/user as mob)
|
/obj/item/weapon/bluespace_harpoon/attack_self(mob/living/user as mob)
|
||||||
return chande_fire_mode(user)
|
return chande_fire_mode(user)
|
||||||
|
|
||||||
/obj/item/weapon/bluespace_harpoon/verb/chande_fire_mode(mob/user as mob)
|
/obj/item/weapon/bluespace_harpoon/verb/chande_fire_mode(mob/user as mob)
|
||||||
set name = "Change fire mode"
|
set name = "Change Fire Mode"
|
||||||
set category = "Object"
|
set category = "Object"
|
||||||
set src in oview(1)
|
set src in range(0)
|
||||||
|
|
||||||
if(transforming) return
|
if(transforming) return
|
||||||
mode = !mode
|
mode = !mode
|
||||||
transforming = 1
|
transforming = 1
|
||||||
to_chat(user,"<span class = 'info'>You change \the [src]'s mode to [mode ? "transmiting" : "receiving"].</span>")
|
to_chat(user,"<span class = 'info'>You change \the [src]'s mode to [mode ? "transmiting" : "receiving"].</span>")
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
|
/obj/item/weapon/bluespace_harpoon/verb/chande_dropnom_mode(mob/user as mob)
|
||||||
|
set name = "Toggle Spatial Rearrangement"
|
||||||
|
set category = "Object"
|
||||||
|
set src in range(0)
|
||||||
|
|
||||||
|
dropnoms_active = !dropnoms_active
|
||||||
|
to_chat(user,"<span class = 'info'>You switch \the [src]'s spatial rearrangement [dropnoms_active ? "on" : "off"]. (Telenoms [dropnoms_active ? "enabled" : "dsiabled"])</span>")
|
||||||
|
|
||||||
/obj/item/weapon/bluespace_harpoon/update_icon()
|
/obj/item/weapon/bluespace_harpoon/update_icon()
|
||||||
if(transforming)
|
if(transforming)
|
||||||
switch(mode)
|
switch(mode)
|
||||||
|
|||||||
Reference in New Issue
Block a user