mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-14 00:23:29 +01:00
Maintainers Have No Sense of Right or Wrong (#12381)
This commit is contained in:
committed by
variableundefined
parent
a185a1e537
commit
3eb4ad0ed5
@@ -417,3 +417,6 @@
|
||||
#define ENGTYPE_SING "Singularity"
|
||||
#define ENGTYPE_SM "Supermatter"
|
||||
#define ENGTYPE_TESLA "Tesla"
|
||||
|
||||
#define SUMMON_GUNS "guns"
|
||||
#define SUMMON_MAGIC "magic"
|
||||
@@ -506,6 +506,54 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/objective/steal_five_of_type
|
||||
explanation_text = "Steal at least five items!"
|
||||
var/list/wanted_items = list()
|
||||
|
||||
/datum/objective/steal_five_of_type/New()
|
||||
..()
|
||||
wanted_items = typecacheof(wanted_items)
|
||||
|
||||
/datum/objective/steal_five_of_type/check_completion()
|
||||
var/stolen_count = 0
|
||||
if(!isliving(owner.current))
|
||||
return FALSE
|
||||
var/list/all_items = owner.current.GetAllContents() //this should get things in cheesewheels, books, etc.
|
||||
for(var/obj/I in all_items) //Check for wanted items
|
||||
if(is_type_in_typecache(I, wanted_items))
|
||||
stolen_count++
|
||||
return stolen_count >= 5
|
||||
|
||||
/datum/objective/steal_five_of_type/summon_guns
|
||||
explanation_text = "Steal at least five guns!"
|
||||
wanted_items = list(/obj/item/gun)
|
||||
|
||||
/datum/objective/steal_five_of_type/summon_magic
|
||||
explanation_text = "Steal at least five magical artefacts!"
|
||||
wanted_items = list()
|
||||
|
||||
/datum/objective/steal_five_of_type/summon_magic/New()
|
||||
wanted_items = GLOB.summoned_magic_objectives
|
||||
..()
|
||||
|
||||
/datum/objective/steal_five_of_type/summon_magic/check_completion()
|
||||
var/stolen_count = 0
|
||||
if(!isliving(owner.current))
|
||||
return FALSE
|
||||
var/list/all_items = owner.current.GetAllContents() //this should get things in cheesewheels, books, etc.
|
||||
for(var/obj/I in all_items) //Check for wanted items
|
||||
if(istype(I, /obj/item/spellbook) && !istype(I, /obj/item/spellbook/oneuse))
|
||||
var/obj/item/spellbook/spellbook = I
|
||||
if(spellbook.uses) //if the book still has powers...
|
||||
stolen_count++ //it counts. nice.
|
||||
if(istype(I, /obj/item/spellbook/oneuse))
|
||||
var/obj/item/spellbook/oneuse/oneuse = I
|
||||
if(!oneuse.used)
|
||||
stolen_count++
|
||||
else if(is_type_in_typecache(I, wanted_items))
|
||||
stolen_count++
|
||||
return stolen_count >= 5
|
||||
|
||||
/datum/objective/blood
|
||||
/datum/objective/blood/proc/gen_amount_goal(low = 150, high = 400)
|
||||
target_amount = rand(low,high)
|
||||
|
||||
@@ -1,170 +1,169 @@
|
||||
//In this file: Summon Magic/Summon Guns/Summon Events
|
||||
|
||||
// 1 in 50 chance of getting something really special.
|
||||
#define SPECIALIST_MAGIC_PROB 2
|
||||
|
||||
/mob/proc/rightandwrong(summon_type, revolver_fight = FALSE, fake_revolver_fight = FALSE) //0 = Summon Guns, 1 = Summon Magic
|
||||
var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car","boltaction","arg","uzi","turret","pulsecarbine","decloner","mindflayer","kinetic","advplasmacutter","wormhole","wt550","grenadelauncher","medibeam", "fakerevolver")
|
||||
var/list/magiclist = list("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge", "summonitem", "wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffhealing", "armor", "scrying", "staffdoor", "special","voodoo","special")
|
||||
var/list/magicspeciallist = list("staffchange","staffanimation", "wandbelt", "contract", "staffchaos","necromantic")
|
||||
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/projectile/revolver/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/gun/turret,
|
||||
/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))
|
||||
|
||||
to_chat(usr, "<B>You summoned [summon_type ? "magic" : "guns"]!</B>")
|
||||
message_admins("[key_name_admin(usr)] summoned [summon_type ? "magic" : "guns"]! ([revolver_fight ? "Revolver duel!" : ""] [fake_revolver_fight ? "Suicidal revolver duel!" : ""])")
|
||||
//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/death,
|
||||
/obj/item/gun/magic/wand/resurrection,
|
||||
/obj/item/gun/magic/wand/polymorph,
|
||||
/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/voodoo,
|
||||
/obj/item/clothing/suit/space/hardsuit/wizard,
|
||||
/obj/item/immortality_talisman,
|
||||
/obj/item/melee/ghost_sword))
|
||||
|
||||
GLOBAL_LIST_INIT(summoned_special_magic, list(
|
||||
/obj/item/gun/magic/staff/change,
|
||||
/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))
|
||||
|
||||
//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/voodoo))
|
||||
|
||||
// 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))
|
||||
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>")
|
||||
|
||||
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))
|
||||
return
|
||||
|
||||
if(prob(GLOB.summon_magic_triggered) && !(H.mind in SSticker.mode.traitors))
|
||||
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>")
|
||||
|
||||
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)
|
||||
if(H.stat == 2 || !(H.client))
|
||||
var/turf/T = get_turf(H)
|
||||
if(T && is_away_level(T.z))
|
||||
continue
|
||||
if(H.mind)
|
||||
if(H.mind.special_role == SPECIAL_ROLE_WIZARD || H.mind.special_role == SPECIAL_ROLE_WIZARD_APPRENTICE)
|
||||
continue
|
||||
var/randomizeguns = pick(gunslist)
|
||||
var/randomizemagic = pick(magiclist)
|
||||
var/randomizemagicspecial = pick(magicspeciallist)
|
||||
if(revolver_fight)
|
||||
randomizeguns = "revolver"
|
||||
if(fake_revolver_fight)
|
||||
if(prob(50))
|
||||
randomizeguns = "revolver"
|
||||
else
|
||||
randomizeguns = "fakerevolver"
|
||||
if(!summon_type)
|
||||
switch(randomizeguns)
|
||||
if("taser")
|
||||
new /obj/item/gun/energy/gun/advtaser(get_turf(H))
|
||||
if("egun")
|
||||
new /obj/item/gun/energy/gun(get_turf(H))
|
||||
if("laser")
|
||||
new /obj/item/gun/energy/laser(get_turf(H))
|
||||
if("revolver")
|
||||
new /obj/item/gun/projectile/revolver(get_turf(H))
|
||||
if("detective")
|
||||
new /obj/item/gun/projectile/revolver/detective(get_turf(H))
|
||||
if("deagle")
|
||||
new /obj/item/gun/projectile/automatic/pistol/deagle/camo(get_turf(H))
|
||||
if("gyrojet")
|
||||
new /obj/item/gun/projectile/automatic/gyropistol(get_turf(H))
|
||||
if("pulse")
|
||||
new /obj/item/gun/energy/pulse(get_turf(H))
|
||||
if("suppressed")
|
||||
new /obj/item/gun/projectile/automatic/pistol(get_turf(H))
|
||||
new /obj/item/suppressor(get_turf(H))
|
||||
if("doublebarrel")
|
||||
new /obj/item/gun/projectile/revolver/doublebarrel(get_turf(H))
|
||||
if("shotgun")
|
||||
new /obj/item/gun/projectile/shotgun(get_turf(H))
|
||||
if("combatshotgun")
|
||||
new /obj/item/gun/projectile/shotgun/automatic/combat(get_turf(H))
|
||||
if("arg")
|
||||
new /obj/item/gun/projectile/automatic/ar(get_turf(H))
|
||||
if("mateba")
|
||||
new /obj/item/gun/projectile/revolver/mateba(get_turf(H))
|
||||
if("boltaction")
|
||||
new /obj/item/gun/projectile/shotgun/boltaction(get_turf(H))
|
||||
if("uzi")
|
||||
new /obj/item/gun/projectile/automatic/mini_uzi(get_turf(H))
|
||||
if("cannon")
|
||||
new /obj/item/gun/energy/lasercannon(get_turf(H))
|
||||
if("crossbow")
|
||||
new /obj/item/gun/energy/kinetic_accelerator/crossbow/large(get_turf(H))
|
||||
if("nuclear")
|
||||
new /obj/item/gun/energy/gun/nuclear(get_turf(H))
|
||||
if("sabr")
|
||||
new /obj/item/gun/projectile/automatic/proto(get_turf(H))
|
||||
if("bulldog")
|
||||
new /obj/item/gun/projectile/automatic/shotgun/bulldog(get_turf(H))
|
||||
if("c20r")
|
||||
new /obj/item/gun/projectile/automatic/c20r(get_turf(H))
|
||||
if("saw")
|
||||
new /obj/item/gun/projectile/automatic/l6_saw(get_turf(H))
|
||||
if("car")
|
||||
new /obj/item/gun/projectile/automatic/m90(get_turf(H))
|
||||
if("turret")
|
||||
new /obj/item/gun/energy/gun/turret(get_turf(H))
|
||||
if("pulsecarbine")
|
||||
new /obj/item/gun/energy/pulse/carbine(get_turf(H))
|
||||
if("decloner")
|
||||
new /obj/item/gun/energy/decloner(get_turf(H))
|
||||
if("mindflayer")
|
||||
new /obj/item/gun/energy/mindflayer(get_turf(H))
|
||||
if("kinetic")
|
||||
new /obj/item/gun/energy/kinetic_accelerator(get_turf(H))
|
||||
if("advplasmacutter")
|
||||
new /obj/item/gun/energy/plasmacutter/adv(get_turf(H))
|
||||
if("wormhole")
|
||||
new /obj/item/gun/energy/wormhole_projector(get_turf(H))
|
||||
if("wt550")
|
||||
new /obj/item/gun/projectile/automatic/wt550(get_turf(H))
|
||||
if("grenadelauncher")
|
||||
new /obj/item/gun/projectile/revolver/grenadelauncher(get_turf(H))
|
||||
if("medibeam")
|
||||
new /obj/item/gun/medbeam(get_turf(H))
|
||||
if("fakerevolver")
|
||||
new /obj/item/toy/russian_revolver/trick_revolver(get_turf(H)) //lol
|
||||
|
||||
playsound(get_turf(H), 'sound/magic/summon_guns.ogg', 50, 1)
|
||||
if(summon_type == SUMMON_MAGIC)
|
||||
give_magic(H)
|
||||
else
|
||||
switch(randomizemagic)
|
||||
if("fireball")
|
||||
new /obj/item/spellbook/oneuse/fireball(get_turf(H))
|
||||
if("smoke")
|
||||
new /obj/item/spellbook/oneuse/smoke(get_turf(H))
|
||||
if("blind")
|
||||
new /obj/item/spellbook/oneuse/blind(get_turf(H))
|
||||
if("mindswap")
|
||||
new /obj/item/spellbook/oneuse/mindswap(get_turf(H))
|
||||
if("forcewall")
|
||||
new /obj/item/spellbook/oneuse/forcewall(get_turf(H))
|
||||
if("knock")
|
||||
new /obj/item/spellbook/oneuse/knock(get_turf(H))
|
||||
if("horsemask")
|
||||
new /obj/item/spellbook/oneuse/horsemask(get_turf(H))
|
||||
if("charge")
|
||||
new /obj/item/spellbook/oneuse/charge(get_turf(H))
|
||||
if("summonitem")
|
||||
new /obj/item/spellbook/oneuse/summonitem(get_turf(H))
|
||||
if("wandnothing")
|
||||
new /obj/item/gun/magic/wand(get_turf(H))
|
||||
if("wanddeath")
|
||||
new /obj/item/gun/magic/wand/death(get_turf(H))
|
||||
if("wandresurrection")
|
||||
new /obj/item/gun/magic/wand/resurrection(get_turf(H))
|
||||
if("wandpolymorph")
|
||||
new /obj/item/gun/magic/wand/polymorph(get_turf(H))
|
||||
if("wandteleport")
|
||||
new /obj/item/gun/magic/wand/teleport(get_turf(H))
|
||||
if("wanddoor")
|
||||
new /obj/item/gun/magic/wand/door(get_turf(H))
|
||||
if("wandfireball")
|
||||
new /obj/item/gun/magic/wand/fireball(get_turf(H))
|
||||
if("staffhealing")
|
||||
new /obj/item/gun/magic/staff/healing(get_turf(H))
|
||||
if("staffdoor")
|
||||
new /obj/item/gun/magic/staff/door(get_turf(H))
|
||||
if("armor")
|
||||
new /obj/item/clothing/suit/space/hardsuit/wizard(get_turf(H))
|
||||
if("scrying")
|
||||
new /obj/item/scrying(get_turf(H))
|
||||
if(!(XRAY in H.mutations))
|
||||
H.mutations.Add(XRAY)
|
||||
H.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
|
||||
H.see_in_dark = 8
|
||||
H.lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
H.update_sight()
|
||||
to_chat(H, "<span class='notice'>The walls suddenly disappear.</span>")
|
||||
if("voodoo")
|
||||
new /obj/item/voodoo(get_turf(H))
|
||||
if("special")
|
||||
magiclist -= "special" //only one super OP item per summoning max
|
||||
switch(randomizemagicspecial)
|
||||
if("staffchange")
|
||||
new /obj/item/gun/magic/staff/change(get_turf(H))
|
||||
if("staffanimation")
|
||||
new /obj/item/gun/magic/staff/animate(get_turf(H))
|
||||
if("wandbelt")
|
||||
new /obj/item/storage/belt/wands/full(get_turf(H))
|
||||
if("contract")
|
||||
new /obj/item/contract(get_turf(H))
|
||||
if("staffchaos")
|
||||
new /obj/item/gun/magic/staff/chaos(get_turf(H))
|
||||
if("necromantic")
|
||||
new /obj/item/necromantic_stone(get_turf(H))
|
||||
to_chat(H, "<span class='notice'>You suddenly feel lucky.</span>")
|
||||
|
||||
playsound(get_turf(H), 'sound/magic/summon_magic.ogg', 50, 1)
|
||||
give_guns(H)
|
||||
@@ -295,11 +295,11 @@
|
||||
/datum/spellbook_entry/summon
|
||||
name = "Summon Stuff"
|
||||
category = "Rituals"
|
||||
refundable = 0
|
||||
refundable = FALSE
|
||||
buy_word = "Cast"
|
||||
var/active = 0
|
||||
var/active = FALSE
|
||||
|
||||
/datum/spellbook_entry/summon/CanBuy(var/mob/living/carbon/human/user,var/obj/item/spellbook/book)
|
||||
/datum/spellbook_entry/summon/CanBuy(mob/living/carbon/human/user, obj/item/spellbook/book)
|
||||
return ..() && !active
|
||||
|
||||
/datum/spellbook_entry/summon/GetInfo()
|
||||
@@ -337,8 +337,7 @@
|
||||
|
||||
/datum/spellbook_entry/summon/guns
|
||||
name = "Summon Guns"
|
||||
desc = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill you. Just be careful not to stand still too long! You will also receive 1 extra point to use in your spellbook."
|
||||
cost = 0
|
||||
desc = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill you. There is a good chance that they will shoot each other first."
|
||||
log_name = "SG"
|
||||
|
||||
/datum/spellbook_entry/summon/guns/IsSpellAvailable()
|
||||
@@ -349,18 +348,17 @@
|
||||
else
|
||||
return TRUE
|
||||
|
||||
/datum/spellbook_entry/summon/guns/Buy(var/mob/living/carbon/human/user,var/obj/item/spellbook/book)
|
||||
/datum/spellbook_entry/summon/guns/Buy(mob/living/carbon/human/user, obj/item/spellbook/book)
|
||||
feedback_add_details("wizard_spell_learned", log_name)
|
||||
user.rightandwrong(0)
|
||||
book.uses += 1
|
||||
active = 1
|
||||
to_chat(user, "<span class='notice'>You have cast summon guns and gained an extra charge for your spellbook.</span>")
|
||||
return 1
|
||||
rightandwrong(SUMMON_GUNS, user, 10)
|
||||
active = TRUE
|
||||
playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, TRUE)
|
||||
to_chat(user, "<span class='notice'>You have cast summon guns!</span>")
|
||||
return TRUE
|
||||
|
||||
/datum/spellbook_entry/summon/magic
|
||||
name = "Summon Magic"
|
||||
desc = "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time. You will also receive 1 extra point to use in your spellbook."
|
||||
cost = 0
|
||||
desc = "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time."
|
||||
log_name = "SU"
|
||||
|
||||
/datum/spellbook_entry/summon/magic/IsSpellAvailable()
|
||||
@@ -371,13 +369,13 @@
|
||||
else
|
||||
return TRUE
|
||||
|
||||
/datum/spellbook_entry/summon/magic/Buy(var/mob/living/carbon/human/user,var/obj/item/spellbook/book)
|
||||
/datum/spellbook_entry/summon/magic/Buy(mob/living/carbon/human/user, obj/item/spellbook/book)
|
||||
feedback_add_details("wizard_spell_learned", log_name)
|
||||
user.rightandwrong(1)
|
||||
book.uses += 1
|
||||
active = 1
|
||||
to_chat(user, "<span class='notice'>You have cast summon magic and gained an extra charge for your spellbook.</span>")
|
||||
return 1
|
||||
rightandwrong(SUMMON_MAGIC, user, 10)
|
||||
active = TRUE
|
||||
playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, TRUE)
|
||||
to_chat(user, "<span class='notice'>You have cast summon magic!</span>")
|
||||
return TRUE
|
||||
|
||||
//Main category - Magical Items
|
||||
/datum/spellbook_entry/item
|
||||
|
||||
@@ -113,9 +113,7 @@
|
||||
<A href='?src=[UID()];secretsfun=schoolgirl'>Japanese Animes Mode</A>
|
||||
<A href='?src=[UID()];secretsfun=eagles'>Egalitarian Station Mode</A><BR>
|
||||
<A href='?src=[UID()];secretsfun=guns'>Summon Guns</A>
|
||||
<A href='?src=[UID()];secretsfun=magic'>Summon Magic</A>
|
||||
<A href='?src=[UID()];secretsfun=revolver'>Summon Revolver Duel</A>
|
||||
<A href='?src=[UID()];secretsfun=fakerevolver'>Summon Suicidal Revolver Duel</A>
|
||||
<A href='?src=[UID()];secretsfun=magic'>Summon Magic</A>
|
||||
<BR>
|
||||
<A href='?src=[UID()];secretsfun=rolldice'>Roll the Dice</A><BR>
|
||||
<BR>
|
||||
|
||||
+17
-11
@@ -37,7 +37,7 @@
|
||||
return
|
||||
var/ticketID = text2num(href_list["openmentorticket"])
|
||||
SSmentor_tickets.showDetailUI(usr, ticketID)
|
||||
|
||||
|
||||
if(href_list["stickyban"])
|
||||
stickyban(href_list["stickyban"],href_list)
|
||||
|
||||
@@ -2860,19 +2860,25 @@
|
||||
if("guns")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","SG")
|
||||
usr.rightandwrong(FALSE)
|
||||
var/survivor_probability = 0
|
||||
switch(alert("Do you want this to create survivors antagonists?", , "No Antags", "Some Antags", "All Antags!"))
|
||||
if("Some Antags")
|
||||
survivor_probability = 25
|
||||
if("All Antags!")
|
||||
survivor_probability = 100
|
||||
|
||||
rightandwrong(SUMMON_GUNS, usr, survivor_probability)
|
||||
if("magic")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","SM")
|
||||
usr.rightandwrong(TRUE)
|
||||
if("revolver")
|
||||
feedback_inc("admin_secrets_fun_used", 1)
|
||||
feedback_add_details("admin_secrets_fun_used", "SRD")
|
||||
usr.rightandwrong(FALSE, revolver_fight = TRUE)
|
||||
if("fakerevolver")
|
||||
feedback_inc("admin_secrets_fun_used", 1)
|
||||
feedback_add_details("admin_secrets_fun_used", "SFD")
|
||||
usr.rightandwrong(FALSE, fake_revolver_fight = TRUE)
|
||||
var/survivor_probability = 0
|
||||
switch(alert("Do you want this to create survivors antagonists?", , "No Antags", "Some Antags", "All Antags!"))
|
||||
if("Some Antags")
|
||||
survivor_probability = 25
|
||||
if("All Antags!")
|
||||
survivor_probability = 100
|
||||
|
||||
rightandwrong(SUMMON_MAGIC, usr, survivor_probability)
|
||||
if("tdomereset")
|
||||
var/delete_mobs = alert("Clear all mobs?","Confirm","Yes","No","Cancel")
|
||||
if(delete_mobs == "Cancel")
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
/datum/antagonist/survivalist
|
||||
name = "Survivalist"
|
||||
var/greet_message = ""
|
||||
|
||||
/datum/antagonist/survivalist/proc/forge_objectives()
|
||||
var/datum/objective/survive/survive = new
|
||||
survive.owner = owner
|
||||
objectives += survive
|
||||
owner.objectives |= objectives
|
||||
|
||||
/datum/antagonist/survivalist/on_gain()
|
||||
owner.special_role = "survivalist"
|
||||
forge_objectives()
|
||||
. = ..()
|
||||
|
||||
/datum/antagonist/survivalist/greet()
|
||||
to_chat(owner.current, "<B>You are the survivalist! [greet_message]</B>")
|
||||
owner.announce_objectives()
|
||||
|
||||
/datum/antagonist/survivalist/guns
|
||||
greet_message = "Your own safety matters above all else, and the only way to ensure your safety is to stockpile weapons! Grab as many guns as possible, by any means necessary. Kill anyone who gets in your way."
|
||||
|
||||
/datum/antagonist/survivalist/guns/forge_objectives()
|
||||
var/datum/objective/steal_five_of_type/summon_guns/guns = new
|
||||
guns.owner = owner
|
||||
objectives += guns
|
||||
..()
|
||||
|
||||
/datum/antagonist/survivalist/magic
|
||||
name = "Amateur Magician"
|
||||
greet_message = "Grow your newfound talent! Grab as many magical artefacts as possible, by any means necessary. Kill anyone who gets in your way."
|
||||
|
||||
/datum/antagonist/survivalist/magic/greet()
|
||||
..()
|
||||
to_chat(owner.current, "<span class='notice'>As a wonderful magician, you should remember that spellbooks don't mean anything if they are used up.</span>")
|
||||
|
||||
/datum/antagonist/survivalist/magic/forge_objectives()
|
||||
var/datum/objective/steal_five_of_type/summon_magic/magic = new
|
||||
magic.owner = owner
|
||||
objectives += magic
|
||||
..()
|
||||
@@ -379,6 +379,11 @@
|
||||
AnnounceArrival(character, rank, join_message)
|
||||
AddEmploymentContract(character)
|
||||
|
||||
if(GLOB.summon_guns_triggered)
|
||||
give_guns(character)
|
||||
if(GLOB.summon_magic_triggered)
|
||||
give_magic(character)
|
||||
|
||||
if(!thisjob.is_position_available() && thisjob in SSjobs.prioritized_jobs)
|
||||
SSjobs.prioritized_jobs -= thisjob
|
||||
qdel(src)
|
||||
|
||||
@@ -1236,6 +1236,7 @@
|
||||
#include "code\modules\antagonists\_common\antag_hud.dm"
|
||||
#include "code\modules\antagonists\_common\antag_spawner.dm"
|
||||
#include "code\modules\antagonists\_common\antag_team.dm"
|
||||
#include "code\modules\antagonists\survivalist\survivalist.dm"
|
||||
#include "code\modules\antagonists\wishgranter\wishgranter.dm"
|
||||
#include "code\modules\arcade\arcade_base.dm"
|
||||
#include "code\modules\arcade\arcade_prize.dm"
|
||||
|
||||
Reference in New Issue
Block a user