mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-22 15:31:51 +00:00
* starts it * Update magic_tarot.dm * MORE PROGRESS * So many thanks to Cloudbucket, for sprites * The Work, the Art, continues. * more changes * pushes the Work foward. All cards done. * and more thanks github * adds to BSH * tochat * Finishes QWERTYTODO. Magic key. World smoke * Isaac and his mother lived alone in a small house on a hill. Isaac kept to himself, drawing pictures and playing with his toys as his mom watched Christian broadcasts on the television. Life was simple, and they were both happy. That was, until the day Isaac’s mom heard a voice from above. “Your son has become corrupted by sin. He needs to be saved.” “I will do my best to save him, my Lord,” Isaac’s mother replied, rushing into Isaac’s room, removing all that was evil from his life. Again the voice called to her, "Isaac’s soul is still corrupt. He needs to be cut off from all that is evil in this world and confess his sins." “I will follow your instructions, Lord. I have faith in thee,” Isaac’s mother replied, as she locked Isaac in his room, away from the evils of the world. One last time, Isaac’s mom heard the voice of God calling to her. “You've done as I've asked, but I still question your devotion to me. To prove your faith, I will ask one more thing of you." "Yes Lord, anything!” Isaac’s mother begged. "To prove your love and devotion, I require a sacrifice. Your son, Isaac, will be this sacrifice. Go into his room and end his life, as an offering to me to prove you love me above all else." "Yes Lord", she replied, grabbing a butcher’s knife from the kitchen. Isaac, watching through a crack in his door, trembled in fear. Scrambling around his room to find a hiding place, he noticed a trap door to the basement hidden under his rug. Without hesitation, he flung open the hatch, just as his mother burst through his door, and threw himself down into the unknown depths below. * nanny bag it before I forget * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * returns early * Apply suggestions from code review Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> * RE-RE-RE-REVIEW * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: synthtee <127706731+SynthTwo@users.noreply.github.com> * requested changes and such * duh * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * returns early * Update code/datums/status_effects/buffs.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * new hrefs here to troll CI :trollface: * Update code/game/gamemodes/wizard/magic_tarot.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> --------- Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: synthtee <127706731+SynthTwo@users.noreply.github.com>
187 lines
6.7 KiB
Plaintext
187 lines
6.7 KiB
Plaintext
//In this file: Summon Magic/Summon Guns/Summon Events
|
|
|
|
// 1 in 50 chance of getting something really special.
|
|
#define SPECIALIST_MAGIC_PROB 2
|
|
|
|
GLOBAL_LIST_INIT(summoned_guns, list(
|
|
/obj/item/gun/energy/disabler,
|
|
/obj/item/gun/energy/gun,
|
|
/obj/item/gun/energy/gun/advtaser,
|
|
/obj/item/gun/energy/laser,
|
|
/obj/item/gun/projectile/revolver,
|
|
/obj/item/gun/energy/detective,
|
|
/obj/item/gun/projectile/automatic/pistol/deagle/camo,
|
|
/obj/item/gun/projectile/automatic/gyropistol,
|
|
/obj/item/gun/energy/pulse,
|
|
/obj/item/gun/projectile/automatic/pistol,
|
|
/obj/item/gun/projectile/revolver/doublebarrel,
|
|
/obj/item/gun/projectile/shotgun,
|
|
/obj/item/gun/projectile/shotgun/automatic/combat,
|
|
/obj/item/gun/projectile/automatic/ar,
|
|
/obj/item/gun/projectile/revolver/mateba,
|
|
/obj/item/gun/projectile/shotgun/boltaction,
|
|
/obj/item/gun/projectile/automatic/mini_uzi,
|
|
/obj/item/gun/energy/lasercannon,
|
|
/obj/item/gun/energy/kinetic_accelerator/crossbow/large,
|
|
/obj/item/gun/energy/gun/nuclear,
|
|
/obj/item/gun/projectile/automatic/proto,
|
|
/obj/item/gun/projectile/automatic/c20r,
|
|
/obj/item/gun/projectile/automatic/l6_saw,
|
|
/obj/item/gun/projectile/automatic/m90,
|
|
/obj/item/gun/energy/alien,
|
|
/obj/item/gun/energy/pulse/carbine,
|
|
/obj/item/gun/energy/decloner,
|
|
/obj/item/gun/energy/mindflayer,
|
|
/obj/item/gun/energy/kinetic_accelerator,
|
|
/obj/item/gun/energy/plasmacutter/adv,
|
|
/obj/item/gun/energy/wormhole_projector,
|
|
/obj/item/gun/projectile/automatic/wt550,
|
|
/obj/item/gun/projectile/automatic/shotgun/bulldog,
|
|
/obj/item/gun/projectile/revolver/grenadelauncher,
|
|
/obj/item/gun/projectile/revolver/golden,
|
|
/obj/item/gun/projectile/automatic/sniper_rifle,
|
|
/obj/item/gun/medbeam,
|
|
/obj/item/gun/energy/laser/scatter,
|
|
/obj/item/gun/projectile/automatic/c20r/toy/riot,
|
|
/obj/item/gun/projectile/shotgun/automatic/dual_tube,
|
|
/obj/item/gun/energy/kinetic_accelerator/experimental, // even with atmos, this thing can get scary
|
|
/obj/item/gun/energy/emitter,
|
|
/obj/item/gun/energy/spikethrower,
|
|
/obj/item/gun/energy/bsg/prebuilt,
|
|
/obj/item/gun/energy/xray,
|
|
/obj/item/gun/energy/plasma_pistol,
|
|
/obj/item/gun/projectile/automatic/pistol/APS, // whyyy is this capitalized
|
|
/obj/item/gun/projectile/revolver/overgrown,
|
|
/obj/item/gun/energy/gun/blueshield/pdw9,
|
|
/obj/item/gun/energy/disabler/silencer,
|
|
/obj/item/gun/energy/lwap,
|
|
/obj/item/gun/energy/arc_revolver,
|
|
/obj/item/gun/projectile/automatic/ak814))
|
|
|
|
//if you add anything that isn't covered by the typepaths below, add it to summon_magic_objective_types
|
|
GLOBAL_LIST_INIT(summoned_magic, list(
|
|
/obj/item/spellbook/oneuse/fireball,
|
|
/obj/item/spellbook/oneuse/smoke,
|
|
/obj/item/spellbook/oneuse/blind,
|
|
/obj/item/spellbook/oneuse/mindswap,
|
|
/obj/item/spellbook/oneuse/forcewall,
|
|
/obj/item/spellbook/oneuse/knock,
|
|
/obj/item/spellbook/oneuse/horsemask,
|
|
/obj/item/spellbook/oneuse/charge,
|
|
/obj/item/spellbook/oneuse/summonitem,
|
|
/obj/item/gun/magic/wand,
|
|
/obj/item/gun/magic/wand/resurrection,
|
|
/obj/item/gun/magic/wand/teleport,
|
|
/obj/item/gun/magic/wand/door,
|
|
/obj/item/gun/magic/wand/fireball,
|
|
/obj/item/gun/magic/staff/healing,
|
|
/obj/item/gun/magic/staff/door,
|
|
/obj/item/scrying,
|
|
/obj/item/clothing/suit/space/hardsuit/wizard,
|
|
/obj/item/immortality_talisman,
|
|
/obj/item/melee/ghost_sword,
|
|
/obj/item/tarot_card_pack,
|
|
/obj/item/tarot_card_pack/jumbo))
|
|
|
|
GLOBAL_LIST_INIT(summoned_special_magic, list(
|
|
/obj/item/gun/magic/staff/animate,
|
|
/obj/item/storage/belt/wands/full,
|
|
/obj/item/contract,
|
|
/obj/item/gun/magic/staff/chaos,
|
|
/obj/item/necromantic_stone,
|
|
/obj/item/blood_contract,
|
|
/obj/item/tarot_generator))
|
|
|
|
//everything above except for single use spellbooks, because they are counted separately (and are for basic bitches anyways)
|
|
GLOBAL_LIST_INIT(summoned_magic_objectives, list(
|
|
/obj/item/contract,
|
|
/obj/item/blood_contract,
|
|
/obj/item/clothing/suit/space/hardsuit/wizard,
|
|
/obj/item/gun/magic,
|
|
/obj/item/immortality_talisman,
|
|
/obj/item/melee/ghost_sword,
|
|
/obj/item/necromantic_stone,
|
|
/obj/item/scrying,
|
|
/obj/item/spellbook,
|
|
/obj/item/storage/belt/wands/full,
|
|
/obj/item/tarot_generator))
|
|
|
|
// If true, it's the probability of triggering "survivor" antag.
|
|
GLOBAL_VAR_INIT(summon_guns_triggered, FALSE)
|
|
GLOBAL_VAR_INIT(summon_magic_triggered, FALSE)
|
|
|
|
/proc/give_guns(mob/living/carbon/human/H)
|
|
if(H.stat == DEAD || !(H.client))
|
|
return
|
|
if(H.mind)
|
|
if(iswizard(H) || H.mind.offstation_role)
|
|
return
|
|
|
|
if(prob(GLOB.summon_guns_triggered) && !(H.mind in SSticker.mode.traitors))
|
|
SSticker.mode.traitors += H.mind
|
|
|
|
H.mind.add_antag_datum(/datum/antagonist/survivalist/guns)
|
|
H.create_attack_log("<font color='red'>was made into a survivalist, and trusts no one!</font>")
|
|
H.create_log(CONVERSION_LOG, "was made into a survivalist")
|
|
|
|
var/gun_type = pick(GLOB.summoned_guns)
|
|
var/obj/item/gun/G = new gun_type(get_turf(H))
|
|
playsound(get_turf(H),'sound/magic/summon_guns.ogg', 50, TRUE)
|
|
|
|
var/in_hand = H.put_in_hands(G) // not always successful
|
|
|
|
to_chat(H, "<span class='warning'>\A [G] appears [in_hand ? "in your hand" : "at your feet"]!</span>")
|
|
|
|
/proc/give_magic(mob/living/carbon/human/H)
|
|
if(H.stat == DEAD || !(H.client))
|
|
return
|
|
if(H.mind)
|
|
if(iswizard(H) || H.mind.offstation_role)
|
|
return
|
|
|
|
if(prob(GLOB.summon_magic_triggered) && !(H.mind in SSticker.mode.traitors) && !jobban_isbanned(H, ROLE_SYNDICATE))
|
|
SSticker.mode.traitors += H.mind
|
|
|
|
H.mind.add_antag_datum(/datum/antagonist/survivalist/magic)
|
|
H.create_attack_log("<font color='red'>was made into a survivalist, and trusts no one!</font>")
|
|
H.create_log(CONVERSION_LOG, "was made into a survivalist")
|
|
|
|
var/magic_type = pick(GLOB.summoned_magic)
|
|
var/lucky = FALSE
|
|
if(prob(SPECIALIST_MAGIC_PROB))
|
|
magic_type = pick(GLOB.summoned_special_magic)
|
|
lucky = TRUE
|
|
|
|
var/obj/item/M = new magic_type(get_turf(H))
|
|
playsound(get_turf(H),'sound/magic/summon_magic.ogg', 50, TRUE)
|
|
|
|
var/in_hand = H.put_in_hands(M)
|
|
|
|
to_chat(H, "<span class='warning'>\A [M] appears [in_hand ? "in your hand" : "at your feet"]!</span>")
|
|
if(lucky)
|
|
to_chat(H, "<span class='notice'>You feel incredibly lucky.</span>")
|
|
|
|
/proc/rightandwrong(summon_type, mob/user, survivor_probability)
|
|
if(user) //in this case either someone holding a spellbook or a badmin
|
|
to_chat(user, "<span class='warning'>You summoned [summon_type]!</span>")
|
|
message_admins("[ADMIN_LOOKUPFLW(user)] summoned [summon_type]!")
|
|
log_game("[key_name(user)] summoned [summon_type]!")
|
|
|
|
if(summon_type == SUMMON_MAGIC)
|
|
GLOB.summon_magic_triggered = survivor_probability
|
|
else if(summon_type == SUMMON_GUNS)
|
|
GLOB.summon_guns_triggered = survivor_probability
|
|
else
|
|
CRASH("Bad summon_type given: [summon_type]")
|
|
|
|
for(var/mob/living/carbon/human/H in GLOB.player_list)
|
|
var/turf/T = get_turf(H)
|
|
if(T && is_away_level(T.z))
|
|
continue
|
|
if(summon_type == SUMMON_MAGIC)
|
|
give_magic(H)
|
|
else
|
|
give_guns(H)
|
|
|
|
#undef SPECIALIST_MAGIC_PROB
|