From b479e5fc7a18f8d38d6d3ccfc97ca3d3d49239e2 Mon Sep 17 00:00:00 2001
From: Michiyamenotehifunana
<31995558+Michiyamenotehifunana@users.noreply.github.com>
Date: Fri, 16 Mar 2018 18:34:06 +0800
Subject: [PATCH] [Ready for Review] Revamps Wish Granters (#5773)
* Rebalances Wishgranters
* Removes accidental copypasta
* Revamps Wish Granters entirely!
* Finishes Wishgranter revamp, rebalances eutactic blades
* Adds more bonuses to wishgranter wishes, fixes unintentional nerf to Dragons Tooth
* Updates teleporter code to actually work
* Now with 120% more paranoia!
---
.../code/game/machinery/wishgranter.dm | 121 ++++++++++++++++++
.../objects/items/melee/eutactic_blades.dm | 17 ++-
tgstation.dme | 1 +
3 files changed, 132 insertions(+), 7 deletions(-)
create mode 100644 modular_citadel/code/game/machinery/wishgranter.dm
diff --git a/modular_citadel/code/game/machinery/wishgranter.dm b/modular_citadel/code/game/machinery/wishgranter.dm
new file mode 100644
index 0000000000..33ee2e4e18
--- /dev/null
+++ b/modular_citadel/code/game/machinery/wishgranter.dm
@@ -0,0 +1,121 @@
+/obj/machinery/wish_granter/attack_hand(mob/living/carbon/user)
+ if(charges <= 0)
+ to_chat(user, "The Wish Granter lies silent.")
+ return
+
+ else if(!ishuman(user))
+ to_chat(user, "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's.")
+ return
+
+ else if (!insisting)
+ to_chat(user, "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?")
+ insisting++
+
+ else
+ if(is_special_character(user))
+ to_chat(user, "You speak. [pick("I want power","Humanity is corrupt, mankind must be destroyed", "I want to rule the world","I want immortality")]. The Wish Granter answers.")
+ to_chat(user, "Your head pounds for a moment, before your vision clears. The Wish Granter, sensing the darkness in your heart, has given you limitless power, and it's all yours!")
+ user.dna.add_mutation(HULK)
+ user.dna.add_mutation(XRAY)
+ user.dna.add_mutation(COLDRES)
+ user.dna.add_mutation(TK)
+ user.next_move_modifier *= 0.5 //half the delay between attacks!
+ to_chat(user, "Things around you feel slower!")
+ charges--
+ insisting = FALSE
+ to_chat(user, "You have a very great feeling about this!")
+ else
+ to_chat(user, "The Wish Granter awaits your wish.")
+ var/wish = input("You want...","Wish") as null|anything in list("Power","Wealth","The Station To Disappear","To Kill","Nothing")
+ switch(wish)
+ if("Power") //Gives infinite power in exchange for infinite power going off in your face!
+ if(charges <= 0)
+ return
+ to_chat(user, "Your wish is granted, but at a terrible cost...")
+ to_chat(user, "The Wish Granter punishes you for your selfishness, warping itself into a delaminating supermatter shard!")
+ var/obj/item/stock_parts/cell/infinite/powah = new /obj/item/stock_parts/cell/infinite(get_turf(user))
+ if(user.put_in_hands(powah))
+ to_chat(user, "[powah] materializes into your hands!")
+ else
+ to_chat(user, "[powah] materializes onto the floor.")
+ var/obj/machinery/power/supermatter_shard/powerwish = new /obj/machinery/power/supermatter_shard(loc)
+ powerwish.damage = 700 //right at the emergency threshold
+ powerwish.produces_gas = FALSE
+ charges--
+ insisting = FALSE
+ if(!charges)
+ qdel(src)
+ if("Wealth") //Gives 1 million space bucks in exchange for being turned into gold!
+ if(charges <= 0)
+ return
+ to_chat(user, "Your wish is granted, but at a cost...")
+ to_chat(user, "The Wish Granter punishes you for your selfishness, warping your body to match the greed in your heart.")
+ new /obj/structure/closet/crate/trashcart/moneywish(loc)
+ new /obj/structure/closet/crate/trashcart/moneywish(loc)
+ user.set_species(/datum/species/golem/gold)
+ charges--
+ insisting = FALSE
+ if(!charges)
+ qdel(src)
+ if("The Station To Disappear") //teleports you to the station and makes you blind, making the station disappear for you!
+ if(charges <= 0)
+ return
+ to_chat(user, "Your wish is 'granted', but at a terrible cost...")
+ to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your eyes to match the darkness in your heart.")
+ user.dna.add_mutation(BLINDMUT)
+ user.adjust_eye_damage(100)
+ var/list/destinations = list()
+ for(var/obj/item/device/beacon/B in GLOB.teleportbeacons)
+ var/turf/T = get_turf(B)
+ if(is_station_level(T.z))
+ destinations += B
+ var/chosen_beacon = pick(destinations)
+ var/obj/effect/portal/jaunt_tunnel/J = new (get_turf(src), src, 100, null, FALSE, get_turf(chosen_beacon))
+ try_move_adjacent(J)
+ playsound(src,'sound/effects/sparks4.ogg',50,1)
+ charges--
+ insisting = FALSE
+ if(!charges)
+ qdel(src)
+ if("To Kill") //Makes you kill things in exchange for rewards!
+ if(charges <= 0)
+ return
+ to_chat(user, "Your wish is granted, but at a terrible cost...")
+ to_chat(user, "The Wish Granter punishes you for your wickedness, warping itself into a dastardly creature for you to kill! ...but it almost seems to reward you for this.")
+ var/obj/item/melee/transforming/energy/sword/cx/killreward = new /obj/item/melee/transforming/energy/sword/cx(get_turf(user))
+ if(user.put_in_hands(killreward))
+ to_chat(user, "[killreward] materializes into your hands!")
+ else
+ to_chat(user, "[killreward] materializes onto the floor.")
+ user.next_move_modifier *= 0.8 //20% less delay between attacks!
+ to_chat(user, "Things around you feel slightly slower!")
+ var/mob/living/simple_animal/hostile/venus_human_trap/killwish = new /mob/living/simple_animal/hostile/venus_human_trap(loc)
+ killwish.maxHealth = 1500
+ killwish.health = killwish.maxHealth
+ killwish.grasp_range = 6
+ killwish.melee_damage_upper = 30
+ killwish.grasp_chance = 50
+ killwish.loot = list(/obj/item/twohanded/hypereutactic)
+ charges--
+ insisting = FALSE
+ if(!charges)
+ qdel(src)
+ if("Nothing") //Makes the wish granter disappear
+ if(charges <= 0)
+ return
+ to_chat(user, "The Wish Granter vanishes from sight!")
+ to_chat(user, "You feel as if you just narrowly avoided a terrible fate...")
+ charges--
+ insisting = FALSE
+ qdel(src)
+
+//ITEMS THAT IT USES
+
+/obj/structure/closet/crate/trashcart/moneywish
+ desc = "A heavy, metal trashcart with wheels. Filled with cash."
+ name = "loaded trash cart"
+
+/obj/structure/closet/crate/trashcart/moneywish/PopulateContents() //25*20*1000=500,000
+ for(var/i = 0, i < 25, i++)
+ var/obj/item/stack/spacecash/c1000/lodsamoney = new /obj/item/stack/spacecash/c1000(src)
+ lodsamoney.amount = lodsamoney.max_amount
diff --git a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm
index 526b8296a6..29de14a120 100644
--- a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm
+++ b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm
@@ -11,16 +11,18 @@
lefthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_left.dmi'
righthand_file = 'modular_citadel/icons/eutactic/mob/noneutactic_right.dmi'
force = 3
+ force_on = 21
throwforce = 5
+ throwforce_on = 20
hitsound = "swing_hit" //it starts deactivated
hitsound_on = 'sound/weapons/nebhit.ogg'
attack_verb_off = list("tapped", "poked")
throw_speed = 3
throw_range = 5
sharpness = IS_SHARP
- embedding = list("embedded_pain_multiplier" = 6, "embed_chance" = 40, "embedded_fall_chance" = 10)
- armour_penetration = 0
- block_chance = 60
+ embedding = list("embedded_pain_multiplier" = 6, "embed_chance" = 20, "embedded_fall_chance" = 60)
+ armour_penetration = 10
+ block_chance = 35
light_color = "#37FFF7"
actions_types = list()
@@ -217,14 +219,14 @@
w_class = WEIGHT_CLASS_SMALL
var/w_class_on = WEIGHT_CLASS_BULKY
force_unwielded = 3
- force_wielded = 40
+ force_wielded = 30
wieldsound = 'sound/weapons/nebon.ogg'
unwieldsound = 'sound/weapons/neboff.ogg'
hitsound = "swing_hit"
- armour_penetration = 40
+ armour_penetration = 10
light_color = "#37FFF7"
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "destroyed", "ripped", "devastated", "shredded")
- block_chance = 75
+ block_chance = 25
max_integrity = 200
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 70)
resistance_flags = FIRE_PROOF
@@ -390,8 +392,9 @@
which utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable. \
It appears to have a wooden grip and a shaved down guard."
icon_state = "cxsword_hilt_traitor"
+ force_on = 30
armour_penetration = 35
- embedding = list("embedded_pain_multiplier" = 10, "embed_chance" = 70, "embedded_fall_chance" = 0)
+ embedding = list("embedded_pain_multiplier" = 10, "embed_chance" = 75, "embedded_fall_chance" = 0, "embedded_impact_pain_multiplier" = 10)
block_chance = 50
hitsound_on = 'sound/weapons/blade1.ogg'
light_color = "#37F0FF"
diff --git a/tgstation.dme b/tgstation.dme
index 169897937d..b52ba0bc2f 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2614,6 +2614,7 @@
#include "modular_citadel\code\game\machinery\Sleeper.dm"
#include "modular_citadel\code\game\machinery\toylathe.dm"
#include "modular_citadel\code\game\machinery\vending.dm"
+#include "modular_citadel\code\game\machinery\wishgranter.dm"
#include "modular_citadel\code\game\machinery\computer\card.dm"
#include "modular_citadel\code\game\objects\ids.dm"
#include "modular_citadel\code\game\objects\items.dm"