mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 21:18:37 +01:00
Update to HOG and stuffs
This commit is contained in:
@@ -316,6 +316,18 @@ var/global/list/global_handofgod_structuretypes = list()
|
||||
return 1
|
||||
|
||||
|
||||
/mob/camera/god/proc/is_handofgod_myfollowers(A)
|
||||
if(!ishuman(A))
|
||||
return 0
|
||||
var/mob/living/carbon/human/H = A
|
||||
if(!H.mind)
|
||||
return 0
|
||||
if(side == "red")
|
||||
if(H.mind in ticker.mode.red_deity_prophets|ticker.mode.red_deity_followers)
|
||||
return 1
|
||||
else if(side == "blue")
|
||||
if(H.mind in ticker.mode.blue_deity_prophets|ticker.mode.blue_deity_followers)
|
||||
return 1
|
||||
|
||||
//////////////////////
|
||||
//Roundend Reporting//
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
icon_state = "marker"
|
||||
invisibility = 60
|
||||
see_in_dark = 0
|
||||
see_invisible = 55
|
||||
sight = SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF
|
||||
languages = HUMAN | MONKEY | ALIEN | ROBOT | SLIME | DRONE | SWARMER
|
||||
hud_possible = list(ANTAG_HUD)
|
||||
@@ -22,7 +23,8 @@
|
||||
var/list/conduits = list()
|
||||
var/prophets_sacrificed_in_name = 0
|
||||
var/image/ghostimage = null //For observer with darkness off visiblity
|
||||
var/list/prophet_hats = list()
|
||||
var/list/prophets = list()
|
||||
var/datum/action/innate/godspeak/speak2god
|
||||
|
||||
/mob/camera/god/New()
|
||||
..()
|
||||
@@ -51,10 +53,8 @@
|
||||
for(var/datum/mind/F in followers)
|
||||
if(F.current)
|
||||
F.current << "<span class='danger'>Your god is DEAD!</span>"
|
||||
for(var/X in prophet_hats)
|
||||
var/obj/item/clothing/head/helmet/plate/crusader/prophet/P = X
|
||||
if(P.speak2god && P.speak2god.god == src)
|
||||
qdel(P.speak2god)
|
||||
for(var/X in prophets)
|
||||
speak2god.Remove(X)
|
||||
ghost_darkness_images -= ghostimage
|
||||
updateallghostimages()
|
||||
return ..()
|
||||
@@ -200,7 +200,7 @@
|
||||
var/rendered = "<font color='#045FB4'><i><span class='game say'>Divine Telepathy, <span class='name'>[name]</span> <span class='message'>[msg]</span></span></i></font>"
|
||||
|
||||
for(var/mob/M in mob_list)
|
||||
if(is_handofgod_myprophet(M) || isobserver(M))
|
||||
if(is_handofgod_myfollowers(M) || isobserver(M))
|
||||
M.show_message(rendered, 2)
|
||||
src << rendered
|
||||
|
||||
|
||||
@@ -137,43 +137,36 @@
|
||||
armor = list(melee = 60, bullet = 60, laser = 60, energy = 50, bomb = 70, bio = 50, rad = 50) //religion protects you from disease and radiation, honk.
|
||||
worn_x_dimension = 64
|
||||
worn_y_dimension = 64
|
||||
var/datum/action/innate/godspeak/speak2god
|
||||
var/side = "neither"
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/plate/crusader/prophet/proc/assign_deity(mob/camera/god/G)
|
||||
if(speak2god)
|
||||
if(speak2god.owner)
|
||||
speak2god.Remove(speak2god.owner)
|
||||
else
|
||||
speak2god = new()
|
||||
speak2god.god = G
|
||||
G.prophet_hats += src
|
||||
|
||||
/obj/item/clothing/head/helmet/plate/crusader/prophet/Destroy()
|
||||
if(speak2god)
|
||||
qdel(speak2god)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/head/helmet/plate/crusader/prophet/equipped(mob/user, slot)
|
||||
/obj/item/clothing/head/helmet/plate/crusader/prophet/equipped(mob/living/carbon/user, slot)
|
||||
var/faithful = 0
|
||||
if(slot == slot_head)
|
||||
if(speak2god)
|
||||
speak2god.Grant(user)
|
||||
user << "<span class='boldnotice'>You gain the ability to speak to the god this hat belongs to!</span>"
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/plate/crusader/prophet/dropped(mob/user)
|
||||
if(speak2god)
|
||||
if(speak2god.owner == user)
|
||||
speak2god.Remove(user)
|
||||
user << "<span class='boldnotice'>You lose the ability to speak to the god this hat belongs to!</span>"
|
||||
|
||||
switch(side)
|
||||
if("blue")
|
||||
faithful = is_handofgod_bluecultist(user)
|
||||
if("red")
|
||||
faithful = is_handofgod_redcultist(user)
|
||||
else
|
||||
faithful = 1
|
||||
if(!faithful)
|
||||
user << "<span class='danger'>Your mind is assaulted by a vast power, furious at your desecration!</span>"
|
||||
user.emote("scream")
|
||||
user.adjustFireLoss(10)
|
||||
user.unEquip(src)
|
||||
user.head = null
|
||||
user.update_inv_head()
|
||||
src.screen_loc = null
|
||||
user.Weaken(1)
|
||||
|
||||
/obj/item/clothing/head/helmet/plate/crusader/prophet/red
|
||||
icon_state = "prophet-red"
|
||||
side = "red"
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/plate/crusader/prophet/blue
|
||||
icon_state = "prophet-blue"
|
||||
side = "blue"
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/plate/crusader/prophet/examine(mob/user)
|
||||
@@ -182,8 +175,7 @@
|
||||
user << "A brownish, religious-looking hat."
|
||||
else
|
||||
user << "A hat bestowed upon a prophet of gods and demigods."
|
||||
if(speak2god && speak2god.god)
|
||||
user << "This hat belongs to the [speak2god.god.side] god."
|
||||
user << "This hat belongs to the [side] god."
|
||||
|
||||
|
||||
|
||||
@@ -192,6 +184,8 @@
|
||||
name = "godstaff"
|
||||
icon_state = "godstaff-red"
|
||||
var/mob/camera/god/god = null
|
||||
var/staffcooldown = 0
|
||||
var/staffwait = 30
|
||||
|
||||
/obj/item/weapon/godstaff/examine(mob/user)
|
||||
..()
|
||||
@@ -201,6 +195,29 @@
|
||||
user << "A powerful staff capable of changing the allegiance of god/demigod structures."
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/godstaff/attack_self(mob/living/carbon/user)
|
||||
if(god && !god.is_handofgod_myprophet(user))
|
||||
user << "<span class='danger'>YOU ARE NOT THE CHOSEN ONE!</span>"
|
||||
return
|
||||
if(!(istype(user.head, /obj/item/clothing/head/helmet/plate/crusader/prophet)))
|
||||
user << "<span class='warning'>Your connection to your diety isn't strong enough! You must wear your big hat!</span>"
|
||||
return
|
||||
if(staffcooldown + staffwait > world.time)
|
||||
return
|
||||
user.visible_message("[user] chants deeply and waves their staff")
|
||||
if(do_after(user, 20,1,src))
|
||||
for(var/obj/structure/divine/R in orange(3,user))
|
||||
user.say("Grant us true sight my god!")
|
||||
if(istype(R, /obj/structure/divine/nexus)|| istype(R, /obj/structure/divine/trap))
|
||||
continue
|
||||
R.visible_message("<span class='danger'>[R] suddenly appears!</span>")
|
||||
R.invisibility = 0
|
||||
R.alpha = initial(R.alpha)
|
||||
R.density = initial(R.density)
|
||||
R.activate()
|
||||
staffcooldown = world.time
|
||||
|
||||
/obj/item/weapon/godstaff/red
|
||||
icon_state = "godstaff-red"
|
||||
|
||||
|
||||
@@ -43,9 +43,11 @@
|
||||
var/datum/mind/enemy
|
||||
switch(side)
|
||||
if("red")
|
||||
enemy = ticker.mode.blue_deities[1]
|
||||
if(ticker.mode.blue_deities.len)
|
||||
enemy = ticker.mode.blue_deities[1]
|
||||
if("blue")
|
||||
enemy = ticker.mode.red_deities[1]
|
||||
if(ticker.mode.red_deities.len)
|
||||
enemy = ticker.mode.red_deities[1]
|
||||
|
||||
if(enemy && is_handofgod_god(enemy.current))
|
||||
var/mob/camera/god/enemy_god = enemy.current
|
||||
@@ -117,7 +119,9 @@
|
||||
if(choice && choice.current && choice.current.stat != DEAD)
|
||||
src << "You choose [choice.current] as your prophet."
|
||||
choice.make_Handofgod_prophet(side)
|
||||
|
||||
speak2god = new()
|
||||
speak2god.god = src
|
||||
speak2god.Grant(choice.current)
|
||||
|
||||
//Prophet gear
|
||||
var/mob/living/carbon/human/H = choice.current
|
||||
@@ -134,10 +138,9 @@
|
||||
|
||||
if(popehat)
|
||||
var/obj/item/clothing/head/helmet/plate/crusader/prophet/P = new popehat()
|
||||
P.assign_deity(src)
|
||||
|
||||
H.unEquip(H.head)
|
||||
H << "<span class='boldnotice'>A powerful hat has been bestowed upon your head, you will need to wear this to speak with your god...</span>"
|
||||
H << "<span class='boldnotice'>A powerful hat has been bestowed upon your head, you will need to wear this to utilize your staff fully..</span>"
|
||||
H.equip_to_slot_or_del(P,slot_head)
|
||||
|
||||
if(popestick)
|
||||
@@ -303,3 +306,53 @@
|
||||
|
||||
var/itemtype = item_types[item]
|
||||
new itemtype (get_turf(src))
|
||||
|
||||
|
||||
|
||||
/mob/camera/god/verb/veil_structures()
|
||||
set category = "Deity"
|
||||
set name = "Veil Structures (20)"
|
||||
set desc = "Hide your structures from sight and touch, but prevent yourself from using them."
|
||||
|
||||
if(!ability_cost(20,1,1))
|
||||
return
|
||||
|
||||
src << "You focus your powers and start dragging your influence into the spiritual plane."
|
||||
for(var/mob/M in orange(3,src))//Yes I know this is terrible, but visible message doesnt work for this
|
||||
M << "<span class='warning'>The air begins to shimmer...</span>"
|
||||
if(do_after(src, 30, 0, src))
|
||||
for(var/obj/structure/divine/R in orange(3,src))
|
||||
if(istype(R, /obj/structure/divine/nexus)|| istype(R, /obj/structure/divine/trap)||(src.side != R.side))
|
||||
continue
|
||||
R.visible_message("<span class='danger'>[R] fades away.</span>")
|
||||
R.invisibility = 55
|
||||
R.alpha = 100 //To help ghosts distinguish hidden structures
|
||||
R.density = 0
|
||||
R.deactivate()
|
||||
src << "You hide your influence from view"
|
||||
add_faith(-20)
|
||||
|
||||
|
||||
/mob/camera/god/verb/reveal_structures()
|
||||
set category = "Deity"
|
||||
set name = "Reveal Structures (20)"
|
||||
set desc = "Make your structures visible again and allow them to be used."
|
||||
|
||||
if(!ability_cost(20,1,1))
|
||||
return
|
||||
|
||||
src << "You focus your powers and start dragging your influence into the material plane."
|
||||
for(var/mob/M in orange(3,src))//Yes I know this is terrible, but visible message doesnt work for this
|
||||
M << "<span class='warning'>The air begins to shimmer...</span>"
|
||||
if(do_after(src, 40, 0, src))
|
||||
for(var/obj/structure/divine/R in orange(3,src))
|
||||
if(istype(R, /obj/structure/divine/nexus)|| istype(R, /obj/structure/divine/trap)||(src.side != R.side))
|
||||
continue
|
||||
R.visible_message("<span class='danger'>[R] suddenly appears!</span>")
|
||||
R.invisibility = 0
|
||||
R.alpha = initial(R.alpha)
|
||||
R.density = initial(R.density)
|
||||
R.activate()
|
||||
src << "You bring your influence into view"
|
||||
add_faith(-20)
|
||||
|
||||
|
||||
@@ -28,11 +28,18 @@
|
||||
var/side = "neutral" //"blue" or "red", also used for colouring structures when construction is started by a deity
|
||||
var/health = 100
|
||||
var/maxhealth = 100
|
||||
var/deactivated = 0 //Structures being hidden can't be used. Mainly to prevent invisible defense pylons.
|
||||
var/autocolours = TRUE //do we colour to our side?
|
||||
|
||||
/obj/structure/divine/New()
|
||||
..()
|
||||
|
||||
/obj/structure/divine/proc/deactivate()
|
||||
deactivated = 1
|
||||
|
||||
/obj/structure/divine/proc/activate()
|
||||
deactivated = 0
|
||||
|
||||
|
||||
/obj/structure/divine/proc/update_icons()
|
||||
if(autocolours)
|
||||
@@ -280,6 +287,15 @@
|
||||
if(deity)
|
||||
deity.conduits += src
|
||||
|
||||
/obj/structure/divine/conduit/deactivate()
|
||||
..()
|
||||
if(deity)
|
||||
deity.conduits -= src
|
||||
|
||||
/obj/structure/divine/conduit/activate()
|
||||
..()
|
||||
if(deity)
|
||||
deity.conduits += src
|
||||
|
||||
/* //No good sprites, and not enough items to make it viable yet
|
||||
/obj/structure/divine/forge
|
||||
@@ -304,6 +320,8 @@
|
||||
|
||||
/obj/structure/divine/convertaltar/attack_hand(mob/living/user)
|
||||
..()
|
||||
if(deactivated)
|
||||
return
|
||||
var/mob/living/carbon/human/H = locate() in get_turf(src)
|
||||
if(!is_handofgod_cultist(user))
|
||||
user << "<span class='notice'>You try to use it, but unfortunately you don't know any rituals.</span>"
|
||||
@@ -332,6 +350,8 @@
|
||||
|
||||
/obj/structure/divine/sacrificealtar/attack_hand(mob/living/user)
|
||||
..()
|
||||
if(deactivated)
|
||||
return
|
||||
var/mob/living/L = locate() in get_turf(src)
|
||||
if(!is_handofgod_cultist(user))
|
||||
user << "<span class='notice'>You try to use it, but unfortunately you don't know any rituals.</span>"
|
||||
@@ -397,6 +417,8 @@
|
||||
cult_only = FALSE
|
||||
|
||||
/obj/structure/divine/healingfountain/attack_hand(mob/living/user)
|
||||
if(deactivated)
|
||||
return
|
||||
if(last_process + time_between_uses > world.time)
|
||||
user << "<span class='notice'>The fountain appears to be empty.</span>"
|
||||
return
|
||||
@@ -434,7 +456,7 @@
|
||||
/obj/structure/divine/powerpylon/New()
|
||||
..()
|
||||
if(deity && deity.god_nexus)
|
||||
deity.god_nexus.powerpylons |= src
|
||||
deity.god_nexus.powerpylons += src
|
||||
|
||||
|
||||
/obj/structure/divine/powerpylon/Destroy()
|
||||
@@ -443,6 +465,16 @@
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/structure/divine/powerpylon/deactivate()
|
||||
..()
|
||||
if(deity)
|
||||
deity.god_nexus.powerpylons -= src
|
||||
|
||||
/obj/structure/divine/powerpylon/activate()
|
||||
..()
|
||||
if(deity)
|
||||
deity.god_nexus.powerpylons += src
|
||||
|
||||
/obj/structure/divine/defensepylon
|
||||
name = "defense pylon"
|
||||
desc = "A pylon which is blessed to withstand many blows, and fire strong bolts at nonbelievers. A god can toggle it."
|
||||
@@ -478,9 +510,22 @@
|
||||
|
||||
/obj/structure/divine/defensepylon/attack_god(mob/camera/god/user)
|
||||
if(user.side == side)
|
||||
if(deactivated)
|
||||
user << "You need to reveal it first!"
|
||||
return
|
||||
pylon_gun.on = !pylon_gun.on
|
||||
icon_state = (pylon_gun.on) ? "defensepylon-[side]" : "defensepylon"
|
||||
|
||||
/obj/structure/divine/defensepylon/deactivate()
|
||||
..()
|
||||
pylon_gun.on = 0
|
||||
icon_state = (pylon_gun.on) ? "defensepylon-[side]" : "defensepylon"
|
||||
|
||||
/obj/structure/divine/defensepylon/activate()
|
||||
..()
|
||||
pylon_gun.on = 1
|
||||
icon_state = (pylon_gun.on) ? "defensepylon-[side]" : "defensepylon"
|
||||
|
||||
//This sits inside the defensepylon, to avoid copypasta
|
||||
/obj/machinery/porta_turret/defensepylon_internal_turret
|
||||
name = "defense pylon"
|
||||
|
||||
@@ -32,9 +32,7 @@
|
||||
return -1
|
||||
if(target.mind in ticker.mode.revolutionaries)
|
||||
ticker.mode.remove_revolutionary(target.mind)
|
||||
if(target.mind in ticker.mode.red_deity_followers|ticker.mode.blue_deity_followers)
|
||||
ticker.mode.remove_hog_follower(target.mind)
|
||||
if((target.mind in ticker.mode.cult) || (target.mind in ticker.mode.blue_deity_prophets|ticker.mode.red_deity_prophets))
|
||||
if((target.mind in ticker.mode.cult) || (target.mind in ticker.mode.blue_deity_prophets|ticker.mode.red_deity_prophets|ticker.mode.red_deity_followers|ticker.mode.blue_deity_followers))
|
||||
target << "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>"
|
||||
else
|
||||
target << "<span class='notice'>You feel a surge of loyalty towards Nanotrasen.</span>"
|
||||
|
||||
Reference in New Issue
Block a user